ユーザーの緯度と経度があり、近くにあるレストランを検索したい場合、リレーショナル DB にどのようにクエリを実行しますか? 「半径 25 マイル以内のレストラン」などの場合は?
経度と経度がユーザーの場所 +/- 25 マイル (私が推測する度数に変換) よりも大きい/小さい正方形のレストランをクエリし、使用している言語で「コーナー」を除外しますか? または、SQLで直接行うことができますか?
ユーザーの緯度と経度があり、近くにあるレストランを検索したい場合、リレーショナル DB にどのようにクエリを実行しますか? 「半径 25 マイル以内のレストラン」などの場合は?
経度と経度がユーザーの場所 +/- 25 マイル (私が推測する度数に変換) よりも大きい/小さい正方形のレストランをクエリし、使用している言語で「コーナー」を除外しますか? または、SQLで直接行うことができますか?
たとえば、オラクルで利用可能な空間機能を見てみましょう。ウィキペディアのエントリhttp://en.wikipedia.org/wiki/Spatial_queryと、noaa https://www.ngdc.noaa.govの例を含むリンクがあります。 /wiki/index.php?title=Sample_Oracle_Spatial_Queries
ここで本当に良いガイドを見つけました: http://code.google.com/apis/maps/articles/phpsqlsearch.html
他の多くの説明よりもはるかに簡単です...
緯度/経度を赤道からかなり離れた直線グリッドとして扱っている場合(たとえば、ニューヨーク、ロンドン、モスクワなど)、「円」はすでにかなり変形しています。「正方形」から角をトリミングしても、それほど改善されません。
Haversine 式の SQL 実装を使用する
リレーショナルデータベースについて具体的に言及されていることは知っていますが、少なくとも空間クエリがネイティブに実装されているシステムを調べてみることをお勧めします。
個人的には、MongoDBは非常にエレガントであることがわかりました:http ://www.mongodb.org/display/DOCS/Geospatial+Indexing