QGISプラグインProfile Toolの距離誤差について

1,239 views
Skip to first unread message

takato.m...@gmail.com

unread,
Feb 6, 2019, 4:59:40 AM2/6/19
to QGIS初心者質問グループ
お世話になっております.
QGISプラグインであるProfile Toolを用いて縦断図を作成しているのですが,同じ区間であるにもかかわらず,GIS上で表示される距離と,Google Earthで表示される距離が異なります.
ここで,異なる距離が示される原因として,
GIS上では対象区間の線がひとつのセルと一部でも重なった場合,一辺の長さを距離としてカウントしてしまうためGoogle Earthの距離と比較してGIS上の距離が長くなるのでは,と考えております(概念図を添付させていただいています).
Profile toolを使われたことがある方で,理由をご存知の方がいらっしゃいましたら教示していただきたいです.また,その理由が明らかにされている記事や文献などもございましたら,拝見したいです.
よろしくお願いします.


DEMデータ補正の概念図.png


adachi

unread,
Feb 6, 2019, 5:39:13 AM2/6/19
to QGIS初心者質問グループ
ツールを精査しないままイメージでの回答でかつ一般論になってしまいますが、、
使用される座標系が異なれば(地理座標系 vs 投影座標系、A投影座標系 vs B投影座標系など)
距離等の計算結果も変わってくるかと思いますが、そのようなレベルの差異ではない、という感じでしょうか。

takato.m...@gmail.com

unread,
Feb 6, 2019, 5:54:06 AM2/6/19
to QGIS初心者質問グループ
お返事ありがとうございます.300 mのものが350 mと,50 mの過大延長されています.
まずはご指摘頂いたとおり,座標系をみてみたいと思います.ご指摘ありがとうございます!

福岡

unread,
Feb 6, 2019, 8:51:11 PM2/6/19
to QGIS初心者質問グループ
問題の切り分けのために、QGIS内で試してみたことについてお知らせいたします。

(条件)
同じ平面直角座標でDEMとラインを用意しました。
ラインは1km間隔で90度に折り曲げ、全長は20kmです。
ラインはいったん作成した後、適当に回転させて数ケースチェックしました。

(結果)
Profile Toolで表示される距離に変動は無いようです。
2.x版でフィールド計算機でオンザフライを有効にすると数値が不正確になるというバグがあったので、これも試してみました。
オンザフライを有効にしても大丈夫の様でした。
試したQGISのバージョンは、2.18.28と3.4.4です。
なお、空間参照はプロジェクトと全レイヤを統一しています。

Test.png


福岡

unread,
Feb 7, 2019, 1:08:44 AM2/7/19
to QGIS初心者質問グループ
GoogleEarthProとの比較も行ってみました。

方法としては、GoogleEarthProでDEMがある範囲内で目印として利用できるポイント(交差点中央)間を計測しました。
QGISでは背景地図としてGoogleSatelliteを利用して同区間へラインを引きました。
そして結果ですが、ラインを対象にProfileToolを使ってみたものと距離は一致していました。

300m当たり50mも過大評価ということから断定はできませんが、adachiさんがおっしゃるように参照座標などが原因となっているような気がします。

今のところ、検証できるのはここまでです。
はっきりとした結論が出なくて申し訳ありませんでした。m(__)m

adachi

unread,
Feb 7, 2019, 1:50:04 AM2/7/19
to QGIS初心者質問グループ
再現できたような気がします。
結論からいうと、

・プロジェクト座標系、使用しているデータの座標系が一致していないとき
・座標系が一致していても、そのエリアのローカル座標系以外の座標系(たとえばかなり一般的なEPSG:3857など)を使っているとき

に、たしかに2割ほど長い距離がProfile Tool内で表示されました。
ラインデータの「$length」ではGoogle Earthと一致する距離が計算されるにも関わらず、上記のような症状が出ました。
詳しい原因はよくわかりませんが、ツール内での補正の方法がどこかおかしいのかもしれません。

対処方法として、そのエリアの距離などを一番良く表していそうな投影座標系(平面直角座標系〇〇系など)ですべてのデータの座標系を統一することで
正しい(?)距離が表示されるようになるかと思います。

sakuya_izayoi

unread,
Feb 7, 2019, 2:01:53 AM2/7/19
to QGIS初心者質問グループ
adachiさま
こちらizayoiです。
何かできるかなと思ってトライアルしていたんですが
①最初の「・」の内容に関してはオンザフライの時と結構似たような現象ってイメージですね。こちらはなんだか違うような気もするなぁまでは行ったけど、確信が持てず
②二つ目の「・」の内容に関しては気が付かなかった。

当該地域の平面直角系でレイヤとプロジェクトの座標系を一致させてやるといいというのは、気を付けようと思いました。
EPSG:900913や3857は便利なんですけど、距離求める時はちょっと怖い。

ありた

unread,
Feb 7, 2019, 8:20:58 AM2/7/19
to QGIS初心者質問グループ
こんにちは

Selected polyline で既存のポリラインデータを参照し て確認してみました。
プロジェクトの参照系(ウィンドウの右下に表示されている EPSG:xxxx )を変更したところ
その参照系における距離で表示されるようです。
つまり平面直角座標系で表示しているときは(同一系に収まるレベルであれば、若干の誤差はあるものの、
実用上問題ない程度)正確な距離となりますし、経緯度座標系( WGS84 / JGD2000 / JGD2011 等)の
ときは単位が「度」の距離 になります。

この仕様は好意的にとれば、作成されたデータの参照系がなんであろうと(たとえば GPS ログ等)
現在表示しているプロジェクト参照系における距離で表示することができます。

QGIS 式で $length であれば実際の距離、 length($geometry) であればレイヤ(ファイル)に
保存された値を(平面上とみなし)計算した距離となりますが、表示されているプロジェクト参照系における
距離は下記で計算できます。(フィールド演算機やラベルなどで使えます)
length(transform($geometry, layer_property(@layer, 'crs'), @project_crs))



さて。
約300mであるはずのところ約350mになったということですが、おそらくプロジェクト参照系が
メルカトル図法になっていると思われます。
メルカトル図法は、図法であるため紙に印刷すれば(紙面上)単位はセンチメートルだったり、
画像ファイル化すれば単位はピクセルだったりしますが、 GIS では赤道の距離が地球と一致するように
横幅を約40075016.686メートルとしています。

しかしメルカトル図法は基準線(赤道)から離れるほど、引き伸ばされるという性質があります。
そのため、単位としては「メートル 」であるにも関わらず、実際の距離とは異なる値になります。

緯度を φ としたとき(真球とみなすと) 1/cosφ だけ引き伸ばされます。
今回の場合、北緯30度付近なので鹿児島付近でしょうか?

Reply all
Reply to author
Forward
0 new messages