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