2012-08-23 3 views
3

포인트 배열을 포인트 (위도, 경도)로 나열했습니다. 이 배열에 대한 색인을 만들었으므로 이제 한 점이 다각형 안에 있는지 알고 싶습니다.Mongodb : 점이 다각형에 포함되어 있는지 어떻게 확인할 수 있습니까?

MongoDB에서 가능합니까? 이미 이러한 명령하지만 운 시도 :

> polygonA = [ [ 48.780809,2.307129],[ 48.781809,2.300129],[ 48.770809,2.317129]] 
> db.contours.find({ "rings.ring" : { "$within" : { "$polygon" : polygonA } } }) 

> db.runCommand({ geoNear : "contours" , within : [2.307129,48.780809,], num : 10 }); 

내 데이터 구조는 다음과 같습니다

> db.contours.findOne({},{'rings':0}) 
{ 
     "_id" : ObjectId("50364617d591ac166000c196"), 
     "foundfieldname" : "Name", 
     "geometrytype" : "geometryPolygon", 
     "attributes" : { 
       "Shape" : "Polygon", 
       "Name" : "France", 
       "Type" : "Country", 
       "Country" : "France", 
       "Area" : "1162358716567.45" 
     }, 
     "country" : "France", 
"rings":{ 
     "ring":[[12.32,43.54],...], 
      ... 
} 

감사

+0

이 C# 프로젝트입니까? Windows Forms의 System.Drawing 라이브러리에 액세스 할 수 있습니까? –

+0

예 C# 프로젝트를 사용하여 mongo에 연결하고 있습니다. 나는 그 도서관에 접근 할 수있다. 이 작업을 수행하기 위해이 라이브러리를 사용할 양식이 있습니까? –

답변

2

이 rings.ring하는 것이 필요 포인트가 있고 지리 정보가 정의되어있는 경우 여기에 해당되는 것입니까?

귀하의 질문은 실제로 이것이 작동하지 않을 표준 인덱스 (다중 키 인덱스)가있는 여러 포인트의 목록이라는 것을 의미합니다. 다각형 내부의 지점으로 "LOC"을 검색 할 때,이 볼 수 있듯이

http://www.mongodb.org/display/DOCS/Geospatial+Indexing/#GeospatialIndexing-BoundsQueries

은 "LOC"필드는이 같은 일이 (다른 유효한 예는 위의 링크를 참조) :

이 같은 인덱스 뭔가
{ loc : [ 50 , 30 ] } 

:

db.places.ensureIndex ({LOC : "2D는"}

입니다

, 필드는 대표 단일 지점 및 그것에 정의 된 지리 색인이 있습니다. 그런 식으로 필드를 사용한다면 테스트가 효과가 있습니까?

관련 문제