2012-04-19 9 views
2

私はJavaとMongoDBの位置計算に取り組んでいます。私はメソッドに緯度と経度を渡し、指定された入力から最も近い場所を見つけます。私は緯度と経度のすべてのランドマークがあるマスターテーブルからロケーション名を取得できます。MongoDBを使ってJavaで距離を計算する

私の要件は、MongoDBを使って距離を取得したいということです - XYZから4Kmのように。 MongoDBには地理空間クエリがあり、私はそれに取り組んでいます。 db.runCommand({geoNear: "data"、近傍:[-73.9000,40.7000]、spherical:true、maxDistance:2500/6378137、distanceMultiplier:6378137})を使用してコマンドプロンプトで実行することで、入力を得ることができます。

私はJavaで同等のコードを探していますので、緯度と経度のみを渡して距離に最も近い場所を取得できます。

ありがとうございます。

答えて

1

Java API availableがあります。あなたはそれに触れることができます。 driverには、 "command"メソッドがあり、これはあなたが望むことを実行します。

Javaドライバに関する公開されたチュートリアル、およびシェルコマンドをJavaに変換する方法を必ずお読みください。

3

このコマンドは、JavaドライバのDBオブジェクトの "command"メソッドで実行できます。 APIドキュメントは、ここで見つけることができる:

BasicDBObject myCmd = new BasicDBObject(); 
myCmd.append("geoNear", "data"); 
double[] loc = {-73.9000, 40.7000}; 
myCmd.append("near", loc); 
myCmd.append("spherical", true); 
myCmd.append("maxDistance", (double)2500/6378137); 
myCmd.append("distanceMultiplier", 6378137); 
System.out.println(myCmd); 
CommandResult myResult = db.command(myCmd); 
System.out.println(myResult.toString()); 

あなたは何を見ることができるように私は、いくつかのSystem.out.printlnステートメントを追加:ここで http://api.mongodb.org/java/current/com/mongodb/DB.html#command%28com.mongodb.DBObject%29

コマンドは、Javaドライバを使用して行うことができる方法です。コマンドドキュメントはそのように見え、返される結果の文字列表現です。 1.

myCmd.append("num", 1); 

に結果を制限するために、コマンド文書に1これはgeoNearのドキュメントに記載されています:
あなたはNUMを追加することができます http://www.mongodb.org/display/DOCS/Geospatial+Indexing#GeospatialIndexing-geoNearCommand

うまくいけば、これはあなたが始められるでしょう。がんばろう!

+0

ありがとうございました... – swati

関連する問題