作成したラインの長さ表示について

639 views
Skip to first unread message

sakuya_izayoi

unread,
Sep 11, 2018, 1:18:56 PM9/11/18
to QGIS初心者質問グループ
こちら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に合致。(むしろ°でやっていいのかしら?)
質問用.zip

adachi

unread,
Sep 11, 2018, 2:54:48 PM9/11/18
to QGIS初心者質問グループ
izayoi様

感覚的な回答(?)ですみませんが

length(Ellipsoidal):地球上の2点間の距離を楕円体(≒地球の形)のまま、楕円の曲面に合わせて測ったもの
length(Cartesian):本来曲面上にあるものを、ある基準のもとに無理やり平面に落とし込んだ(投影した)後に測ったもの

ということになるのかな、と思います。
地球上を実際に歩いてみて測る実距離にどちらが近いか、という視点ではlength(Ellipsoidal)になるのかと。

上記の考え方とすれば、2点間の距離のうちlength(Ellipsoidal)のほうは、レイヤのCRSが変わったとしても準拠楕円体が同じである限りは同じ値になるかと思います。
(JGDのGRS80楕円体とWGS84楕円体は厳密にはわずかに違うもののようですが)

なおされた検証のうち「プロジェクトのCRSを変える」というのは、単に表示の見た目が変わるだけで
すでに読み込んでいるレイヤのCRSや計算結果が変わるわけではない、と理解しているのですが、どうなんでしょう。

sakuya_izayoi

unread,
Sep 11, 2018, 10:52:43 PM9/11/18
to QGIS初心者質問グループ
adachiさま
こちらizayoiです。お世話になります。

確かに、歩いてみた感じですとlength(Ellipsoidal)なんですよね。(実際にGPSもって中心点から東側は歩いたことありますし)
length(Cartesian)はCADといった図面作成ソフトで使うような感じ。だから、CADで直角座標系の二点間座標を直線で結んで、GIS上で座標変換したら長さはlength(Ellipsoidal)になるよって事でいいのかな?
結局のところ、$length関数で求めた長さを真としてみればいいという事でしょうか。

プロジェクトのCRSをかえるは、やった本人が言うのもなんですが、全く持って意味がないはずです。ただ、以前のQGISですと、オンザフライ時に面積計測のエラーがあったため、
その検証も含めてでした。

ありた

unread,
Sep 12, 2018, 9:42:50 AM9/12/18
to QGIS初心者質問グループ
izayoi さんこんにちは

Cartesian は三平方の定理で求めたように、そのレイヤの参照系における座標値(保存されている値)を
平面幾何学として求めた距離となります。

Ellipsoidal は楕円体上の測地線、つまり曲面上の距離として(ある程度)厳密に計算して
求めた値になります。たぶん。

詳しくみていませんが、 length($geometry) は前者、 $length は後者と一致するかと思います。




ご存知のとおり、曲面を平面に投影するときに、距離だとか角度だとか形状だとか、何らかの
歪みが生じます。メルカトル図法は角度や形状がだいたい正しいかわりに、赤道から離れ、
極地に近づくほど距離と面積が正しくなくなります。
複数の系を用意し、実用上問題ない範囲のみの使用としているため普段は考慮する必要はありませんが
平面直角座標系も横メルカトル図法の一種なので、中心経度から離れるほど歪みは生じます。
(東西方向に縮尺係数 k=0.9999 が掛けられていることもあるため、単純ではありませんが)

ですので、メルカトル図法(疑似メルカトル)のレイヤで作成した日本付近の地物だと、だいぶ差が生じます。

緯度35度の緯線は、赤道の cos(radians(35)) 倍の長さしかないので、同じ長さで投影しようとした場合
その逆数 1 / cos(radians(35)) = 1.221 倍だけ引き伸ばす必要があります。
引き伸ばしたあとの座標で距離や面積の計算を行うわけなので、ズレが生じてくるわけです。



(系の指定範囲内であれば)平面直角座標系○系という参照系に則って、距離に Cartesian を使うのは
いいのではないでしょうか。むしろそちらが正当かな? 測量的というか。
GIS 的にいえば、 1km メッシュを用意して統計処理とか行うときに、面積が半端なものになるのは
いまいち気持ち悪い気がしますね。
とはいえ、疑似メルカトルで用意した東京のメッシュと北海道のメッシュで比較とかは不適切なので
Ellipsoidal な面積を使うべきでしょうね。

sakuya_izayoi

unread,
Sep 12, 2018, 7:19:29 PM9/12/18
to QGIS初心者質問グループ
ありた さま
こちらizayoiです。お世話になります。

~Ellipsoidal は楕円体上の測地線、つまり曲面上の距離として~
というところで、曲面上の長さを展開して計算しているものだと思っていたのでなんでこちらの方が短くなるのかな?って思っていたんですけど、(弧の長さは弦より長いよねとか思いながら)意味合いも良く分かりました。

平面直角座標系も横メルカトル図法というのは恥ずかしながら知りませんでした。そういわれれば確かに定義的にはそうですね。良い情報を教えていただきました。

解説を読んでいると、全地球規模でのメルカトルはどうやってもどこかに無理が来ちゃうってことですね。

メルカトルにもいろいろ種類がありますが、epsg3857を主に使っています。しらべるとwebメルカトルとも言われてweb地図に主に使われているものみたいなんですね。
他にも陸地用や海図用のメルカトルもあるというのを知りました。

最近、沖縄よりさらに南側のほぼ海という図面を作ったのですが、その時には系が15と16系にまたがっていたのでepsg3857を使ってしまったのですが、海図用というのを使った方が良いのでしょうか?

色々と疑問も出てきてしまいました。

ありた

unread,
Sep 14, 2018, 10:32:33 AM9/14/18
to QGIS初心者質問グループ
izayoi さんこんばんは


基本的には、メルカトル図法というものはどうあっても距離や面積に歪みが生じます。
ただし、基準線に非常に近いエリアであれば歪みは実用上問題ないレベルとなっており、
その特徴を利用して赤道基準ではなく多数の経線基準の横メルカトル図法も用いられています。

EPSG:3857 は地球を擬似的に真球とみなしたうえで作成したメルカトル図法です。
(真球にすることで、その参照系における座標値とタイル座標を計算処理が楽になる)

陸地用や海図用のメルカトルというのも、おそらく準拠楕円体を GRS80 にするか WGS84 に
するかという違いだけで、メルカトル図法である限りはメルカトルの特徴は生じてきます。
(測量法施行令では GRS80 、水路業務法施行令では WGS84 を採用しています)

それとも UTM のことでしょうか。 UTM は陸地でも中縮尺の地図などで使われています。
平面直角座標系よりも広い範囲で利用できる代わりに、歪みも多少許容したものです。
(それでも中縮尺の地図で使える程度には平面とみなせます)


> 系が15と16系にまたがっていた
日本国内であれば EPSG:4612 や 6668 といった経緯度で表す座標系だと
建前としては適切だと思います。
あるいは、同じ系の UTM であれば UTM を使うのもよいと思います。
(しかし道内で複数平面直角座標系を使う北海道とかはどうしているんでしょう……)

sakuya_izayoi

unread,
Sep 15, 2018, 9:27:07 PM9/15/18
to QGIS初心者質問グループ
izayoiです。

ありた さま
ご返信ありがとうございます。
外出していたので返事が遅れて申し訳ありません。

海域というのは
EPSG:3395 (WGS 84 / World Mercator) (回転楕円体メルカトル)
というのが使われるというのを知ったので、陸地が主なところと、島みたいなところとで分けた方が良いのかなと思った次第です。
(石垣島や多良間島付近のマップ作製をする機会があったので座標を調べたときにちょっと興味を持ちました)

UTMは広い範囲の時には結構使いますね。そういう事になると、UTMも範囲を絞ったメルカトルという事ですよね?

日本国内で複数にまたがる系を使うときはJGD2011のEPSG6668を使うのが一番誤解が少なくなるのでしょうか?
複数にまたがって、スケールバーを作成して、正方形型でというめちゃくちゃな要望時には
着目点の座標系に設定して作図したのちに、注釈として、
「図面範囲の都合上、16系も15系として投影している」
と書いていたりもします。
(座標系が違うからできないと図を示しながら説明しても、納得してくれないというか理解しようとしない人もいるのも事実)

ありた

unread,
Oct 21, 2018, 12:42:00 PM10/21/18
to QGIS初心者質問グループ
izayoi さん

すみません。今更ですが、すこし勘違いしておりました。

私が JGD2011 でよいといったのは作成データの参照系です。
( Shapefile 等に保存するときに指定するやつ)


表示(印刷)のときは、緯度経度系をそのまま出力するのは、
よろしくないと思います。

そういうときはおっしゃるとおり「平面直角座標系15系で作成」と
欄外右下あたりにちっさく書いてしてしまうことでしょうね。
複数の系にまたがる範囲を一枚に印刷するレベルの縮尺ですと、
スケールバーから得られる距離感もざっくりしたものになるでしょうし。
Reply all
Reply to author
Forward
0 new messages