こんにちは。
GeoJSON (RFC7946) のデータ表現仕様を見ますと、下記のようなことに注意する必要がありそうです1 2。
- 経度値 (degree) の範囲は $-180 \le λ \le 180$
- Linestring/Polygon は180度経線を跨がないように分割する(Multilinestring/Multipolygon へ) (i.e. antimeridian cutting)
- 直線(線分、辺)の定義を正距円筒図法での直線とする
- 測地系は WGS84
- Polygon の輪郭線は反時計回り
- おそらく、Polygon の輪郭線の自己交差は保証外
これに対して、同じ JSON 形式ではありますが、下記のように異なる考えの採用も見られるので差異に注意が必要のようです。
- 直線(線分、辺)の定義を地球回転楕円体面上(WGS84)の測地線とするシステムが見られる(D3.js, ArangoDB, RethinkDB)3。
- Polygon の輪郭線は時計回りとする定義が見られる(D3.js)4。
- データ表現で "antimeridian cutting" は不要なものが見られる(D3.js)5。
また他にも微妙な注意点として下記のようなものがありそうです。
- 一つの線分は半周を超えない(言い換えれば短い方の弧)
- 一つの線分(の始点終点)の経度差が180度ならば、極を通過する弧となる
-
PostGIS などの定番システムの考え方を踏襲しているようです。 ↩
-
"Everything you need to know now about RFC 7946 GeoJSON" などの一連の記事も参考になります。 ↩
-
rfc7946-to-d3.js が、輪郭線の時計/反時計回りを反転させるために使えます。 ↩
-
antimeridian cutting の処理は処理系側に任されることになります(例: Antimeridian Cutting / No Antimeridian Cutting)。 ↩