DocumentDB - Data Geospasial

Microsoft menambahkan geospatial support, yang memungkinkan Anda menyimpan data lokasi dalam dokumen Anda dan melakukan penghitungan spasial untuk jarak dan persimpangan antara titik dan poligon.

  • Data spasial menggambarkan posisi dan bentuk benda dalam ruang.

  • Biasanya, ini dapat digunakan untuk mewakili lokasi seseorang, tempat yang diminati, atau batas kota, atau danau.

  • Kasus penggunaan umum sering kali melibatkan kueri kedekatan. Misalnya, "temukan semua universitas di dekat lokasi saya saat ini".

SEBUAH Pointmenunjukkan posisi tunggal dalam ruang yang mewakili lokasi yang tepat, misalnya alamat jalan universitas tertentu. Sebuah titik direpresentasikan dalam DocumentDB menggunakan pasangan koordinatnya (bujur dan lintang). Berikut adalah contoh titik JSON.

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

Mari kita lihat contoh sederhana yang memuat lokasi sebuah universitas.

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

Untuk mendapatkan kembali nama universitas berdasarkan lokasi, Anda dapat menggunakan query berikut.

SELECT c.name FROM c 

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

Ketika query di atas dijalankan, Anda akan menerima output berikut.

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

Buat Dokumen dengan Data Geospasial di .NET

Anda dapat membuat dokumen dengan data geospasial, mari kita lihat contoh sederhana di mana dokumen universitas dibuat.

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(); 
}

Berikut adalah implementasi untuk kelas 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; } 
}

Ketika kode di atas dikompilasi dan dijalankan, Anda akan menerima output berikut.

**** 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