2
私は、中心(緯度、経度)と半径で識別される円形領域のリストを持っています。そして、私は緯度と経度で特定される地点のリストを持っています。それぞれのポイントについて、私はそれが来る地域を見つけたいと思っています。両方のリストが何百万にも及ぶことに注意してください。ポイントと地域を照合する効率的な方法
これを行う最も効率的な方法は何ですか?
よろしくお願いいたします。
私は、中心(緯度、経度)と半径で識別される円形領域のリストを持っています。そして、私は緯度と経度で特定される地点のリストを持っています。それぞれのポイントについて、私はそれが来る地域を見つけたいと思っています。両方のリストが何百万にも及ぶことに注意してください。ポイントと地域を照合する効率的な方法
これを行う最も効率的な方法は何ですか?
よろしくお願いいたします。
MongoDBは、境界クエリーをサポートしているため、特定のシェイプ内のポイントを探すことができます。サークル(中心+半径)はサポートされているタイプの1つです。だから、あなたはこのような何かを行うことができ、あなたは場所フィールド(db.places.ensureIndex({ loc : "2d" })
または類似の)上で定義された地理空間のインデックスを持っていると仮定:ここに発見される
> center = [50, 50]
> radius = 10
> db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
さらに詳しい情報:
http://www.mongodb.org/display/DOCS/Geospatial+Indexing#GeospatialIndexing-BoundsQueries
を感謝アダム。あなたが気にしないなら、フォローアップの質問 - MongoDBは、100万の円形領域があり、各場所に新しい 'within'クエリがあると考えるとうまく機能しますか?地理空間インデックスを除いて、最適化する方法はありますか? – user1240043
実際にそれを実行せずに言うのは難しいです。インデックス化されたgeohashingはうまく機能しますが、私はそれを言うことができます。 $ within演算子は、パフォーマンスに関してあまりよく知られていません。 RAMにデータセットを保存しておけば、CPUバウンドにならない場合、なぜ高速でないのか分かりません。ただ一つの方法:テスト、テスト、テスト.... :) –
インデックス/クエリの設定に助けが必要な場合や、結果を投稿してフィードバックを得たい場合は、mongodb-ユーザーのGoogleグループ - 私たちはかなり反応があります:) –