斜面長の求め方

1,258 views
Skip to first unread message

sakuya_izayoi

unread,
Oct 31, 2018, 9:16:14 PM10/31/18
to QGIS初心者質問グループ
こちらsakuya_izayoiのizayoiです。
お世話になります。
タイトルの通り、斜面長の長さを求めたいです。

現在、QGIS上には下記の図のように10mDEMととある直線が入っている状態で、直線の斜面長さを計算させたいです。
このDEMの場所は富士山周辺で、イメージ的には山を下るときに4本の経路ではそれぞれ、どのくらい歩くことになるのだろうという事です。
(なお、この経路では絶対に歩けないという道もありますが、ここは、今回おいておいて)
空を飛べるならば、このライン通りの長さになるのですが、まだちょっと自力では飛べず、勾配に沿って地面を歩くしかないないので、
二次元上での距離と、3次元上で勾配を歩いた時の距離はずいぶん変わると思っています。だから斜面長が求められたら良いなと思いました。

実際に想定しているのは、起伏に沿って河川などをトレースしたときに、実際の河川の展開長さを求めたり、パイプラインの長さを求めたり
といったことをしたいです。

QGISのプロジェクトファイルと、上記のDEMを同封したzipファイルを添付します。ご助言いただければ幸いです。
fujisann.zip

adachi

unread,
Oct 31, 2018, 10:38:30 PM10/31/18
to QGIS初心者質問グループ
izayoi様

あまりスマートなやり方ではありませんが…

①ラインを1ルート1レイヤになるように分割
②プロセッシングツールのSAGA > Profiles from Lines をラインとDEMを対象に実行
 →ラインを細かく分割するポイント群と、そのポイント群のDEMに沿った累積距離が出る(最後のポイントの累積距離を見るとトータルがわかる)
③②を調べたいルート数分繰り返す


当初、意味的にM値がそうなのか?と思いましたがどうもうまくいきませんでした。
それぞれのラインの始点と終点のz値と、平面距離から三平方の定理でできるかとも思ったのですが、始点と終点だけなのでその間の曲線は無視されるな、と思い至りました。
この検証で「ドレープ(ラスタからz値を取得)」というツールを知れたのは収穫でした、ありがとうございます(笑)。

福岡

unread,
Nov 1, 2018, 12:23:50 AM11/1/18
to QGIS初心者質問グループ
izayoi 様
adachi 様

いつものようにググっていると、adachiさんと同じ回答にたどり着きました。
英文ですが、図表なども入っていて作業イメージが掴みやすいかと思いましたので、念のため紹介いたします。

Line lengths calculation in combination with DEM

sakuya_izayoi

unread,
Nov 1, 2018, 12:25:25 AM11/1/18
to QGIS初心者質問グループ
adachiさま
ありがとうございます。sagaツールの方にありましたか。この機能です。これが欲しかったのです。

興味本位なのですが、面積出すときも傾斜面積(斜面展開面積)の出し方ってあるのでしょうか?以前CADでやった時に、地味だけどものすごく面倒だった覚えがあって、CADではやりたくない(笑)


複数のラインがある場合は、下記図の赤枠内
「each line as new profile」
のチェックを外すとなぜか複数のライン同時にやってくれました。
(なんだか違和感あるんだけど・・・。各ラインを別々に検査するって意味なのに。チェックを外した時にそうなるのだろうか?)

後、全然まだ分からないのが、下記図の青枠内と緑枠内の部分。sagaのリファレンス見てみると
青枠内の部分は、ラスタの値をそのまま持ってくるだけ?・・・ああ、そうか。マルチバンドの時に持ってくるバンドを設定できるってことかな。


対して、緑枠内のはさっぱり。


ドレープというのはdrapeで調べて出てくる
上記のうち、v.drapeのことでしょうか?添付したファイルでできるのかな?と思って実行したのですが、エラーが返ってきて現在よくわかってない状況へ。
adachiさまはどのように実行しましたか?


投げっぱなしですみません。ちょっと外勤行ってきます。

adachi

unread,
Nov 1, 2018, 12:58:30 AM11/1/18
to QGIS初心者質問グループ
福岡様

回答フォローありがとうございます。
すでに操作に慣れてそうだ、という方に対しての回答では画像貼付や細かい説明を怠ける傾向にあります。。


izayoi様
そのオプションはそんな意味があったんですね、あまり細かく見ておらず失礼しました
私にも勉強になりました。

2つある謎のOutputですが、貼付けていただいたURLのツール説明を見ると

インプットの DEM: Grid Value: Grid List
というのと
アウトプットの Profiles: Shapes Profiles: Shapes List
というのが対応してそうにも見えます。

インプットのラスタに複数バンドがある場合に、出力も複数のshp(あるいは単なる表形式データ)を返すものなのかな?と思いました。


ドレープは、そのままカタカナで「ドレープ」と検索すると出てきます(このあたり英語の結果と共通させてほしい、、)。
今回の回答では全く使ってませんが、新しい発見でした。

adachi

unread,
Nov 1, 2018, 1:50:34 AM11/1/18
to QGIS初心者質問グループ
izayoi様

追記です。
これまたSAGAにReal Surface Areaというツールがありました。
DEMラスタをもとにして、各セルの傾斜面積を出すもののようです。

①DEMに対してReal Surface Areaを実行
②地域統計で、①の結果と対象としたいエリアポリゴンを設定してsumを計算

でしょうか。

どれだけ誤差が出そうかは全く検証しておりません…
DEMの精度にもよるかと思いますが、ざっくり知りたい場合には使えそうです。

sakuya_izayoi

unread,
Nov 1, 2018, 2:23:18 AM11/1/18
to QGIS初心者質問グループ
福岡さま
どうもありがとうございます。良いサイトの紹介、 毎度頭が下がります。

adachiさま
重ね重ねありがとうございます。
面積計算の方も帰ったら実施してみます。

なんだか分からない処理方法も多いですが解き明かすのもなかなか難しい。
いつも助けてもらい感謝です。

利根河口2020

unread,
Dec 28, 2020, 9:49:22 PM12/28/20
to QGIS初心者質問グループ
こちらの投稿と同じことをしたく参考にさせていただきました。
Profiles from Lines を実行すると、ライン終点の手前に点が作成されてしまい、実際よりも短くなってしまいました。

うまい解決法があれば、ご教示お願いします。

2018年11月1日木曜日 15:23:18 UTC+9 sakuya_izayoi:

sakuya_izayoi

unread,
Apr 16, 2021, 7:06:43 AM4/16/21
to QGIS初心者質問グループ
実際よりどの程度短いのでしょうか?DEMモデルは何mメッシュのものでしょうか?
おそらくですが、ライン終点の手前がDEMの中心点になっていたりだと思いますが、いかがでしょうか?
一番初めにある、サンプルファイルでは正常にできているような形でしょうか?

2020年12月29日火曜日 11:49:22 UTC+9 利根河口2020:

利根河口2020

unread,
Apr 17, 2021, 2:29:33 PM4/17/21
to QGIS初心者質問グループ
izayoiさま

サンプルファイルを元に
Profiles from Lines を実行してみました。
ID2は始点と終点に点が発生しますが、
残りの3ラインは終点に点が発生せず、
微妙ではありますが、短くなってるようです。

ちなみに、ID2のDIST_SURFは10589.9m
このラインのみを適当に2分割して再実行すると、数m短くなっていました。

何か設定が悪いのでしょうか。


2021年4月16日金曜日 20:06:43 UTC+9 sakuya_izayoi:

ありた

unread,
Apr 17, 2021, 10:53:14 PM4/17/21
to QGIS初心者質問グループ
こんにちは

結果の画像キャプチャ等があれば、もう少しわかりますが、確認してみると同様と思われる状況になりました。
QGIS からではなく、 SAGA GIS 2.3.2 および 7.9.0 で直接実行してみましたが、折れ線の各セグメントに対し、
ラスタのセルサイズごとに点を作成しますが、終端点に対して点の作成が行われない状態になっているため、
手前の点までの結果しか得られず、少し短くなります。

なお QGIS ( Windows 版)にバンドルされている SAGA GIS は現時点でも 2.3.2 と古く、仮に SAGA GIS 自体が
修正されてもしばらくは QGIS からはこの状態が続くと思われます。

あまりスマートではありませんが、「式によるジオメトリ」で入力レイヤに対し、出力タイプ:ラインで
line_merge(union(
  $geometry,
  make_line(
    end_point($geometry),
    project(end_point($geometry), 0.001, 0)
  )
))
のように終端点を、終端点でなくすることなどが考えられます。
上記式は、終端点から北に 1mm だけ伸ばした線を結合させています。
なお、マルチラインの場合は正しく動作しないと思われます。



profile.png
上図はわかりやすくするため、 1mm ではなく 1m 伸ばしています。

利根河口2020

unread,
Apr 18, 2021, 2:59:24 AM4/18/21
to QGIS初心者質問グループ
ありた様

ありがとうございます。
結果は仰るとおりの状態で、「北に○mm延ばす」処理で
狙った結果が得られそうです。
この処理は、どこでやればよいのでしょうか。

最終的には、メッシュ内の斜面長を求めようとしてまして、
切り刻んだ後に、それぞれの斜面長を出して、合計してるため、
マルチラインに作動しないのとなると、膨大な作業時間となりそうではありますが。

2021年4月18日日曜日 11:53:14 UTC+9 ありた:

ありた

unread,
Apr 18, 2021, 3:38:44 AM4/18/21
to QGIS初心者質問グループ
こんにちは 

この処理は、どこでやればよいのでしょうか。
プロセシングツールの「式によるジオメトリ」を使用してください。


最終的には、メッシュ内の斜面長を求めようとしてまして、
切り刻んだ後に、それぞれの斜面長を出して、合計してるため、
マルチラインに作動しないのとなると、膨大な作業時間となりそうではありますが。
Profiles from lines の処理で、ラスタのセル(相当)の単位で点が生成され、
また、終端点には累積の距離の値が出ておりますので、いまいち目的とする
ことがわかりません。厳密にセルごと(セル中心近傍点またはセル境界を基準)に
算出するのであれば、 Profiles from lines を使うこと自体不適切であるため
このようなジオメトリの処理も不要な気がします。
( Profiles from lines は始点から長辺がセルサイズ間隔で分割し点を生成)

利根河口2020

unread,
Apr 18, 2021, 10:52:02 AM4/18/21
to QGIS初心者質問グループ
ありた様

説明不足でしたが、
10km程度のラインを1kmメッシュでカットして、
その斜面長を求めようとしてました。

1mm延ばすやり方で、一括で解決できました。
大変助かりました。
ありがとうございます。

2021年4月18日日曜日 16:38:44 UTC+9 ありた:
Reply all
Reply to author
Forward
0 new messages