2012-04-19 4 views
2

자바와 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 설명서는 여기에서 찾을 수 있습니다 : 여기 http://api.mongodb.org/java/current/com/mongodb/DB.html#command%28com.mongodb.DBObject%29

명령은 Java 드라이버를 사용하여 수행 될 수있다 방법 : 당신이 볼 수 있도록,

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 문을 추가를 무엇 명령 문서는 다음과 유사하게 표시되며 결과의 문자열 표현이 반환됩니다.
당신은 납입을 추가 할 수 있습니다 : 1 명령 문서에 이것은 geoNear 문서에 기록됩니다 1.

myCmd.append("num", 1); 

로 결과를 제한하는 : http://www.mongodb.org/display/DOCS/Geospatial+Indexing#GeospatialIndexing-geoNearCommand

는 희망이 당신이 시작하는 것입니다. 행운을 빕니다!

+0

Marc 고맙습니다 ... – swati