質問

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

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

質問をわかりやすくするために、次の例を挙げます。

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

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

役に立ちましたか?

解決

このポストする 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

他のヒント

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

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. クエリを適用する これ, 、変化する $lon そして $lat データフォームポイント1へ。

Accessでの作り方が分かりません。しかし、この道はゆっくりであると同時に厳しいものです。

あなたが半径に何をすることによって意味ですか?あなたは、距離に渡したい5マイルを言うと、行xの5マイル以内のすべての行を見つけるのですか?

// WWW: HTTPそうならば、

これをチェックしてください。 microsoft.com/sqlserver/2008/en/us/spatial-data.aspxする

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top