線および座標系

前の項で説明されているように、すべての種類のジオメトリは一連の位置によって指定されます。ただし、行文字列やポリゴンの場合、実際の幾何学的図形は、位置を結ぶ線によって形成されます。GeoJson仕様では、水平軸と垂直軸がそれぞれ経度と緯度である、(フラットな)デカルト座標系の点を結ぶ直線として、2点間の線を定義します。より正確には、点P1 = (lon1, lat1)およびP2 = (lon2, lat2)の間の反子午線を超えない線上のすべての点の座標が、次のように計算されます。
P = (lon, lat) = (lon1 + (lon2 - lon1) * t, lat1 + (lat2 - lat1) * t)
tは0以上、1以下の実数です。

ただし、Oracle NoSQL Databaseでは測地座標系(WGS 84)を使用するため、測地線の使用によってGeoJson仕様から逸脱します。2点の間の測地線は、地球の楕円形表面の2点の間に描画できる最短線です。簡易な図による定義のため、地球表面がスフィアであると想定します。地球上の2点間の測地線は、これらの点に対応する大円の2点間にある劣弧です。つまり、地球の中心と2点で定義されたスフィアと平面の交差で形成される円です。

次の図は、ロサンゼルスとロンドンの間の測地線と直線の違いを示しています。

図10-1 測地線と直線

図10-1の説明が続きます
「図10-1 測地線と直線」の説明

(ソース: https://developers.arcgis.com)

次の図は、点P1、P2、P3、P4で定義された正方形の2つの座標系の違いを示しています。この正方形は北半球にあるとします。正方形の2本の垂直線は両方の座標系で同じになります。これらの各線の点は同じ経度になります。これは、水平線には当てはまりません。GeoJsonシステムでは、P1-P2線(青い線)上のすべての点の緯度が同になります(このため、この線は地球パラレルの一部となります)。ただし、P1とP2の間の測地線は、GeoJson線の北の曲線(赤い線)となります。2つの線の間の差異(曲率)は、極点に近づき、P1とP2の間の距離が広がるほど大きくなります。

図10-2 測地とGeoJsonボックス

図10-2の説明が続きます
「図10-2 測地とGeoJsonボックス」の説明

[P1, P2, P3, P4]ポリゴン内の点または他のジオメトリを検索する場合(次の項で説明する関数の1つを使用)、Oracle NoSQL Databaseでは、検索ポリゴンの測地ビューが使用されます。このため、たとえば、青色と赤色のP1-P2の線の間にある点は、結果には表示されません。青いボックス内を検索する必要がある場合は、どうでしょう。このような検索は、検索ポリゴンの定義でP1-P2とP4-P3の間の点を追加することで近似処理できます。これは、P5とP6という点を追加した、次の図で説明しています。[P1, P6, P2, P3, P5, P4]ポリゴンでは、測地とGeoJsonボックスの間の領域の差異は[P1, P2, P3, P4]ポリゴンよりも小さくなります。

図10-3 GeoJsonボックス内での検索の近似処理

図10-3の説明が続きます
「図10-3 GeoJsonボックス内での検索の近似処理」の説明