各頂点間の距離、角度を調べる方法

1,685 views
Skip to first unread message

やまぢ

unread,
Dec 6, 2016, 7:42:43 PM12/6/16
to QGIS初心者質問グループ
やまぢです。

お世話になっております。

さっそく質問ですが、ラインやポリゴンの地物で、各頂点間をつなぐ線の長さと角度(方位)を調べる方法を探しています。

すべての頂点間について調べたいので、選択フィーチャ、または選択レイヤ全体に対して処理できる方法だと助かります。

上記の要望を実現するための手順やプラグイン等ありましたら教えて頂けないでしょうか。

宜しくお願い致します。

Message has been deleted

fukuoka....@gmail.com

unread,
Dec 7, 2016, 10:41:05 AM12/7/16
to QGIS初心者質問グループ
こんばんは

考えてみましたが、
少々手数が多いのでもっと良い方法を他の方が示してくだされば良いと思っています。
考えた方法は次のとおりです。

1 バラバラの線分にする
  ラインは、プロセッシングツールボックス-QGISジオアルゴリズム-ベクタジオメトリツール-Explode lines を使ってバラバラの線分にする。
  ポリゴンはラインに変換し、同じくバラバラの線分にする。

2 フィールド計算機で長さと角度を拾う
  長さ:$length
  角度:atan2(xat(-1)-xat(0), yat(-1)-yat(0)) / 0.017453

試してみたところ、角度については真北が0で時計回りの値になるようです。
真東を0で反時計回りの角度が欲しい場合は、試してはいませんがCASE文を使って第1象限と他の象限の計算を分けるとできそうな気がします。

oxvall...@gmail.com

unread,
Dec 11, 2016, 6:52:42 PM12/11/16
to QGIS初心者質問グループ
回答ありがとうございます。

手順としてはそれほど多くないので問題ありません。

動きを確認してみたのですが、180(南)を超えると負の値になるようですね。 方位を確認したかったので 0 <= 角度 < 360 の範囲で取得できれば理想でしたが、たぶん、これくらいなら式を少し変更することで対応できそうです。

ただ問題は、角度の計算式が私にとっては難しすぎて理解できないところです(^_^;)

各関数に渡している引数の意味とか、最後に割っている数字は何の値?とか、不明点も多いのですが、当初の目的はほぼ達成していますのでこの辺についてはブラックボックスとして扱っていこうと思います。

fukuoka....@gmail.com

unread,
Dec 11, 2016, 8:37:56 PM12/11/16
to QGIS初心者質問グループ
少しはお役に立てたようで良かったです。
なお、式の意味ですが次のとおりです。

xatとyatは、ライン頂点のx座標とy座標を求めるもので0は始点、-1は終点です。
atan2は見た目のとおりアークタンジェントで、角度をラジアンで返します。
そこで0.017453ですが、ラジアンを度に直すためのもので、円周率÷180です。

やまぢ

unread,
Dec 11, 2016, 8:45:19 PM12/11/16
to QGIS初心者質問グループ
わかりやすく説明していただきましてありがとうございます。

xat, yat の引数は始点と終点だったんですね! なるほど~~。

引数に定数しか渡していないのになぜ値が変わるのだろう???と思っていましたが、理解できました。
Reply all
Reply to author
Forward
0 new messages