2011-01-07 3 views
1

私はこのウェブサイトにいくつかの場所の緯度と経度を格納しており、特定の場所の最も近い場所(半径10km)を表示したいと思います。緯度と経度で最寄りの場所を見つける

これらの場所でMySQLテーブルを検索するにはどうすればよいですか?

+0

詳細なブログ:http://sforsuresh.in/finding-nearest-location-using-latitude-longitude/ –

答えて

4

私はこの種の質問を数年前に Google Answersに、さらに最近では Uclueに回答しました。

ウェスタンの経度を負の値として表現するのが技術的な慣例であることに注意してください。ただし、これは時には観察されません。メリディアン(経度がラップアラウンドしている)とは逆に子午線を横切って計算しない限り、大きな違いはありませんが、データベースと他の地理的リポジトリとの一貫性について知っておくべきことです。

を追加しました:上記連結Uclue質問に概説したように、目的は、与えられた位置の所定距離内にあるすべてのポイントがに含まれているように、値の二対、MINLATITUDE/MAXLATITUDE及びMINLONGITUDE/MAXLONGITUDEを計算することですSQLクエリの結果:

SELECT * FROM Locations 
    WHERE (latitude between MINLATITUDE and MAXLATITUDE) 
    and (longitude between MINLONGITUDE and MAXLONGITUDE) 

は、MySQL 5.0以降では、我々は便利なストアドプロシージャにSELECTと一緒MIN/MAXのペアの計算をバンドルすることができます。そのようなクエリの結果をカーソルで実行し、そのような精度が必要な場合は正確な「大円」の距離を確認することもできます。しかし、PythonやC++のような呼び出し元のフレームワークから上記のクエリを動的に構築する簡略化されたアプローチが、(データベースサーバによって行われる作業を最小限に抑えるために)ほとんどのアプリケーションにとって意味をなさないと思います。

私はこれらの可能性について詳しく説明してください。

関連する問題