私は地理的にローカライズされたオブジェクトをいくつか持っています(私はオブジェクトごとに緯度+経度を持っています)。 私のアプリケーションは、モバイルデバイスのGPS位置から3キロメートル離れたオブジェクトを表示する必要があります。 私は数千ものオブジェクトを持っていて、広い地域(例えば、いくつかの米国の州、いくつかの小さな国など)にローカライズされています。オブジェクトのリストには、NYCとマイアミに別の場所があります。非常に近い(数メートル)物体。クイック検索のために地理データを並べ替える方法
現在、私のアプリケーションは反復検索を実行します。各オブジェクトについて、私はGPS位置との距離を計算し、距離が< = 3KMならば、私はそれを無視してオブジェクトを保持します。このアルゴリズムはあまり効率的ではありません。私は、より良いパフォーマンスをもたらすアルゴリズムを探しています。
地理座標を使用してオブジェクトを並べ替える方法があり、次にGPS位置の周囲にあるオブジェクトをすばやく見つける方法があるとします。
私の現在のアイデアは、「極端な点」、北/南/東/西(GPS位置から3km)の矩形を計算して検索ゾーンを制限することです。次に、このボックス内のオブジェクトの距離だけを計算します。任意の提案は;-) おかげで、
SEBを理解されるであろう
... は、私はより良い何かを行うことができると思いますが、私はアイデアを持っていません。
私はlat/lonで直接quadtreeはほとんどすべてのシナリオで動作すると思います。経度が0〜360の場合、データの「継ぎ目」がゼロではなく日付行に表示されるように変更します(したがって、すべての問題は北極、南極、太平洋のみになります) 。 –
本当にありがとう、私はOctreeとkdツリーを勉強します。私の小さな脳にはあまりにも複雑ではない場合、おそらくそれで何かをすることができます! – sebastien