20

座標を含む行のテーブルがあるとしましょう。

別の座標の半径内にある座標の行のみをプルする最良の方法は何でしょうか?

質問を簡単にするために、次の例を示します。

Table like:
Columns: Latitude, Longitude.
Row1:    23.44444  24.55555
Row2:    32.44444  28.22222
Row3:    35.11111  32.12345

SQL ステートメントで、たとえば Row3 の半径にある座標の行を取得するにはどうすればよいですか?

4

3 に答える 3

32

この投稿では、SQL Server でこれを行う方法を示します。

そして、MySQLでそれを行う方法は次のとおりです。

SELECT ((ACOS(SIN($lat * PI() / 180) * SIN(lat * PI() / 180) + 
         COS($lat * PI() / 180) * COS(lat * PI() / 180) * COS(($lon - lon) * 
         PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS distance 
FROM members 
HAVING distance<='10' ORDER BY distance ASC
于 2009-12-13T11:24:54.270 に答える
1

距離の式は次のようになります。

D = 60* 1.1515 * acos (sin(pi*y/180) * sin(pi*Y/180) +
                       cos(pi*y/180) * cos(pi*Y/180) * cos((z-Z) *pi / 180) 
                 )  * 180 / pi)

ここで、Y と Z はテストする各行のポイントであり、y と z はサンプル行のポイントです。

あなたはそのようなことをすることができます:

  1. テーブルの各行を選択し、そのlonとを取得しlatます。
  2. thisからクエリを適用し$lon、 と$latデータ フォーム ポイント 1に変更します。

これをアクセスで作成する方法がわかりません。しかし、この道はゆっくりと厳しいものです。

于 2009-12-13T11:55:24.510 に答える
0

半径で とはどういう意味ですか? ある距離、たとえば 5 マイルを通過し、行 x から 5 マイル以内にあるすべての行を検索しますか?

もしそうならこれをチェックしてください http://www.microsoft.com/sqlserver/2008/en/us/spatial-data.aspx

于 2009-12-13T11:27:59.207 に答える