チュートリアル: ステージ体積曲線を作成する

Site: OpenCourseWare for GIS
Course: QGIS上級者向けチュートリアル
Book: チュートリアル: ステージ体積曲線を作成する
Printed by: Guest user
Date: Monday, 22 April 2024, 5:38 AM

1. 概要

ステージ体積曲線(stage volume curve)もしくはステージ容量曲線(Stage strage curve)は、ある一定の水位の湖や穴の体積がどのくらいあるかを測ることができます。体積よりも水位を計測することの方が遥かに容易なので、一度曲線を作成してしまえば簡単な方法で体積を知ることができます。

このチュートリアルでは、リグナイト鉱山の窪み用のステージ体積曲線を作成します。この方法は湖でも同様に行えます。

このチュートリアルを終えると、以下のことができるようになります。

  • DTMで特定の標高以下の体積を計算する
  • PyQGISを使ったステージ体積曲線の作成


2. 特定の標高以下の体積を計算する

まず、プロセッシングツールを使用してDTMの特定の標高以下の体積を計算します。

1. QGISを起動します。

2. メインメニューで、プロジェクト | 開く | GeoPackageの順に進みます。

3. GeoPackageからプロジェクトを読み込むダイアログで、提供されたdata_stagevolume.gpkg GeoPackage を参照し、StageVolume プロジェクトを開きます。

このプロジェクトでは、SRTM 1-Arc Second DEMをUTMゾーン32Nに再投影し、鉱山の窪地周辺をクリップしています。DEMはカラーランプでスタイル付けされ、レンダリングされた陰影起伏図とブレンディングされています。

4. プロセッシング | ツールボックスと移動し、プロセッシングツールボックスパネルを開きます。

5. プロセッシングツールボックスで、ラスタ解析 | ラスタのサーフェス体積を選択します。

6. ラスタのサーフェス体積ダイアログで、入力レイヤとしてDTMを選択し、バンド番号をそのままにして、ここでは0m以下の体積を計算したいので、基準値(ベースレベル)を0mにしています。選択の基準基準値を下回る場合だけにします。体積計算のレポートはhtmlファイルです。volumebelowzero.htmlという名前を付けます。体積計算の表は dbf ファイルです。dbfファイルを選択できないので、volumebelowzero.shpとして保存します。

7. 実行をクリックします。

ログタブに次のように結果が出力されます: 'VOLUME' : -1155480399.7627096

赤くエラーが出ています。これはdbfファイルだけでシェープファイルが作成されなかったからです。このエラーは無視しても良いです。

8. Closeをクリックしてダイアログを閉じます。

プロセッシングツールボックスの下のほうに結果ビューアがあると思います。

9. 体積計算のレポートまたはhtmlリンクをダブルクリックしてください(同じものにリンクしています)。ブラウザで開きますので、結果を確認してください。

10. ブラウザ パネルからvolumebelowzero.dbfファイルを地図キャンバスにドラッグします。

11. レイヤーパネルのvolumebelowzeroテーブルを右クリックし、属性テーブルを開くを選択して結果を確認します。

12. ステップ5からの手順を繰り返して他の標高でも試してみてください。

次のセクションでは、多くの標高ごとの体積を計算し、1つのテーブルに値を格納ししていきます。

3. ステージ体積テーブルを作成する

前回のセクションでは特定の標高に対応する体積をひとつずつ計算しました。

このセクションでは、ある標高範囲内の体積を反復的に計算し、その結果を 1 つのテーブルに保存します。そのためには、ラスタのサーフェス体積ツールを使用した PyQGIS スクリプトを記述する必要があります。

実行したプロセッシングツールはすべてプロセッシングツールボックスの履歴に保存されます。それをスクリプトに利用する方法を見てみましょう。

1. プロセッシングツールボックスで  をクリックして履歴を開きます。

Algorithm history

過去のセクションで実行したものを見ることができます。processing.runの後に何が書かれているかみていきましょう。

native: rastersurfacevolumeとツールの名前が書かれています 。これには、ダイアログからのすべての入力を含むディクショナリが含まれています。つまり、これをコピーして、PyQGIS スクリプト内のディクショナリの一部を変数に置き換えることができます。ここでは、DTM の最小の標高から最大の標高までの異なる レベルの値に対して反復処理を行う必要があります。

2. Closeをクリックして履歴ダイアログを閉じます。

3. メインメニューの プラグイン | Pythonコンソール からPythonコンソールを開きます。

4. Pythonコンソールでは、  をクリックしてエディタを開きます。

5. このGithubのページに進みます: https://github.com/jvdkwast/PyQGIS_Hydro/blob/master/scripts/StageVolume.py

6. Pythonコードをエディタにコピーして、StageVolume.pyとしてスクリプトを保存します。

コメントを読んでコードで何をしているのか理解してください。

7. 変更点はprojectPathとinputRasterDEMを自分の環境に置き換えるだけです。

8. スクリプトを保存し、  をクリックしてスクリプトを実行します。

Pythonコンソールには次のように結果が表示されます。

スクリプトにより、DEMレイヤと StageVolume テーブルがレイヤパネルに追加されました。

9. StageVolumeを右クリックし、属性テーブルを開くから確認しましょう。

Stage Volume Table

メートル単位のLevel フィールドとkm3単位の体積を持つ VolAbsKm3 フィールドを含むステージ体積テーブルが作成されました。

次のセクションでは、Data Plotlyプラグインを使用して、ステージ体積曲線を作成します。

なお、GitHubからStageVolumeToolを処理ツールボックスに追加することもできます。すると、ツールにはダイアログが表示されます。ツールはこちらからダウンロードできます。: https://github.com/jvdkwast/PyQGIS_Hydro/blob/master/scripts/StageVolumeTool.py

4. Data Plotlyプラグインでステージ体積曲線を作成する

これでステージ体積テーブルが作成できたので、Data Plotlyプラグインを使って簡単にステージ体積曲線を作成することができます。

1. プラグインリポジトリからData Plotlyプラグインをインストールします。

2.  をクリックして、Data Plotlyプラグインを開きます。

3. Plot typeScatter Plotを選び、LayerStageVolumeを選びます。X fieldVolAbsKm3 をY fieldLevelを選びます。

4. をクリックします。

5. Show legendのチェックを外します。 Plot titleStage Volumeに設定し、 Legend titleをブランクにします。X label を Volume (km3) に Y label を Level (m)に変更します。

6. をクリックします。

ボタンを使って、画像として結果を保存できます。.

ステージ体積曲線を見ると、窪地の境目の高さくらいの86.4mで急に変わっているのがわかります。