クエリ言語には、マップ上の幾何学的図形または実際の場所/多角形を表す地理空間機能が組み込まれています。 地理空間データには、多くの場合、近接クエリが含まれます。 たとえば、複数の地理空間データ オブジェクトに対する近接クエリを使用して、「現在の場所の近くにあるすべての小売店舗を検索する」という質問に回答します。
活用事例
一般的な地理空間のユース ケースは次のとおりですが、これらに限定されません。
位置情報分析。特定の場所ベースのマーケティング イニシアチブを推進します。
位置情報ベースのパーソナル化。小売やヘルスケアなどの業界向けに、ユーザー エクスペリエンスを向上させます。
物流の強化。最適化が重要な輸送などの業界向け。
保険や金融などの業界で他のメタデータを補完するためのリスク分析。
近接性に基づくアラートと通知の状況認識*。
空間データの概要
空間データは、空間内のオブジェクトの位置と形状を表します。 ほとんどのアプリケーションでは、これらのポイントと図形は、地球上のオブジェクトと地理空間データに対応しています。
空間データは、次を表すために使用できます。
人の場所
関心のある場所
都市または湖の境界
クエリ言語では、 geometry データ型と geography データ型の 2 つの空間データ型がサポートされています。
ジオメトリ型は、ユークリッド (フラット) 座標系のデータを表します。 この型は、線の測定、多角形の交差、ポイント間の距離の測定など、一般的な幾何学的タスクに役立ちます。
geography 型は、ラウンドアース座標系のデータを表します。 この型は、場所が特定の境界内にあるかどうかを判断したり、場所間の距離を測定したりするなどの一般的な地理的タスクに役立ちます。
サポートされているデータ型
クエリ言語では、 GeoJSON 仕様を使用して表される地理空間ポイント データのインデックス作成とクエリがサポートされています。 GeoJSON データ構造は有効な JSON オブジェクトであるため、特殊なツールやライブラリがなくても、クエリ言語を使用して格納およびクエリを実行できます。
クエリ言語では、次の空間データ型がサポートされています。
点
LineString
多角形
MultiPolygon
ポイント
ポイントは、空間内の 1 つの位置を表します。 地理空間データでは、ポイントは正確な場所を表します。これは、食料品店、キオスク、自動車、または都市の番地です。 ポイントは、座標ペア (経度 と 緯度) を使用して GeoJSON (およびクエリ言語) で表されます。
この GeoJSON ポイントの例を考えてみましょう。 経度は -122.12826822304672 で、緯度は 47.63980239335718。
{
"type": "Point",
"coordinates": [
-122.12826822304672,
47.63980239335718
]
}
ヒント
geography データ型の場合、GeoJSON の仕様では、経度の最初と 2 番目の緯度を指定します。 他のマッピング アプリケーションと同様に、経度と緯度は角度であり、度数で表されます。 経度の値は、プライム経線から測定され、 -180 度と 180.0 度の間で、緯度の値は赤道から測定され、 -90.0 度と 90.0 度の間です。
geometry データ型の場合、GeoJSON 仕様では、最初に横軸を指定し、縦軸を 2 番目に指定します。
空間データ型は、GeoJSON データを含む施設アイテムのこの例に示すように、項目に埋め込むことができます。
{
"name": "Headquarters",
"location": {
"type": "Point",
"coordinates": [
-122.12826822304672,
47.63980239335718
]
},
"category": "business-offices"
}
クエリ言語は、WGS-84 参照システムに従って表される座標を解釈します。 詳細については、「 座標参照系」を参照してください。
LineStrings
LineString は、 空間内の 2 つ以上のポイントと、それらを接続する線分の系列を表します。 地理空間データでは、LineString は一般的に高速道路や河川を表すために使用されます。
この例では、2 つの点の間に描画される線を表すために線の文字列を使用します。
{
"type": "LineString",
"coordinates": [
[ 31.8, -5 ],
[ 31.8, -4.7 ]
]
}
ポリゴン
Polygon は、閉じた LineString を形成する接続されたポイントの境界です。 多角形は、湖のような自然の形成や、都市や州などの政治的管轄区域を表すために一般的に使用されます。
Polygon 内のポイントは、反時計回りの順序で指定する必要があります。 時計回りの順序で指定された多角形は、その中の領域の逆数を表します。
この例では、複数のポイントを接続して多角形を作成します。
{
"type":"Polygon",
"coordinates":[[
[ 31.8, -5 ],
[ 32, -5 ],
[ 32, -4.7 ],
[ 31.8, -4.7 ],
[ 31.8, -5 ]
]]
}
ヒント
GeoJSON 仕様では、有効な Polygon の場合、閉じた図形を作成するために、指定された最後の座標ペアが最初の座標ペアと同じである必要があります。
MultiPolygons
MultiPolygon は、0 個以上の多角形の配列です。 MultiPolygon は 、辺を重ね合わせることはできません。また、共通領域を持つことはありません。 1 つ以上のポイントで触れることがあります。
MultiPolygon の例を次に示します。
{
"type":"MultiPolygon",
"coordinates":[
[[
[52.0, 12.0],
[53.0, 12.0],
[53.0, 13.0],
[52.0, 13.0],
[52.0, 12.0]
]],
[[
[50.0, 0.0],
[51.0, 0.0],
[51.0, 5.0],
[50.0, 5.0],
[50.0, 0.0]
]]
]
}
座標参照システム
地球の形状は不規則であるため、地理地理空間データの座標は多くの座標系 (CRS) で表されます。 各 CRS には、独自の基準フレームと測定単位があります。 たとえば、"National Grid of B uk" は参照システムであり、英国では正確ですが、外部では正確ではありません。
今日使用されている最も一般的なCRSは、世界測地システム WGS-84です。 GPS デバイス、Google Maps、Bing Maps API などの多くのマッピング サービスでは WGS-84 が使用されています。 クエリ言語では、WGS-84 CRS のみを使用した地理空間データのインデックス作成とクエリがサポートされます。