DEM内、標高最大位置と標高最小位置

1,222 views
Skip to first unread message

yoshimotocoral

unread,
Dec 6, 2021, 6:29:26 AM12/6/21
to QGIS初心者質問グループ
お世話になります。
以下についてご教示いただければ幸いです。

広域DEMデータがあり、多数ポリゴンが配置されています。
それぞれのポリゴンの領域内で、最大の標高位置と最小の標高位置を求めた上で、
この2点間の以下を求めたいです。
・標高差
・斜面長
・斜度
多数ポリゴンそれぞれで上記数値が必要となります。

よろしくお願いいたします。

mooya

unread,
Dec 7, 2021, 9:02:09 AM12/7/21
to QGIS初心者質問グループ
yoshimotocoral 様

 こんにちは
 1点質問です。ポリゴンは流域でしょうか。
 言い換えると、標高の最大、最小ははポリゴンの線上にあるという前提はありますか。


2021年12月6日月曜日 20:29:26 UTC+9 yoshimotocoral:

福岡

unread,
Dec 7, 2021, 7:48:18 PM12/7/21
to QGIS初心者質問グループ
yoshimotocoral 様

こんにちは

最大の標高位置と最小の標高位置までは何とかなりそうですが、私の実力では、ここまでのようです。
途中半端な投稿になりますが、ご容赦ください。m(__)m

まずラスタのままでは扱いづらいので、標高値を持たせたベクタのポイントを生成します。
プロセッシングツールの「SAGA - Features-Raster Tools - Raster Values to Points」で生成できます。
SAGAのツールでは不安定なものもあるのですが、このツールは問題なく動作しました。
なおオプションの「Polygons」にPoligonのレイヤを指定すると、Polygon内にだけポイントが生成できます。

次にメニューの「ベクタ - データ管理ツール - 属性の空間結合」でポイントにPolyginの属性を結合させます。
これでポイントが、どのPolygonに属しているかの判別ができるようになります。

あとはフィールド計算機を利用したり、属性テーブルを表計算ソフトに貼り付けて解析することで最大の標高位置と最小の標高位置を抽出することはできます。

さてここで躓きました。最大の標高位置と最小の標高位置がそれぞれ1点であるとは限りません。
その場合、次の作業へどのような判断基準で進めば良いかわかりません。
またこの後の作業を自動あるいは半自動で行うことは、私の実力的には無理そうです(私の場合は、手作業で地道にやることになりそうです)。

またそれ以外としては、最大標高と最小標高を結んだ間でアップダウンがあった場合に無視しても良いかということ。
斜面長は斜距離を想定していると思うのですがそれで良いのかということも、解決策を検討している人にとって必要な情報かと思いました。

追伸
mooyaさんのおっしゃる最大・最小がポリゴン縁にあるという想定ですと、違った手法になると思います。
私の考えたものは、DEMのピクセル中央にポイントが生成されます。

2021年12月7日火曜日 23:02:09 UTC+9 mooya:

yoshimotocoral

unread,
Dec 8, 2021, 6:44:35 AM12/8/21
to QGIS初心者質問グループ
mooya様

ご連絡ありがとうございます。
ご返事が遅くなり申し訳ありません。

標高の最大、最小はポリゴン線上に無い場合も存在します。
よろしくお願いいたします。


2021年12月7日火曜日 23:02:09 UTC+9 mooya:
yoshimotocoral 様

yoshimotocoral

unread,
Dec 8, 2021, 7:24:54 AM12/8/21
to QGIS初心者質問グループ
福岡様

ご教示ありがとうございます。
また、ご返事が遅くなり申し訳ありません。

ラスタをポイントベクタ化する 「SAGA - Features-Raster Tools - Raster Values to Points」は知りませんでした。
早速つかってみましたが、位置情報と標高値ともに属性テーブルに入っていたのでこれを元にできそうです。
ちなみに、ラスタのピクセル全てをポイント化するということですよね。

ご指摘いただいたように最大標高位置や最小標高位置が1点とは限らない場合や、
途中でアップダウンがある場合も想定されますね。(斜面長とは斜距離のことです)
これらのケースを私自身も想定していませんでしたが、
最大標高位置等が2点以上の場合、それぞれの位置で標高差と斜距離と斜度を求め、これらから何らかの計算式で値を定めた後、
それが最大のものを採用するといった手順を考えています(計算式はまだですが)。
また、途中のアップダウンはとりあえず無視しようと思います。

数が多いもので、できるだけ自動でやりたく、もう少し考えてみます。
ご助言ありがとうございました。



2021年12月8日水曜日 9:48:18 UTC+9 福岡:

mooya

unread,
Dec 8, 2021, 10:08:44 AM12/8/21
to QGIS初心者質問グループ
yoshimotocoral様、福岡様

 こんばんは
 一応、QGISの中でがんばってみる手順を考えてみました。
 とはいっても、プロセッシングの説明書きをみながら、頭の中で転がしただけなので、うまくいくかはわかりません。


1.ラスタのポイント化、ポイントにポリゴンid付与までは、福岡様の手順と同じです。
2.空間結合(集計つき) 入力レイヤ:ポリゴン、結合するレイヤ:ポイントレイヤ、空間関係:含む、集計属性:標高、計算する集計関数:最大値、最小値
3.属性テーブルで結合(table join) 入力レイヤ:ポイント、第2の入力レイヤ;ポリゴン ポイントにポリゴン範囲の標高最大、最小値を付与
4.属性による抽出 入力レイヤ:ポイント そのポイントの標高が最大値と一致 →最高ポイント
5.属性による抽出 入力レイヤ:ポイント そのポイントの標高が最小値と一致 →最低ポイント
6.属性テーブルで結合(table join) 入力レイヤ 最高ポイント、第2の入力レイヤ:最低ポイント、結合のタイプ:マッチした地物ごとに地物を作成(1対多結合)、結合対象フィールドはポリゴンのID 最低ポイントのx,y,zを最大ポイントに付与、1対多なので全組み合わせが作成されます。
7.フィールド計算機で、2つ(最大、最小)のx,y,zで、比高、斜距離、傾斜を計算

 うまくいけば、重複を含む最大、最小値が抽出され、その全組み合わせが計算できるのではないかと


2021年12月8日水曜日 21:24:54 UTC+9 yoshimotocoral:

mooya

unread,
Dec 8, 2021, 6:40:47 PM12/8/21
to QGIS初心者質問グループ
補足です。
2.の空間結合集計付きは、処理の重い空間結合を2回することになるので、
出力レイヤ という多分誤訳のカテゴリ別の統計量のプロセッシングをポイントレイヤを入力として実行すると良いと思います。

2021年12月9日木曜日 0:08:44 UTC+9 mooya:

yoshimotocoral

unread,
Dec 9, 2021, 7:04:38 PM12/9/21
to QGIS初心者質問グループ
mooya様

ご検討くださりありがとうございます。
ご教示いただいた方法について、実施してみました。
6.に記していただいた、最大標高群の属性テーブルで、最小標高群との全組み合わせを一覧表にしてしまうという方法が目から鱗でした。

この方向性で検討進めてみます。
ありがとうございました。



2021年12月9日木曜日 8:40:47 UTC+9 mooya:

okhk yagi

unread,
Dec 22, 2021, 1:42:01 AM12/22/21
to QGIS初心者質問グループ
mooya様、福岡様、yoshimotocoral様

はじめまして。QGIS初心者です。
自分も皆さまの検討を試してみましたが途中でつまづきました。

福岡様の提案からのmooya様の最後の検討、1.ラスタのポイント化、・・・・以降、細かく手順を書いてくださっていますがよくわかりませんでした。
現在、3ポリゴンを作成し、3.属性テーブルで結合までできていると思います。
3.属性テーブルで結合.png


4.属性による抽出。以降についてもう少し詳しくご教授くださいませんか?
4.属性による抽出.png

よろしくおねがいします。
2021年12月10日金曜日 9:04:38 UTC+9 yoshimotocoral:

mooya

unread,
Dec 22, 2021, 6:17:07 AM12/22/21
to QGIS初心者質問グループ
okhk yagi様、福岡様、yoshimotocoral様

 こんばんは。
 貼られているテーブルは、3.が終わった段階のポイントテーブルと思います。
 この段階で、ポリゴンのidのフィールドがあるはずですが見当たらないので、福岡様が書かれている1.の手順を見直してはいかがでしょうか
 


2021年12月22日水曜日 15:42:01 UTC+9 okhk yagi:

okhk yagi

unread,
Jan 17, 2022, 5:12:14 AM1/17/22
to QGIS初心者質問グループ
mooya様、福岡様、yoshimotocoral様
こんばんは。
mooya様、お返事が遅くなり申し訳ございません。

上述のidのフィールド分けは失念しておりましたが、出来ました。
その先の解析に進もうとしたところ、ラスタ内のDEMデータがあまりに多いからかデータ処理が進みません。
このことから、ベクタ調査ツール、規則的な点群で0.5mピッチの点群を作成し、その点群へSAGAのRaster Values to Pointsでラスタデータを移植しようと試みましたがエラー(次のレイヤは正しく生成されませんでした。)が出て出来ませんでした。

なにか一手間加えれば可能になるものでしょうか。
お手すきの際にでもご教授お願いします。m(_ _)m

2021年12月22日水曜日 20:17:07 UTC+9 mooya:

mooya

unread,
Jan 18, 2022, 10:52:19 PM1/18/22
to QGIS初心者質問グループ
okhk yagi様、福岡様、yoshimotocoral様

こんにちは

ラスターからポイントを作る処理がうまくいかないのでしょうか。
方法として考えられるのは
・同様の他のプラセッシングを使う
 ラスタのベクタ化picels to points 、grassのr.to.vect 
・リサンプリングして解像度を下げる。
 gdalの再投影warp など
・ラスタを分割して処理する


2022年1月17日月曜日 19:12:14 UTC+9 okhk yagi:

okhk yagi

unread,
Jan 19, 2022, 4:26:12 AM1/19/22
to QGIS初心者質問グループ
mooya様
こんばんは。

そうなんです。ラスタからポイントを作る処理が思うように行かなくて(涙)
これまでの解析法で行くとポリゴン内のポイント数があまりに細かくて多くて...
ドローン写真からMetashapeで作ったDEMだからデータが多いのかな?って思ったりもしていますが。。

というわけで、ポイント数をこちらで制限するために規則的な点群を作ってそのポイントにDEMラスタデータを入れようと試行錯誤してました。 
今回のmooya様のご提案を試してみますね。

何度も何度もお教えいただいて、ほんとありがとうございます!
2022年1月19日水曜日 12:52:19 UTC+9 mooya:

mooya

unread,
Jan 19, 2022, 10:25:12 PM1/19/22
to QGIS初心者質問グループ
okhk yagi様

 こんにちは。
 解像度を下げても良いのであればリサンプリングが良いと思います、
 というのも、次の属性の空間結合は、さらに重たい処理ですので、

 再投影 warp はラスタのcrs変換のプロセッシングですが、セルサイズの変更のみでも使えます。


2022年1月19日水曜日 18:26:12 UTC+9 okhk yagi:

okhk yagi

unread,
Jan 20, 2022, 6:50:09 PM1/20/22
to QGIS初心者質問グループ
mooya様

おはようございます。
解像度を下げて処理を行うと全てうまく行きました。

しばらく悩んでいたので、こんなかんたんなことで解決するなんてと思っております。
QGISは発想力が必要ですね(TдT)

mooya様、福岡様、yoshimotocoral様。改めてありがとうございました。

またよろしくおねがいします。

2022年1月20日木曜日 12:25:12 UTC+9 mooya:
Reply all
Reply to author
Forward
0 new messages