プロジェクト

全般

プロフィール

QGIS DEMから陰影段彩

数値標高モデル(DEM)のデータをもとに、陰影と段彩を付けることで地形を立体的に見えるようにするとともに、高さの把握が容易になるようにします。

基盤地図情報の数値標高モデルから陰影段彩

数値標高モデル

数値標高モデルの入手

国土地理院 基盤地図情報 ダウンロードサービスのサイトから、数値標高モデルを入手します。今回は例題として、石垣島の5mメッシュを入手します。基盤地図情報のダウンロードには無償のログインアカウントの作成が必要です。

基盤地図情報 ダウンロードサービス
ここから、[数値標高モデル]のリンクをたどります。

1mメッシュ、5mメッシュ、10mメッシュの選択があります。チェックを付けたデータの提供がないメッシュの区画はグレーとなります。
2025年9月時点で石垣島はメッシュの番号が3624で、5mメッシュ(5B 写真測量)と10mメッシュ(10B 地形図の等高線)のデータが提供されています。ここでは5mメッシュにチェックを付けて(①)、地図の3725をクリック(②)します。すると、検索結果リストに数値標高モデルのリストが表示されます。[ダウンロードリストに全てを追加]をクリックし(③)、[ダウンロードリスト]をクリックします(④)。

ダウンロードリストに、メッシュ番号の362430, 362431, 362440, 362441, 362442, 362450, 362451, 362452, 362461, 362462, 362472 に対応したファイルが表示されていることを確認して、[ダウンロード等へ]をクリックします。

ダウンロードファイルリストで[全て選択]をクリックし、[まとめてダウンロード]をクリックすると、選択したメッシュの数値標高モデルのファイル(例:FG-GML-362430-DEM5B-20250609.zip)がまとめられたzip形式ファイルがダウンロードされます。

まとめたzip形式から、数値標高モデルのファイルを解凍しておきます。個々の数値標高モデルのファイル(例:FG-GML-362430-DEM5B-20250609.zip)はzipファイルのままで構いません。

数値標高モデルの読み込み

プラグイン QuickDEM4JP を使用して、数値標高モデルを読み込みます。

ツールバーからQuickDEM4JPプラグインのアイコンをクリック(①)、数値標高モデルのファイルを選択(②)、数値標高モデルの地理座標系(JGD2011)を選択(③)、読み込んだ数値標高モデルをTIFF形式ファイルで保存するパスを設定(④)します。

  • 数値標高モデルの地理座標系は、2025年7月以降に生成されたデータはJGD2024、それ以前のデータはJGD2011となります。
  • 多数の数値標高モデルのファイルを読み込む際、1つ1つ指定して実行するのはとても手間なので、各ファイルからxmlファイルを取り出してこれを1つのzipファイルにまとめ、これをプラグインに入力するとよさそうです。

読み込み後は次のようになります。

1つのTIFFファイルに結合

ラスタレイヤが複数に分かれていると、カラーランプの勾配の不一致、各ラスタ毎に同じ設定をするなどの手間がかかり不便なので、1つのレイヤにまとめます。まとめ方として、仮想レイヤで1つにまとめる方法と、データファイルを1つにまとめる方法とがあります。今回は、データファイルとして1つのTIFFファイルにまとめます。

  • [ラスタ]メニュー > [Miscellaneous] > [結合(gdal_merge)] を実行
  • 入力レイヤ右端の[…]をクリック、レイヤをすべて選択
  • 出力レイヤ右端の[…]をクリック、保存するTIFFファイルのパスを指定

結合済みのTIFFファイルをレイヤに表示したあとは、結合前のレイヤは削除しています。

レンダリングタイプによる陰影段彩

DEMのラスタに対してレンダリングタイプを設定することで陰影と段彩を実現します。
概略手順は次です。

  • 陰影用のラスタを複製し、レンダリングタイプで陰影を設定
  • 段彩用のラスタを複製し、レンダリングタイプで単バンド擬似カラーを設定

陰影のラスタ

  • 読み込んだラスタを複製します。ラスタのレイヤを右クリックし、[レイヤを複製]を実行し、名前を変更します(3725_hillshadeなど)。
  • レイヤをダブルクリックし、左ペインで[シンボロジ]を選択、右ペインで[レンダリングタイプ]を[陰影図(hillshade)]に変更します。

次のように陰影表示されます。

問題と解決(その1)

上述の陰影表示は次の問題があります。

  • 陰が暗い(陰影が強調されている?)
  • 拡大すると次のようにノイジーな表示

1つ目の問題は、ラスタレイヤの数値標高モデルの座標系(CRS)はJGD2011で、XY面の単位は度(緯度経度座標系)ですが、Z軸の単位はm(標高値)であることに起因します。緯度経度の1度は約110,000mのため、Z係数がデフォルトの1では陰影計算時に高さの値の単位が度として扱われるため11万倍の高さの陰影となってしまいます。
解決方法としては、Z係数をmから度に対応させるよう0.000009 (1/110,000)とするか、ラスタレイヤの座標系をXY面の単位がmである平面投影座標系に変換するかになります。
2つ目の問題は拡大したときに標高値の補間(リサンプリング)がデフォルトで再近傍法となっているためです。解決法は、リサンプリングをバイリニア法など高度な補間方法に変更します。

  • Z係数を 1から0.000009 に変更
  • リサンプリングを[再近傍法]から[バイリニア法(2x2カーネル)]に変更

すると次の表示になります。

改善

単一光源での陰影は、光と影の差が強調されすぎてしまうので、複数光源に変更します。レイヤのプロパティでシンボロジの[多方向シェーディング]を有効にします。

多方向シェーディングなし 多方向シェーディングあり

あとは、お好みで微調整で輝度やコントラストなどを変更します。

段彩のラスタ

単バンド擬似カラーで、標高の値に応じた色付けをカラーランプで設定します。QGISのデフォルトでは標高に適したカラーランプがないのですが、近しいものを使った設定を記します。

  • 元のラスタを再度複製します。名前を変更します(3725_tintなど)。
  • レイヤをダブルクリックして「レイヤプロパティ」ダイアログを表示、左ペインで[シンボロジ]を選択、右ペインで[レンダリングタイプ]を[単バンド擬似カラー]に変更します。
  • カラーランプの右端[▼]をクリックし、[全カラーランプ] > [BrBG]を選択

  • カラーランプの右端[▼]をクリックし、[全カラーランプ] > [BrBG]を選択
  • リサンプリングの拡大を[バイリニア法(2x2カーネル)]に変更

段彩のレイヤは次のように表示されます。

陰影と段彩の重畳

次の操作として、標高による陰影と高度による段彩をうまく重ね合わせます。重ね合わせる方法としては、上のレイヤの透明度を

レイヤの順序は、陰影を上に、段彩を下におきます。そして、陰影レイヤの混合モードを[乗算(Multiply)]に設定します。

混合モードを活用すると、複数のレイヤを重ね合わせてそれらの表示を混合して描画することができます。陰影段彩では、標高値に応じた彩色をする段彩のレイヤと、標高の形状に対して光源からの照射に対応した陰影をするレイヤとを合成することができます。

次の画面は、段彩レイヤの混合モードを乗算にすることで、陰影レイヤの表示色と段彩レイヤの表示色が掛け合わせられ、結果

段彩用のカラーランプ設定

上述では、QGIS標準搭載のカラーランプ BrBGを反転させたものを段彩の彩色に使用しましたが、一般的な地図の彩色とは少々異なっています。
より地図の彩色に近いカラーランプを使用する方法を記載します。

カラーランプの作成

レイヤのプロパティのシンボロジの設定で、次を実施します。

  • レイヤーのプロパティを開き、レンダリングタイプを[単バンド擬似カラー]に変更
  • カラーランプの右端[▼]をクリックし(①)
  • [カラーランプを新規作成]をクリック(②)
  • カラーランプ型のダイアログが表示されるので、右端[▼]をクリック(③)
  • [カタログ:cpt-city]をクリック(④)し、[OK]をクリック

Cpt-Cityカラーランプ画面が表示されるので、左ペインで[Topography]を選択、右側のリストから [elevation]または[DEM_screen]などを選択します。

カラーランプの種類と段彩表示および陰影段彩表示の結果を次に示します。

カラーランプ BrBG反転 elevation DEM_screen DEM_print
段彩表示
陰影段彩表示
カラーランプのインポート

標高に適したカラーランプの設定を入手しインポートすることで、より地図に近い表示をすることができます。
https://hub.qgis.org/styles/28/

上述から、Elevation color rampsをダウンロードし、作業ディレクトリに展開します。
[設定]メニュー > [スタイルマネージャ]をクリックし、[インポートとエクスポート] > [アイテムのインポート]で展開したファイルを選択し、[インポートするアイテムを選択]欄に表示されたカラーランプを選んで[インポート]します。

海の表示

これまでの陰影・段彩では、海が区別できていません。基盤地図情報の数値標高モデルでは、海域はNODATAとなっていますが、QuickDEM4JPプラグインで読み込んだラスタ(TIFFファイル)は、NODATAを標高値 0 としているようで、段彩の色は0mにおける彩色がされて陸域と区別がつかない表示になっています。

そこで、標高値がちょうど0mの箇所にのみ色を付与するレイヤを作成します。

  • DEMのラスタレイヤを複製
  • レイヤのプロパティを開き、レンダリングタイプを[カテゴリ値パレット]に設定(①)
  • [+]をクリックし(②)、値0 の色を海を表現する色をクリック(③)
  • HTML表記法に、例えばウルトラマリンブルーを表す #4052a2 を設定(④)
  • [OK]をクリック(⑤)

標高0mの部分が青色に表示されます。

参考:気象庁の気象情報表示における海の色について、次の資料において、 水色(RGB: 135,169,210) または 濃い青色(RGB:59,69,128) を使う指針が提示されています。
気象庁ホームページにおける気象情報の配色に関する設定指針

陰影・段彩のラスタ生成


8日前に更新