Учебники

DocumentDB – геопространственные данные

Microsoft добавила геопространственную поддержку , которая позволяет хранить данные о местоположении в ваших документах и ​​выполнять пространственные вычисления для расстояния и пересечений между точками и полигонами.

  • Пространственные данные описывают положение и форму объектов в пространстве.

  • Как правило, его можно использовать для представления местоположения человека, интересующей его достопримечательности, границы города или озера.

  • Обычные случаи использования часто включают запросы о близости. Например, «найти все университеты рядом с моим текущим местоположением».

Пространственные данные описывают положение и форму объектов в пространстве.

Как правило, его можно использовать для представления местоположения человека, интересующей его достопримечательности, границы города или озера.

Обычные случаи использования часто включают запросы о близости. Например, «найти все университеты рядом с моим текущим местоположением».

Точка обозначает одну позицию в пространстве, которая представляет точное местоположение, например, адрес улицы конкретного университета. Точка представлена ​​в 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; } 
} 

Когда приведенный выше код скомпилирован и выполнен, вы получите следующий вывод.