ある座標が別の座標の半径内にあるかどうかを判断する
-
19-09-2019 - |
質問
座標を含む行のテーブルがあるとします。
別の座標の半径内にある座標の行のみを取得する最良の方法は何でしょうか?
質問をわかりやすくするために、次の例を挙げます。
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 - はサンプル行の点です。
したがって、そのようなものを作ることができます:
- テーブル内の各行を選択し、その行を取得します
lon
そしてlat
. - クエリを適用する これ, 、変化する
$lon
そして$lat
データフォームポイント1へ。
Accessでの作り方が分かりません。しかし、この道はゆっくりであると同時に厳しいものです。
あなたが半径に何をすることによって意味ですか?あなたは、距離に渡したい5マイルを言うと、行xの5マイル以内のすべての行を見つけるのですか?
// WWW: HTTPそうならば、これをチェックしてください。 microsoft.com/sqlserver/2008/en/us/spatial-data.aspxする
所属していません StackOverflow