2011-10-28 2 views
1

morphia 프레임 워크로 지리적 위치 지점을 쿼리하고 싶습니다. "Near"방법으로 위도, 경도 및 반경 (100km)을 사용하여 내 주변의 다른 위치를 쿼리하고 10 개의 결과를 제한합니다. 다음과 같이하면됩니다 :자바를 사용하여 morphia mongodb로 지리적 공간 찾기

morphia.ds.find(Location.class).field("Location").near(latitude, longitude, 100).limit(10).asList(); 

오류가 발생하지 않지만 내 주변의 반경 (100km) 범위 밖에있는 위치 점이 표시됩니다. 따라서 내 반지름은 결과를 쿼리 할 때 중요하지 않습니다.

쿼리 문에 어떤 문제가 있습니까? 사전

답변

4

남북 위도 차이의 arcdegree의 길이에

덕분에 당신은, 약 60 마일, 111km 또는 위도 69 법령 마일이다; 자세한 내용은 wikipedia 또는 몽고 지리 정보 페이지 Earth is Round but Maps are Flat에서 확인할 수 있습니다.

킬로미터를 사용할 때 거리를 111.12 (1도는 약 111.12 킬로미터)로, 마일을 사용하면 거리를 69로 바꿉니다.

그래서

morphia.ds.find(Location.class).field("Location").near(latitude, longitude, 100/111.12).limit(10).asList(); 

에 조회를 변경하고 확인하여 MongoDB는 [긴, 위도]의 좌표를 허용합니다.

+0

잘 답변 해 주셔서 감사합니다. 이미 링크를 읽었으며 mongo db의 방법으로 반경 거리를 더 잘 이해합니다. – Mojiiz

+0

@ 모지즈, 도움이 돼서 기뻐 .. :) – RameshVel

3

웹 사이트 (MongoDB: Calculate Distances in a 2d Index Using Spherical Geometry) 우리가 보는 거리의 라디안을 얻기에 따르면, 우리는 3.959 마일 6.371 km 이내에 토지를 사용해야합니다.

는 문서 (MongoDB:$nearSphere) 나는 전화가 있어야한다고 생각합니다보기 : 내 경우에는 몇 가지 검사 후

morphia.ds.find(Location.class).field("Location").near(latitude, longitude, 100/6371, true).limit(10).asList(); 

를이 내가 일하는 방법이다.

0
public static void test() { 
     DB datastore = ConnectionFactory.getInstance().getDatabaseMongo(); 
     double[] near = { 20.593684, 78.96288 }; 
     BasicDBObject basicDBObject = new BasicDBObject(); 
     basicDBObject.put("type", "Point"); 
     basicDBObject.put("coordinates", near); 
     BasicDBObject geoNearParams = new BasicDBObject(); 
     geoNearParams.append("geoNear", <Collection name>); 
     geoNearParams.append("near", basicDBObject); 
     geoNearParams.append("spherical", true); 
     geoNearParams.append("maxDistance", 100); 
     geoNearParams.append("limit", 10); 
     CommandResult commandResult = datastore.command(geoNearParams); 
     commandResult.getErrorMessage(); 
     Object data = commandResult.get("results"); 
     System.out.println(data.toString()); 
    } 
관련 문제