Documentdb-sql-spatial-functions
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ドキュメント*です。
{
"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はブール値のみを返すことを示しています。