ラスタ解析の傾斜(度)の計算方法

1,591 views
Skip to first unread message

大藪

unread,
May 13, 2019, 7:52:20 PM5/13/19
to QGIS初心者質問グループ
お世話様です。
QGIS ver3.4.6を使用しております。(初心者であります)

皆様に教えて頂きたいことは、標高DEMから作成した傾斜区分図の「傾斜の算出方法」についてであります。

今、手順として、
基盤地図情報の数値標高モデルより、10mデータを入手し、
株式会社エコリス様の変換ツールで、標高DEMを作成しました。
これを用いて、
ラスタ-解析-傾斜から、傾斜区分図を作成しました。
その後、プロパティの区分を変更(添付図)

シンボル体系.jpg


ここで、教えて頂きたいのは、
この色分けされた各メッシュについて、どの値から傾斜(度)を計算して、色分けしているのでしょうか。
計算根拠がわからないため、メッシュの色が間違っていないかの確認の仕方がわかりません。
(ネットでいろいろ検索はしてみましたが、ちょっと理解できませんでした)
※普通だと、傾斜(度)の算出は、「垂直距離÷水平距離」をtan-1で計算しますが、ここでも同じような方法で計算しているのかな?

お忙しい中恐縮ですが、皆様、どうか宜しくご指導頂けるでしょうか。



wata909

unread,
May 14, 2019, 9:00:05 AM5/14/19
to QGIS初心者質問グループ
wata909といいます。

ラスタ-解析-傾斜は、元をたどるとgdaldemというプログラムの機能をつかって、傾斜を計算してるようです。
gdaldemのマニュアルは以下になりますが(英語ですがご容赦ください)、具体的にどのようなアルゴリズムを直接記載している部分はありませんでした
ただ、

-alg ZevenbergenThorne: Use Zevenbergen & Thorne formula, instead of Horn's formula, to compute slope & aspect. The literature suggests Zevenbergen & Thorne to be more suited to smooth landscapes, whereas Horn's formula to perform better on rougher terrain.

という記述があるので、特にしない場合は、「Horn's formula 」というものを使っていると思われます。検索したところ
Horn, B. K. P. 1981. Hill shading and the reflectance map. Proceedings of the IEEE 69: 14
という方法を使っているのではないかと思われます。
元の論文は、こちら

上記のアルゴリズムについての解説は、以下の論文にのっていました。

計算根拠ということで、ちょっと専門的になったかもしれませんが、参考までに。


ありた

unread,
May 14, 2019, 6:30:56 PM5/14/19
to QGIS初心者質問グループ
こんにちは

検算等していませんが、具体的な処理は以下と思われます。

アルゴリズムの説明は wata909 さんに挙げていただいてますが、周囲9マスで考え、
中央列の重み2、左右列の重み1として計算した x 方向、 y 方向それぞれで傾斜から
合成の傾斜を出し、 atan で角度になおしているようです。

daty...@gmail.com

unread,
May 14, 2019, 9:06:13 PM5/14/19
to QGIS初心者質問グループ
wata909様
あたり様

ご返信ありがとうございました。

ものすごく難しい計算内容であることがわかりました。(小生では計算内容は理解するには・・・)

10m×10mのメッシュを作成し、そのメッシュの傾斜角(度)を、数字的根拠(数式)を示せればと思って、
このラスタ解析を利用しようとしましたが、別の方法を考えたいと思います。(もっと単純化と考えていました)

この度は、誠に有難うございました。


ありた

unread,
May 15, 2019, 8:44:27 AM5/15/19
to QGIS初心者質問グループ
こんにちは
文献等をちゃんと読めてないので、間違ってるかもしれませんが。

傾斜の角度は基本的には「 atan(垂直距離÷水平距離) 」で間違いありません。


傾斜の計算対象であるメッシュ(グリッド) z11 を中心に以下のような 3x3 のメッシュを
考えることとします。(メッシュサイズは m とします。)
z00 z10 z20
z01 z11 z21
z02 z12 z22


まず x 方向(東西方向)の傾斜を求める方法として「垂直距離÷水平距離」ですので
対象メッシュより東側の z11 と z21 に着目すると (z21 - z11 ) / m となります。
また、対象メッシュより西側の z01 と z11 に着目すると (z11 - z01) / m となります。
傾斜の代表値として、これらの平均をとると (z21 - z01) / (2m) となります。

同様に、 y 方向(南北方向)の傾斜として (z12 - z10) / (2m) が考えられます。

これはあくまで x 方向と y 方向それぞれに対する傾斜( dz/dx 及び dz/dy )なので、
実際の傾斜(斜め方向の傾斜)は  √( (dz/zx)^2 + (dz/dy)^2 ) で求まります。

まとめますと、「垂直距離÷水平距離」= √( ((z21-z01) / (2m))^2 + ((z12-z10) / (2m))^2 ) で
求まり、この値を atan すると角度が求まります。


この傾斜アルゴリズムは Zevenbergen & Thorne によるもののようです。



一方、 Horn の式は、 x 方向の傾斜を当該行の傾斜 (z21-z01) / (2m) だけでなく、
上下の行における傾斜である (z20-z00) / (2m) と (z22-z01) / (2m) も考慮する方法のようです。
ただし、中央行の方を重視するために重みを 1, 2, 1 とし
dz/dx = ( (z20-z00) / (2m) + 2*((z21-z01) / (2m)) + (z22-z01) / (2m) ) / 4 とします。

同様に y 方向の傾斜である dz/dy も求め、 √( (dz/zx)^2 + (dz/dy)^2 ) を計算します。
このようにして得られた傾斜を atan で角度になおす方法が Horn の方法です。



記号がいろいろ出てきてややこしいですが、計算自体は単純ですので、決して難しい
計算ではないと思いますので、落ち着いて計算してみるとよいかと思います。

daty...@gmail.com

unread,
May 15, 2019, 7:22:24 PM5/15/19
to QGIS初心者質問グループ
ありた 様

大変ご丁寧に教えて頂きまして、誠に有難うございます。
上記2つの計算方法の違いや、Hom式の重みの意味も概ね理解でき、感謝しております。

この場をお借りし、もう2つ、教えて頂けたら、お願いします。

(1)セル内の値の変更
添付した区分図1で、傾斜区分図で、45度以上は赤色としております。(中の数字は、角度)
この赤色の箇所は、実際には、緩い斜面なので、周囲と同じ紫色にしたいと考えております。
そこで、地物情報にある傾斜の値を変更したいのですが、どのようにすればよろしいでしょうか。
(メニュ→ラスタ→解析→傾斜 より作成したTIFデータについて、その一部のセルの値を変えるにはどうすればよいのか)

(2)もとのTIFの標高の変更
上記と同じ質問になるかもしれませんが、
ラスタ解析(傾斜)するまえの、元のTIFデータ(地理院からダウンロードし、標高DEMに変換したもの)について、

区分図1.jpg

標高DEM.jpg

10m×10mの一部のセルの標高データを変えるには、どのようにすればよろしいでしょうか。(図:標高DEM[)
(できれば、図面をみながら、マウスでセルを指定して、標高を変えられると間違わずに作業ができるのですが)

どうか宜しくお願いします。

福岡

unread,
May 15, 2019, 11:09:19 PM5/15/19
to QGIS初心者質問グループ
こんにちは

ググってみたら「Serval」というプラグインがありました。
試しにインストールしてみましたが、お望みの機能があるように思います。

How to modify single Pixel values in QGIS?

大藪

unread,
May 16, 2019, 1:10:18 AM5/16/19
to QGIS初心者質問グループ
福岡 様

上記のServalを使用してみました。とても素晴らしい機能です!びっくり!

皆様、この度は誠に有難うございました。


Reply all
Reply to author
Forward
0 new messages