Documentdb-geospatial-data

提供:Dev Guides
移動先:案内検索

DocumentDB-地理空間データ

Microsoftは*地理空間サポート*を追加しました。これにより、ドキュメントに位置データを保存し、ポイントとポリゴン間の距離と交差点の空間計算を実行できます。

  • 空間データは、空間内のオブジェクトの位置と形状を表します。

  • 通常は、人の位置、関心のある場所、都市の境界、または湖を表すために使用できます。

  • 一般的なユースケースには、近接クエリが関係することがよくあります。 たとえば、「現在の場所の近くにあるすべての大学を検索する」。

    *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