QGIS:DEMから海を除いたポリゴンを作成する

アイキャッチ, QGIS活用 QGIS

海の判別には、衛星データを使って水面を検出するのが普通だと思いますが、ここではお手軽に標高データから海を判別します。流域界を求める際,海をマスクする必要がありますし、逆に衛星データの海の部分だけ使いたい時もあると思います。こうした際に必要になる技術です.

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

DEMの準備

例として使用するのは国土地理院からダウンロードした与論島10mDEMです。本稿では他の目的で既にfill処理(窪地を埋める)してあるものを用いますが、海水面より低い土地でもなければ生のDEMを用いても問題ありません。

与論島10mDEM
与論島10mDEM

DEMをポリゴンに変換する

まず、GDALの「ラスタのベクタ化 (polygonize)」ツールを使います。

ラスタのベクタ化ツール
ラスタのベクタ化ツール

元のDEMは実数ですが、この処理で生成されたポリゴンのDNフィールドは整数で、DEMの数値を四捨五入したものになっています。下図は、DNが小さなものだけ色分け表示したものです。このDEMではDNが0から1の範囲が海と考えてよさそうです。本稿ではこのまま進みますが、もし厳密に海岸線を出したければ、海と陸を分ける標高を調べて、水際が四捨五入の分かれ目になるようにラスタ計算でDEMの値を調整してやる必要があるかもしれません。

ラスタのベクタ化の実行結果
ラスタのベクタ化の実行結果

ポリゴンから海を取り除く

islandポリゴンの属性テーブルのツールバーから「式による地物選択」ツールを開き、「”DN” < 2」という式を入力して「地物を選択」ボタンをクリックします。

式による地物選択ツール
式による地物選択ツール

すると下図のように海のポリゴンが選択されるので、編集をオンにして、選択されたポリゴンを削除し、結果を保存します。

式による地物選択ツール実行結果
式による地物選択ツール実行結果

すると、2m以上のポリゴンが残ります。(背景の白黒模様は別の処理の結果なので気にしないでください。)

選択されたポリゴンを削除する
選択されたポリゴンを削除する

残ったポリゴンを融合(dissolve)する

GDALの「融合(dissolve)」ツールを使います。

融合ツール
融合ツール

QGISのdissolveはArcGISと比べて遅いのが難点ですが、一服するうちには終了します。(下図の背景の黄黒縞模様も、関係ありませんので気にしないでください。)

融合ツール実行結果
融合ツール実行結果

脱線:やっぱりdissolveが遅い件

やはりdissolveが我慢ならないくらい時間がかかる場合があるようです。実際私も今、もう少し広く複雑な場所で同じ作業をしていましたが、3時間ぐらいdissolveしても終わらないのでArcGISでdissolveをかけたら10分もせずに終わりました。そのような時にあくまでQGISで立ち向かうなら、むしろフィーチャ数が少ない海のポリゴンを選択してエクスポートし、領域全体を包む単一フィーチャの矩形ポリゴンを新たに作って海のポリゴンでClipした方が早いかもしれません。dissolveの速度についてはずいぶん昔から遅いとか遅くないとか議論が続いていることが英語で検索するとわかります。無料ソフトなので工夫して切り抜けましょう!

本稿は以上です。Have fun!

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

コメント

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