こちらsakuya_izayoiのizayoiです。お世話になります。
線分の距離の求め方について質問および相談があります。
今回はGISを使っている者として基本となるであろう内容に疑問および理解が及んでなかったという事で
少々恥ずかしい内容となっておりますが、ご容赦ください。
作業用のファイルも同梱いたします。同封ファイルはQGIS3.2で作成しております。(qgsファイルのため2.Xとの互換はあり)
____________________________
最初に質問事項を明記しておきますと
length(Cartesian)とlength(Ellipsoidal)はそれぞれどういうときに使うもので、長さとしてはどちらが正しいのかおしえてください。
です。
____________________________
以下になぜそのような疑問に至ったのか記述します。
現在、QGISには同心円という事で各距離別の四半円点を表示させております。
上記の例ですと、0という星マークを原点とした5kmと10kmの同心円、作成している座標系がJGD2000であるため、正確には同心楕円が表示されています。この5kmと10kmというのは原点からおおよそ間違いなくこの値になるように作られています。
上記の図にスナップをきかせて、原点から東方向の10右という場所に向かって
EPSG_6675(JGD2011の7系)の座標系を持ったレイヤー上でラインを一本書きました。
下図でいう赤色の線の事です。このラインの長さは10kmにほぼ近い値になるはずです。
そのラインの情報を見てみると
Cartesianが9999.036m、およそ9.999km
Ellipsoidalが9999.995m、およそ10km
・・・平面直角座標系で書いたはずなのに、楕円形であるEllipsoidalの方が10kmに近くなる??
という現象が起きていました。
自分では平面直角系(デカルト座標系)であるCartesianの方が10kmに近くなると思っていたのですが・・・。
試しにフィールド計算機で
$lengthと入力すると
Ellipsoidalの9999.995と同じ値が返ってきます。
この値はプロジェクトの座標系を
EPSG:4612(JGD2000)
EPSG:3857(WGS 84 / Pseudo-Mercator)
EPSG:6675(JGD2011_7系)
に変更しても同じ値でした。
じゃあと思い、始点と終点の座標値から距離を求めるとどうなるのかなと思い、
((xat(0)-xat(-1))^2+(yat(0)-yat(-1))^2)^(1/2)
という三平方の定理で計算してみました。その結果は
Cartesianの9999.036mに近似しました。
もう一つ実験として
EPSG:3857(WGS 84 / Pseudo-Mercator)で下図のように青い線で10kmになるはずのラインを原点から西方向に書いてみました。
同じように地物情報を見てみると
Cartesianが12217.604m、およそ12.2km
Ellipsoidalが9999.995m、およそ10km
・・・EPSG:3857(WGS 84 / Pseudo-Mercator)で座標定義したから、伸びるとは思っていましたが、ここまで誤差が出るとは…。
念のためフィールド計算機の結果図です。
Ellipsoidalの9999.995と同じ値が返ってきます。
念のために最初と同じようにプロジェクトの座標系を変更してみる。
EPSG:4612(JGD2000)
EPSG:3857(WGS 84 / Pseudo-Mercator)
EPSG:6675(JGD2011_7系)
に変更しても同じ値でした。
三平方の定理を使用。
Cartesianの12217.604mになった。
かなり前置きが長くなりましたが、地物情報のLength(Cartesian)というのはいったい何を示しているものなのでしょうか?
実験してみたように、三平方の定理の結果を返してくれているという事?
むしろどういうときに参考にするために見るものなのでしょうか?
QGIS上で長さを参照したい時には常に
$length関数で求めた長さが真となるというころでしょうか?
ここの場で正直に言ってしまうと、直角座標系だからと表計算ソフト上で今までに三平方の定理を使用して長さを求めた事があるのですが
これはやってはいけない事だったのでしょうか?
すみません。少々長くなりすぎましたが、自分で判断できかねる題材でしたので、お知恵をお貸しください。
_______________________
蛇足
一応、wgs84の時の線を緑色で書いて地物を見てみると
とEllipsoidalが9999.995m、およそ10kmと変わらないです。
三平方の定理はCartesianに合致。(むしろ°でやっていいのかしら?)