2016-08-03 5 views
0

私はこれで新しく、誰かがGoogleにリンクやキーワードを提供することができれば幸いです。
ポイント、ライン、ポリゴンなどのジオデータ値で数万のイベントが発生し、所与のポイント/ライン/ポリゴンと所定の近似で重なるすべての場所を見つける高速ヒットテストアルゴリズムが必要になります。同時に、これらのイベントをさまざまなプロパティでフィルタリングする必要があるため、クエリはジオデータとカスタムフィールドの両方をフィルタリングする必要があります。たとえば、特定の場所からNキロメートルにある都市、川、山の地域を知りたいとします。データはSQLサーバーに保存されている必要がありますが、別の方法で考えることができます。そのようなタスクのための共通のアプローチは何ですか?ジオロケーション検索の最適化

答えて

0

SQLの方法は非常に一般的で、使用するのは難しくありません。

あなたのデータが保存されたら、あなたは次のように機能して相対距離の関心点を抽出することができます。

https://stackoverflow.com/a/2695446/6660122

編集から撮影

SELECT tblcity.city, tblcity.latitude, tblcity.longitude, 
truncate((degrees(acos(sin(radians(tblcity.latitude)) 
* sin(radians(45.266708)) 
+ cos(radians(tblcity.latitude)) 
* cos(radians(45.266708)) 
* cos(radians(-73.616257 - tblcity.longitude)))) 
* 69.09*1.6),1) as distance 
FROM tblcity HAVING distance < 10 ORDER BY distance desc 

:あなたはすでにSQLを知っていて、余分なfunctionnalityそのSQLを必要と私は確かにこのように行くだろう!

+0

私はそれをSQLでプログラミングする方法を知っていますが、これは数万のレコードで高速に(ミリ秒)動作しますか? – LINQ2Vodka

+0

まあ、私は多くの要素に依存しますが、10000行は対処するのが難しいことではありません。私はそれが多くの一般的なプロジェクトのために十分に速いと信じています。 – technico

+0

さて、私はどんな性能テストでもGoogleにもう一度試してみるつもりです... – LINQ2Vodka