DocumentDB-지리 공간 데이터

Microsoft 추가 geospatial support, 문서에 위치 데이터를 저장하고 점과 다각형 사이의 거리와 교차점에 대한 공간 계산을 수행 할 수 있습니다.

  • 공간 데이터는 공간에서 물체의 위치와 모양을 설명합니다.

  • 일반적으로 사람의 위치, 관심 장소 또는 도시 또는 호수의 경계를 나타내는 데 사용할 수 있습니다.

  • 일반적인 사용 사례에는 종종 근접 쿼리가 포함됩니다. 예 : "현재 위치 근처의 모든 대학 찾기".

Point정확한 위치 (예 : 특정 대학의 주소)를 나타내는 공간의 단일 위치를 나타냅니다. 점은 좌표 쌍 (경도 및 위도)을 사용하여 DocumentDB에 표시됩니다. 다음은 JSON 포인트의 예입니다.

{ 
   "type":"Point", 
   "coordinates":[ 28.3, -10.7 ] 
}

대학의 위치가 포함 된 간단한 예를 살펴 보겠습니다.

{ 
   "id":"case-university", 
   "name":"CASE: Center For Advanced Studies In Engineering", 
   "city":"Islamabad", 
	
   "location": { 
      "type":"Point", 
      "coordinates":[ 33.7194136, -73.0964862 ] 
   } 
}

위치를 기반으로 대학 이름을 검색하려면 다음 쿼리를 사용할 수 있습니다.

SELECT c.name FROM c 

WHERE c.id = "case-university" AND ST_ISVALID({ 
      "type":"Point", 
      "coordinates":[ 33.7194136, -73.0964862 ] })

위의 쿼리가 실행되면 다음과 같은 출력이 표시됩니다.

[ 
   { 
      "name": "CASE: Center For Advanced Studies In Engineering" 
   } 
]

.NET에서 지리 공간 데이터로 문서 작성

지리 공간 데이터로 문서를 만들 수 있습니다. 대학 문서가 생성되는 간단한 예를 살펴 보겠습니다.

private async static Task CreateDocuments(DocumentClient client) {
   Console.WriteLine(); 
   Console.WriteLine("**** Create Documents ****"); 
   Console.WriteLine();
	
   var uniDocument = new UniversityProfile {
      Id = "nust", 
      Name = "National University of Sciences and Technology", 
      City = "Islamabad", 
      Loc = new Point(33.6455715, 72.9903447) 
   };
	
   Document document = await CreateDocument(client, uniDocument); 
   Console.WriteLine("Created document {0} from typed object", document.Id); 
   Console.WriteLine(); 
}

다음은 UniversityProfile 클래스의 구현입니다.

public class UniversityProfile { 
   [JsonProperty(PropertyName = "id")] 
   public string Id { get; set; }  
	
   [JsonProperty("name")] 
   public string Name { get; set; }
	
   [JsonProperty("city")] 
   public string City { get; set; }  
	
   [JsonProperty("location")] 
   public Point Loc { get; set; } 
}

위의 코드가 컴파일되고 실행되면 다음과 같은 출력이 표시됩니다.

**** Create Documents ****  
Created new document: nust 
{ 
   "id": "nust", 
   "name": "National University of Sciences and Technology", 
   "city": "Islamabad", 
   "location": { 
      "type": "Point", 
      "coordinates": [ 
         33.6455715, 
         72.9903447 
      ] 
   }, 
   "_rid": "Ic8LAMEUVgANAAAAAAAAAA==", 
   "_ts": 1450200910, 
   "_self": "dbs/Ic8LAA==/colls/Ic8LAMEUVgA=/docs/Ic8LAMEUVgANAAAAAAAAAA==/", 
   "_etag": "\"00004100-0000-0000-0000-56704f4e0000\"", 
   "_attachments": "attachments/" 
} 
Created document nust from typed object