DocumentDB - Jeo-uzamsal Veriler
Microsoft eklendi geospatial support, konum verilerini belgelerinizde saklamanıza ve noktalar ile çokgenler arasındaki mesafe ve kesişimler için uzamsal hesaplamalar yapmanızı sağlar.
Uzamsal veriler, uzaydaki nesnelerin konumunu ve şeklini tanımlar.
Tipik olarak, bir kişinin konumunu, ilgilenilen bir yeri veya bir şehrin veya gölün sınırını temsil etmek için kullanılabilir.
Yaygın kullanım örnekleri genellikle yakınlık sorgularını içerir. Örneğin, "bulunduğum yere yakın tüm üniversiteleri bul".
Bir Pointbelirli bir üniversitenin sokak adresi gibi tam konumu temsil eden uzaydaki tek bir konumu belirtir. DocumentDB'de bir nokta koordinat çifti (boylam ve enlem) kullanılarak temsil edilir. Aşağıda bir JSON noktası örneği verilmiştir.
{
"type":"Point",
"coordinates":[ 28.3, -10.7 ]
}
Bir üniversitenin yerini içeren basit bir örneğe bakalım.
{
"id":"case-university",
"name":"CASE: Center For Advanced Studies In Engineering",
"city":"Islamabad",
"location": {
"type":"Point",
"coordinates":[ 33.7194136, -73.0964862 ]
}
}
Konuma göre üniversite adını almak için aşağıdaki sorguyu kullanabilirsiniz.
SELECT c.name FROM c
WHERE c.id = "case-university" AND ST_ISVALID({
"type":"Point",
"coordinates":[ 33.7194136, -73.0964862 ] })
Yukarıdaki sorgu yürütüldüğünde aşağıdaki çıktıyı alacaksınız.
[
{
"name": "CASE: Center For Advanced Studies In Engineering"
}
]
.NET'te Jeo-uzamsal Verilerle Belge Oluşturun
Jeo-uzamsal verilerle bir belge oluşturabilirsiniz, bir üniversite belgesinin oluşturulduğu basit bir örneğe bakalım.
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();
}
Aşağıda UniversityProfile sınıfı için uygulama yer almaktadır.
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; }
}
Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki çıktıyı alacaksınız.
**** 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