QGISでDEMからiRICの地形ファイルをつくる

iRIC

UAVなどで作成したDEMラスタは直接iRICの地形ファイルとしてインポートできますが、iRICが突然終了したり動作が重くなったりすることもあるようです。QGISで動作の軽い地形ファイルをつくる手順をお教えします。

DEMをクリッピングする(オプション)

ピクセル数の大きなDEMをそのまま使用すると、iRICでの操作が非常に重くなることがあります。そのような場合には、まず計算に関係ない範囲のDEMをあらかじめ除去しておいた方が良いでしょう。河道内に樹林が覆いかぶさるなど、誤った標高値が記録されている部分などもこの段階で除去します。

下図ではまず、UAVで作成したオルソ画像とDEMをQGISに読み込み、オルソ画像のみ表示しています。

使用したオルソ画像
使用したオルソ画像

次に、必要な部分だけを切り出すマスクとなるポリゴンシェープファイル mask.shpを新規作成します。「レイヤ」ー「レイヤを作成」ー「新規シェープファイルレイヤ」です。座標系はDEMと同じものにしましょう。

ポリゴンシェープファイルを新規作成

作成したmaskレイヤを選択①し、編集モード②にして河川部分を囲ってゆきます。河道内に覆いかぶさる樹林などはここで除去③しておいた方が、iRICでの作業が楽になります。下図ではオルソを参照しながら樹林を除外していますが、標高異常値が除去できているか、念のためにDEMでも確認してくださいね。

かわのさん
かわのさん

iRICで格子作成する時に計算領域を改めて指定するので、河川ぎりぎりより余裕をもって囲んだ方がiRICでの作業性が良いです。下図はちょっとぎりぎりすぎますね。

下線部分を囲うポリゴンを作成する。河道にかかる樹林などは除去しておく。
下線部分を囲うポリゴンを作成する。河道にかかる樹林などは除去しておく。

囲み終えたら、編集結果を保存して編集モードを終了しておくことを忘れないように!保存しておかないと、次のステップで「マスクが無い」と怒られますよ。

最後に、「GDAL」-「ラスタ抽出」ー「マスクレイヤで切り抜く」ツール①でDEMを切り抜きます。


DEMを作成したmask.shpで切り抜く。
DEMを作成したmask.shpで切り抜く。

DEMを平滑化する(オプション)

河川の流れの計算のためには河床の礫などを反映したDEMの細かな凹凸が邪魔になることもあります。そのような場合にはDEMを平滑化しても良いでしょう。

平滑化にはr.mapcalc.simpleツールを使います。このツールは平滑化専用ツールというわけではなく、複数のラスタの間で演算を行う汎用ツールです。ラスタAにDEMを指定①し、式に対象ピクセルと周辺8セルの平均値を計算する以下の式②を入力します。出力ファイル名③を指定して実行します。下図ではこの作業を1回から3回繰り返した結果を比較しています。

(A[-1,-1]+A[0,-1]+A[1,-1]+A[-1,0]+A[0,0]+A[1,0]+A[-1,1]+A[0,1]+A[1,1])/9
平滑化を繰り返した結果の比較
平滑化を繰り返した結果の比較

本稿では平滑化を3回行ったDEMを使うことにしました。

すだくん
すだくん

地形をいくら詳細にデータ化してもiRICの格子でそれを完全に再現することは難しいから、大胆に平滑化してもいいかもね。河床の礫の凹凸は粗度係数で表現できるからね。

DEMをxyz形式に変換する(ここが本質)

r.out.xyzツールを使ってDEMをテキストファイルに変換します。変換されたファイルはそのまま点群データとしてiRICにインポートできます。また、このステップで出力する点群の粗さを調整できます。

r.out.xyzツールを開き、Input rasterの右端の[・・・]①をクリックして処理したいDEM②を選択しOK③します。Field separatorはコンマ④にしましょう。領域のセルサイズ⑤はデフォルトでは0(DEMの解像度(=ここでは14cm)でxyzファイルを出力)ですが、データがあまりに多いとiRICが重くなるので下図では0.5(50cm間隔)に変更しています。出力ファイル名⑥を指定し、実行⑦します。

下図中段右がxyzファイル、下段の2枚はセルサイズ⑤を変えた時の違いを比較しています。

r.out.xyzでDEMをテキストファイルに変換する
r.out.xyzでDEMをテキストファイルに変換する

iRICでxyzファイルをインポートしてみる

iRICを適当なソルバーで起動し、プリプロセッサの地理情報でElevationを右クリックして「インポート」ー「点群データ」でxyzファイルを選択することで、作成した地形ファイルを読み込むことができます。

分割線などをうまく使って樹林などでできた穴を埋めておきましょう。下図では、点群データ1のプロパティから表示モードを「点」に変更した上で、護岸上、護岸下、流路内に3本の分割線を作成し、点群が抜けていても地形が再現されるよう工夫しています。

xyzファイルをiRICにインポートしてみる
xyzファイルをiRICにインポートしてみる

上図では「点」表示のままですが、点群データ1のプロパティで「補間された面」表示にすると分割線部分の地形がどうなったか確認できますよ。

簡単でしょう? Have fun!                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    

かわのさん
かわのさん

私のデータは分割線で埋められないほどの大穴が開いちゃってるの。どうしたらいいかなあ。

すだくん
すだくん

QGISでもiRICでもいろいろな方法が考えられるけど、QGISでやるなら、まずxyzファイルを読み込んでポイントシェープファイルにエクスポートし、まわりの点の標高とか地形図とかを見ながら新しい点で埋めていけばどうかな。DEMほどの密度はなくても、iRICで分割線を作れそうな程度になればいいよ。最後にフィールド計算機でX, Y座標フィールドをくっつけてからcsvファイルにエクスポートしたらどうだい?

かわのさん
かわのさん

なかなか複雑なことを簡単に言うのね。いいわ、リンクを見ながらやってみる。

コメント

タイトルとURLをコピーしました