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; } }
Когда приведенный выше код скомпилирован и выполнен, вы получите следующий вывод.