2012-01-10 12 views
2

私はきれいに動作する地理空間クエリを設定しましたが、それぞれの結果の距離を求めています。Nearクエリからの距離 "dis"の結果の取得

var query = Query.Near("Location", longitude, latitude); 
var places = mongoDb.GetCollection<Place>("places").Find(near); 

は、どのように私は、「場所」の各要素からの距離を取得します:

クエリを考えると?

答えて

3

mongoから距離を得ることができるかどうかはわかりませんが、私が過去に行ったことは、Haversine式を使ってデータを取得した後に距離を取得することだけでした。

あなたは、私が here

EDIT使用される実装を見つけることができます。)あなたはQuery.Near(バックモンゴからの距離を取得することはできませんが、申し訳ありませんが。コレクションにあるGeoNear関数を使用する必要があります。

mongoDb.GetCollection<Place>("places").GeoNear(Query.Null, latitude, longitude, maxDistance); 

これは距離の財産とあなたの場所のオブジェクトが含まれますドキュメントプロパティが含まれていますIEnumurable<Hit>である性質をヒットしていますGeoNearResult<Place>を返します。

+0

あなたは命の恩人であり、魅力のように機能します。現在、私はどの測定値がラジアンであるかを調べる必要がありますが? –

+0

それはラジアンである可能性があります。MongoDBのドキュメントでは、ラジアンあたり約69マイルと言います。しかし、それは赤道でしかありません。詳細はこちらhttp://www.mongodb.org/display/DOCS/Geospatial+Indexing#GeospatialIndexing-EarthisRoundbutMapsareFlat –

関連する問題