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