2016-11-01 3 views
0

ST_WITHIN은 결과를 제공하지 않으며 항상 0 레코드를 반환합니다.Documentdb - 빈 행을 반환하는 GeoSpatial

select * 
FROM Areas a 
WHERE ST_WITHIN({'type': 'Point', 'coordinates':[31.9, -4.8]}, a.location) 

하나 개의 레코드를 반환해야합니다 쿼리 위의 기대 : 여기

은 예입니다.

내 데이터베이스 항목은 기본적으로

{ 
    "id": "MyDesignatedLocation", 
    "location": { 
    "type": "Polygon", 
    "coordinates": [ 
     [ 
     [ 
      31.8, 
      -5 
     ], 
     [ 
      32, 
      -5 
     ], 
     [ 
      32, 
      -4.7 
     ], 
     [ 
      31.8, 
      -4.7 
     ], 
     [ 
      31.8, 
      -5 
     ] 
     ] 
    ] 
    } 
} 

답변

1

이 DocumentDB은 색인 경로 데이터 유형 조합에 대한 결과를 반환합니다. Spatial 인덱싱에 Polygons가 포함되어 있지 않은 것처럼 보이게됩니다 (투영에서 결과는 스캔을 통해 반환됩니다).

결과를 다시 얻으려면 다각형 데이터 유형에 공간 인덱스를 포함하도록 색인 정책을 변경하십시오 (아래 샘플 색인 정책 참조). 자세한 내용은 여기를 참조하십시오 : https://azure.microsoft.com/en-us/documentation/articles/documentdb-geospatial/

{  
    "automatic":true, 
    "indexingMode":"Consistent", 
    "includedPaths":[ 
     { 
     "path":"/*", 
     "indexes":[ 
      { 
       "kind":"Range", 
       "dataType":"String", 
       "precision":-1 
      }, 
      { 
       "kind":"Range", 
       "dataType":"Number", 
       "precision":-1 
      }, 
      { 
       "kind":"Spatial", 
       "dataType":"Point" 
      }, 
      { 
       "kind":"Spatial", 
       "dataType":"Polygon" 
      }     
     ] 
     } 
    ], 
    "excludedPaths":[ 
    ] 
} 
+0

어떤 이유로 색인 정책을 저장하지 않았습니다. 위의 예제는 잘 작동합니다. 좌표 아래에서 노력하고 있지만 빈 레코드가 반환됩니다. http://www.jsoneditoronline.org/?id=fee820b236ba62089566603fcfe20c7a 여기에 쿼리가 있습니다. SELECT * FROM c 여기서 ST_WITHIN ({ 'type': 'Point', 'coordinates': [81.136727, 16.188537], c.boundary) – Siva

+0

@ 시바 - 덧글에 추가 문제/쿼리를 게시하지 마십시오. 대신 질문을 수정하십시오. 그렇지 않으면 질문이 답변 내에 숨겨집니다 (따라서 답변이 눈에 잘 띄지 않으며 답변이 제거되면 사라집니다). 또한 주석 영역을 토론으로 전환하는 위험이 있습니다 (이는 지원되지 않는 통신 모델입니다). –

+0

좌표가 반 시계 방향이어야한다고 생각했습니다. – Siva