Documentdb-sql-spatial-functions

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

DocumentDB SQL-空間関数

DocumentDBは、地理空間クエリのためのOpen Geospatial Consortium(OGC)組み込み関数もサポートしています。 以下は、サポートされている組み込みの空間関数のリストです。

S.No. Function & Description
1

ST_DISTANCE (point_expr, point_expr)

2つのGeoJSONポイント式間の距離を返します。

2

ST_WITHIN (point_expr, polygon_expr)

最初の引数で指定されたGeoJSONポイントが2番目の引数のGeoJSONポリゴン内にあるかどうかを示すブール式を返します。

3

ST_ISVALID

指定されたGeoJSONポイントまたはポリゴン式が有効かどうかを示すブール値を返します。

4

ST_ISVALIDDETAILED

指定されたGeoJSONポイントまたはポリゴン式が有効な場合はブール値を含むJSON値を返し、無効な場合は文字列値として理由を追加で返します。

この例では、座標の形式で場所を含む大学の次の2つのドキュメントを使用します。

以下は* Case Universityドキュメント*です。

ケース大学文書

{
   "id": "case-university",
   "name": "CASE: Center For Advanced Studies In Engineering",
   "city": "Islamabad",

   "location": {
      "type": "Point",
      "coordinates": [
         33.7194136,
         -73.0964862
      ]
   }
}

以下は* Nust Universityドキュメント*です。

Nust University Document

{
   "id": "nust",
   "name": "National University of Sciences and Technology",
   "city": "Islamabad",

   "location": {
      "type": "Point",
      "coordinates": [
         33.6455715,
         72.9903447
      ]
   }
}

ST_DISTANCEの別の例を見てみましょう。

セントディスタンスの例

以下は、指定した場所から30 km以内にある大学文書のIDと名前を返すクエリです。

SELECT u.id, u.name
FROM Universities u
WHERE ST_DISTANCE(u.location, {'type': 'Point', 'coordinates':[33.7, -73.0]}) < 30000

上記のクエリを実行すると、次の出力が生成されます。

[
   {
      "id": "case-university",
      "name": "CASE: Center For Advanced Studies In Engineering"
   }
]

別の例を見てみましょう。

セントディスタンスの例

以下は、ST_ISVALIDおよびST_ISVALIDDETAILEDを含むクエリです。

SELECT
   ST_ISVALID({ "type": "Point", "coordinates": [32.9, -132.8] }) AS Point1,

   ST_ISVALIDDETAILED({ "type": "Point", "coordinates": [31.9, -132.8] }) AS Point2

上記のクエリを実行すると、次の出力が生成されます。

[
   {
      "Point1": false,
      "Point2": {
         "valid": false,
         "reason": "Latitude values must be between -90 and 90 degrees."
      }
   }
]

上記の出力は、ST_ISVALIDDETAILEDもこのポイントが無効である理由を返しますが、ST_ISVALIDはブール値のみを返すことを示しています。