7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ブラウザ版GeoLibreでデスクトップアプリを使用しないお手軽水文解析をやってみた

7
Posted at

image.png

はじめに

DEM(数値標高モデル)を使った代表的な解析の一つに、流域解析があります。

地形の高低差から水が流れる方向を計算し、同じ出口へ流れ込む範囲をまとめることで、流域界を抽出できます。

流域解析は、河川管理、洪水解析、土砂災害、森林管理など、さまざまな分野で利用されています。ただし、DEMから流域界を作成するには、通常は次のような処理が必要です。

  • DEMに含まれる窪地の補正
  • 各セルの流向計算
  • 上流から流れ込む量の計算
  • 流向に基づく流域の分類
  • 流域ラスターのポリゴン化

今回は、オープンソースのGISアプリケーションであるGeoLibreを使い、DEMから流域界ポリゴンを作成してみます。

GeoLibreは、Webブラウザ、デスクトップ、モバイル、Jupyter Notebookなどで動作するGISプラットフォームです。プロセシングから実行する解析ツールはWebAssembly上で動作し、ブラウザ版でもデータを端末内に保持したまま処理できます。

Webブラウザで高度な地理空間の解析処理ができることは画期的だと思います。

今回実行する処理は、次の3つです。

image.png

GeoLibreとは

image.png
https://geolibre.app/

GeoLibreは、地理空間データの表示、探索、解析を行うためのオープンソースGISです。

一般的なWeb地図のようにデータを表示するだけでなく、地形解析、水文解析、リモートセンシング、ベクター解析などの処理をブラウザ上で実行できます。

GeoLibreのプロセシングには、Whitebox Next Gen由来のツールやGeoLibre独自のWebAssembly対応ツールが収録されています。

デスクトップアプリケーションを自由にインストールできない環境でも、Webブラウザを利用できれば水文解析を試せる可能性があります。

そのため、次のような場面での活用が考えられます。

  • アプリケーションをインストールできない業務用PC
  • QGISなどを導入する前の簡易的な検証
  • WebGIS上で解析結果を確認したい場合

使用するデータ

今回は、基盤地図情報からダウンロードしたGeoTIFF形式の10mDEMを使用します。

DEMを準備するときは、次の点を確認しておきます。

  • 標高値が正しく格納されている
  • NoData領域が適切に設定されている
  • 解析対象より少し広い範囲を含んでいる
  • 可能であればメートル単位の投影座標系になっている

流域解析では、DEMをどの範囲で切り出すかが重要です。

今回使用するBasinsは、DEMの端へ流れ出る流路をもとに流域を分類します。そのため、流域の途中でDEMを切ってしまうと、本来とは異なる流域界が作られることがあります。

なお、利用したGeoLibreのバージョンはv2.4.1です。

image.png

DEMをGeoLibreへ読み込む

最初にGeoLibreを起動し、解析対象のDEMを読み込みます。

GeoLibreのWeb版を使用する場合は、ローカルファイルからGeoTIFFを選択します。

image.png

全体の処理フロー

今回作成するデータの関係は、次のようになります。

手順 処理 入力 主な出力
1 Flow Accum Full Workflow 元のDEM 補正済みDEM、流向ラスター、流量累積ラスター
2 Basins 流向ラスター 流域ラスター
3 Raster To Vector Polygons 流域ラスター 流域界ポリゴン

image.png

ポイントは、Flow Accum Full Workflowから3つのラスターが出力されることです。

このうち、次のBasinsで使用するのは、流向ラスターの出力結果です。

流量累積ラスターの出力結果は流域界の作成には直接使用しませんが、水が集まりやすい谷筋や河川候補を確認するために利用できます。

1. Flow Accum Full Workflow

最初に、GeoLibreのプロセシングからFlow Accum Full Workflowを実行します。

image.png

このツールは、DEM内の窪地を解消し、次の3つのラスターを一括で作成します。

  1. 水文補正済みDEM
  2. 非発散型の流向ラスター
  3. 流量累積ラスター

Input DEMに準備したDEMのレイヤを設定して実行します。

image.png

Flow Accum Full Workflow Breached Dem Output

Flow Accum Full Workflow Breached Dem Outputには、水文解析用に補正されたDEMが出力されます。

image.png

元のDEMには、周囲より低く、外へ水が流れ出せない窪地が含まれていることがあります。

人工的な窪地が残っていると、流路が途中で停止し、正しい流向や流域を計算できません。Flow Accum Full Workflowでは、このような窪地を解消したDEMが自動的に作成されます。

image.png

Flow Accum Full Workflow Output Pointer

Flow Accum Full Workflow Output Pointerには、各セルから水がどの方向へ流れるかを表す流向ラスターが出力されます。

流向は、周囲にある8セルのうち、どのセルへ水が流れるかを数値で表現したものです。

↖  ↑  ↗
←  ■  →
↙  ↓  ↘

このラスターは、そのまま地図として眺めるためのものではなく、後続の水文解析で使用する中間データです。

今回の流域界作成では、このFlow Accum Full Workflow Output PointerBasinsの入力として使用します。

image.png

Flow Accum Full Workflow Output

Flow Accum Full Workflow Outputには、各セルへ上流からどれだけの水が集まるかを示す流量累積ラスターが出力されます。

image.png

値が小さいセルは尾根や斜面上部に位置し、値が大きいセルは谷筋や河川に相当する可能性があります。

流量累積ラスターは今回の流域界作成には直接使用しませんが、次のような解析へ発展させられます。

  • 河川候補セルの抽出
  • 河川ネットワークの作成
  • 集水面積の確認
  • 湿潤度指数の計算
  • 流域出口候補の確認
  • 出口ポイントのスナップ

2. Basins

続いて、Basinsを実行します。

Basinsは、D8流向ラスターを使用して、同じ出口へ流れ込むセルをグループ化するツールです。

GeoLibreのプロセシングメニューから「水文 > Watersheds & Basins > Basins」開きます。

image.png

入力には、Flow Accum Full WorkflowOutput Pointerで指定したファイルを設定します。

image.png

処理を実行すると、流域ごとに異なる整数値が割り当てられたラスターが作成されます。

例えば、次のようなイメージです。

流域A → 1
流域B → 2
流域C → 3
流域D → 4

GeoLibreでカテゴリ別に色分けすると、それぞれの流域を確認しやすくなります...と言いたいところですが、GeoLibreだとラスタをカテゴリ値ごとに色分けする機能がまだないので、QGISで可視化してみます。

image.png

上図のように各流域ごとに整数値が振り分けられているので、色を塗り分けることができます。

Basinsで作成される流域について

Basinsは、DEM全体を端部の流出口ごとに分割します。

そのため、DEMの切り出し範囲によって、作成される流域の数や形が変わります。

特定の観測地点や河川上の地点より上流だけを抽出したい場合は、BasinsではなくWatershedを使用します。

使い分けは次のとおりです。

目的 使用するツール
DEM全体を流出口ごとに分割する Basins
指定地点より上流の範囲を抽出する Watershed

image.png

今回は、DEM全体を複数の流域に分割したいため、Basinsを使用しました。

3. Raster To Vector Polygons

最後に、流域ラスターをポリゴンへ変換します。

使用するツールはRaster To Vector Polygonsです。

image.png

このツールは、ラスターをポリゴン形式のベクターデータへ変換します。

入力には、Basinsで作成した流域ラスターを指定します。

image.png

処理が完了すると、それぞれの流域がポリゴンとして表示されます。

image.png

これで、DEMから流域界ポリゴンを作成できました。

なぜブラウザで水文解析が動くのか

GeoLibreでは、地理空間処理ツールがWebAssemblyを通じてブラウザ上で実行されます。

GeoLibreの公式リポジトリでは、プロセシング内のWhiteboxツールはブラウザ内のWebAssemblyランタイムで動作し、サーバーや別途インストールしたPython環境を必要としないと説明されています。

image.png
https://github.com/opengeos/geolibre-rust

全体のイメージは次のようになります。

image.png

従来のWebGISは、ブラウザからサーバーへデータを送り、サーバー側のGISエンジンで解析する構成が一般的でした。

GeoLibreでは、地理空間処理そのものをブラウザ上で動かせます。

つまり、単にブラウザで地図を見るだけではなく、ブラウザを一つのGIS実行環境として利用できます。

まとめ

GeoLibreを使い、次の3つの処理でDEMから流域界ポリゴンを作成できました。

Flow Accum Full Workflow
    ↓
Basins
    ↓
Raster To Vector Polygons

それぞれの役割は次のとおりです。

処理 役割
Flow Accum Full Workflow DEMの窪地補正、流向計算、流量累積計算を一括実行する
Basins 流向ラスターから流域を分類する
Raster To Vector Polygons 流域ラスターをポリゴンへ変換する

Flow Accum Full Workflowを利用することで、窪地補正、D8流向計算、流量累積計算を個別に実行する必要がなくなります。

さらに、GeoLibreではこれらの処理をWebブラウザ上で実行できます。

デスクトップGISをインストールできない環境での利用だけでなく、簡易的なデータ確認など、さまざまな用途に活用できそうです。

どれだけファンを増やせるか次第な気はしますが、GeoLibreはGISソフトウェアのゲームチェンジャーになりそうな予感がします...!!

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?