1



私は最近、ロケーションベースのサービスに関する小さなプロジェクトに取り組みました。私の意図は、要求している乗客 (GPS 対応の Android フォン) の特定の半径内で最も近いタクシー (GPS が装備されている) を見つけることでした。MongoDB の地理空間インデックスを使用したかったのですが、地理空間インデックスは緯度経度で機能し、距離ではなく 2 点間の変位を計算することがわかりました。私の場合、検索は市内に限定されており、道路上の距離、推定所要時間などを教えてくれるので、GoogleMaps Directions Serviceに行かなければなりませんでした.

これは、変位が十分に大きく、距離と変位が本質的に同じになる場合にのみ、地理空間インデックスが意味をなすということですか?

4

1 に答える 1

2

地理空間インデックスには、多次元空間上の位置に基づいて高速にデータを取得するという目標があります。MongoDBデータベースにタクシーの位置データがある場合、地理空間インデックスを使用して、最も近いタクシーの可能性が高いタクシーの削減されたセットをすばやく選択できますが、それでも道路上の距離を計算する必要があります(そして最終的には運転時間) を道路網のアルゴリズムを使用して計算します。

たとえば、最も近い (直線での) タクシーが (道路を通って測定して) 20km 離れたところにある場合、半径 20km の外側にあるタクシーは最初のタクシーより (道路上で) 確実に遠くにあることがわかっています。見つかったので、それらには興味がありません。次に、MongoDB 空間インデックスを使用して、半径 20 km 内のすべてのタクシーを取得し、その中から距離が最も短いタクシーを見つけることができます。

于 2012-09-05T19:47:53.053 に答える