QGIS:流況計算結果から区間水量を求める

アイキャッチ, QGIS活用 iRIC

河川の総水量を求めたり、水量/流量で流下時間を概算したりするなど、流況計算結果から区間水量を求めたいことがあります。ここではiRIC/River2Dという流況計算ソフトから区間水量を求める方法をまとめます。iRIC/River2Dに限らず、「X, Y, 水深」という形でcsvファイルを出力できるソフトに対応できます。

QGISはフリーでオープンソースの地理情報システムです。

iRICから計算結果をエクスポート

iRICのプロジェクトで「ファイル」-「エクスポート」ー「計算結果」を選び、csvファイルで最終的な計算結果だけを出力します。(実は「形式」としてESRIシェープファイルも選べますが、私の場合、iRICが飛んでしまいました。)出力が終わればiRICは閉じてもかまいません。ちなみに、River2Dは有限要素法で計算しているので、計算ノードが整列していない非構造格子です。ですので、単にDepthを平均するだけでは実際の平均水深にはならないためにGISでの処理が必要になります。ノードが整列した構造格子でも、河川の曲がりに対応するなどしていると、計算ノードに粗密が生じるのでやはりGISでの処理が必要です。

iRICから計算結果をエクスポート
iRICから計算結果をエクスポート

CSVから不要なデータを削除する

出力されたCSVをExcelで開いてみると、下図左のように不要なデータが含まれていますので、下図右のようにX, Y, Depthを残して後は削除します。

CSVから不要なデータを削除する
CSVから不要なデータを削除する

QGISにCSVをポイントとして読み込む

QGISを開き、「レイヤ」ー「レイヤを追加」-「CSVテキストレイヤを追加・・・」を選びます。「データソースマネージャ|CSVテキスト」ダイアログが開きますので、ファイル名、レイヤ名、ファイル形式、X属性、Y属性、ジオメトリのCRSを設定します。

QGISにCSVをポイントとして読み込む
QGISにCSVをポイントとして読み込む

読み込まれたら、念のために属性テーブルを開いて、すべてのカラムが実数になっていることを確認します。もし整数になっているカラムがあれば、CSVファイルをエディタで開いて、最初のデータだけで良いので小数点とゼロをつけ、再度読み込めば良いと思います。

読み込まれたデータが実数であることを属性テーブルで確認する
読み込まれたデータが実数であることを属性テーブルで確認する

CSVレイヤをポイントシェープファイルにエクスポートする

CSVを直接読み込んだレイヤではこの後の解析ができないようですので、エクスポートしてポイントシェープファイルにしておきます。この作業でポイントシェープファイルがレイヤパネルに登録されるので、CSVを読み込んだレイヤは削除してしまってもかまいません。

読み込んだデータをシェープファイルとしてエクスポート
読み込んだデータをシェープファイルとしてエクスポート

ポイントをDepthをZ値としたラスタに変換する

プロセシングツールボックスから「GDAL」-「グリッド(線形)」を選びます。グリッドには他にも多くの補間法が選べますが、今回は流況計算の補間法と同じ「線形」にしました。「入力レイヤ(点)」にはポイントシェープファイル、「検索距離」は補間するための三角要素を探索する距離ですが、-1.0は無限遠です。水路が細かく分岐している場合などでは、隣の水路がつながってしまったりする恐れがあるので、ポイント間距離の最大値ぐらいを入れておいた方が良いかもしれません。「nodata値」はデフォルトはゼロで、下図では-9999999.0を入れていますがゼロのままでもかまいません。「内挿するZ値の属性」にはDepthを指定します。あとは出力ファイル名を決めて「実行」します。

ポイントシェープファイルからグリッドツールでDEMを作成
ポイントシェープファイルからグリッドツールでDEMを作成

すると、DEMが生成されます。

DEM作成結果
DEM作成結果

このプロセスではラスタのセルサイズを決めるところがありませんでしたので、念のためにラスタのセルとポイントの関係を拡大して確認しましたが、丁度よいセルサイズが自動的に選ばれているようです。

ポイントデータの密度とDEMのセルサイズの関係
ポイントデータの密度とDEMのセルサイズの関係

マスクを作成する

この作業は不要な場合もあると思いますが、今回は流下時間を概算するために水が流れている部分だけの水量を求めたいので、死水部分と下流端を除いたマスクを作ります。まずポリゴンシェープファイルを作成します。

マスクとするポリゴンのシェープファイルを作成
マスクとするポリゴンのシェープファイルを作成

編集モードに入り、不要な部分を除外するようにポリゴンを作っていきます。ラスタでも河川外は水深ゼロなので含まれていても実害はありませんし、概算なのでサッとやってしまいます。ポリゴンができたら、編集ツールバーの「レイヤ編集内容の保存」しておくことを忘れないでくださいね。忘れると次のステップでエラーが出ます。

マスクポリゴン作成結果(半透明のピンク色の部分)
マスクポリゴン作成結果(半透明のピンク色の部分)

マスクレイヤでラスタを切り抜く

「ラスタ」ー「抽出」ー「マスクレイヤによる切り抜き」で、注目範囲を切り抜きます。

マスクレイヤによる切り抜きダイアログ
マスクレイヤによる切り抜きダイアログ

結果は下図のようになりました。

マスクによる切り抜き結果
マスクによる切り抜き結果

水量を計算する

プロセシングツールボックスから「ラスタのサーフェス体積」を起動します。「基準値」はゼロ、「方法」は「基準値を超える場合だけ」です。出力オプションは2つありますが、どちらも同じ内容が出力されるので一方だけで十分です。

ラスタのサーフェス体積ツール
ラスタのサーフェス体積ツール

実行すると以下が得られます。

ラスタのサーフェス体積ツール実行結果
ラスタのサーフェス体積ツール実行結果

以上です。工数は多めですが、時間がかかる部分はありませんので簡単にできると思います。Have fun!

QGISまとめ:自然・環境調査のためのQGIS最速マスター
QGISまとめ:専門家も使っているフリーのGIS。Windows, mac, Linuxで使用できますが、iphoneは非対応。最速マスターを目標に、自然・環境調査のために最低限必要な情報を厳選しています。

コメント

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