2022年2月14日月曜日

湖沼図からの水深ラスターデータの作成(後編)

 前回の投稿でQGIS上で湖沼図に位置情報を埋め込むことができました。今回はその湖沼図上に等深線を書き込み、それを基にしてラスターデータを作成します。

3. 等深線の書き込み

湖沼図の等深線をなぞります。等深線が明瞭になるように図を拡大してください。マウスのスクロールで拡大・縮小が可能です。また、マウスのスクロールホイールをクリックしながら動かすことで地図上を移動することができます。これは覚えておくと便利です。

画面左上の「新規シェープファイルレイヤ」アイコンをクリックします(図1の赤丸)。すると「新規シェープファイルレイヤ」ウィンドウが表示さます。

図1

ファイル名を入力し(任意ですが、半角英数字にしてください。ここでは「Depth.shp」にしました。)、ジオメトリタイプを「ラインストリング」にします。さらに「新規フィールド」の「名前」欄を「Depth」とし(これも任意ですが、わかりやすいほうが良いです。)、「データ型」を「小数点付き数値」にします。できたら「フィールドリストに追加」をクリックし、下のフィールドリストに追加されたことを確認してください。なお、フィールドリストには最初から「id」というフィールドが入っていますが、必要ないので削除しても構いません。ここまで入力したら「OK」をクリックします。元の画面に戻りますが、左のレイヤ欄に「Depth」というレイヤが追加されたはずです。

追加したレイヤに線を書き込みます。「Depth」レイヤが選択された状態(青く反転している状態)で、「編集モード切替」アイコン(「設定」の下あたりにある黄色い鉛筆のアイコン)をクリックし、次にその2つ右にある「線の地物を追加」をクリックします(図2)。するとカーソルが十字を◯で囲ったような形になったと思います。この状態で地図上で左クリックをするとその場所に頂点が置かれます。さらに別の場所で左クリックするともう一つ頂点が置かれ、最初の頂点との間に線が引かれます。これを続けることで等深線に沿って線を引いていきます。引き終えたら右クリックします。すると地物属性というウィンドウが立ち上がります。ここにはレイヤを作成したときに追加したフィールド(ここでは「Depth」)が表示されるので、今線を引いた場所の水深を入力し、「OK」を押します。この作業を繰り返すことで等深線をシェープファイルレイヤ上に入力していきます。

図2

一度引いた線は「線の地物を追加」の右隣りにある「頂点ツール」で修正することが可能です。「頂点ツール」を選択するとカーソルが十字マークに変わります。この状態で引いた線の上に現れる☓印をクリックするとその場所に新しい頂点を追加することができます。また、すでにある頂点をクリックすることでその頂点の位置を変えることができます。効率的に等深線を引く上での私のおすすめは、とりあえずざっくりと最初から最後まで線を引き、線の形は後から「頂点ツール」で整えることです。端から少しずつ丁寧に線を引いていくと終わる気がしません。

一通り線を引き終えると図3のような感じになります。これでも全部引いたわけではありませんが、面倒なのでとりあえず今回はこれで良しとしました。なお、線の色や太さなどはレイヤを右クリック>「プロパティ」>「シンボロジ」で変更可能です。作成したレイヤは保存しておきましょう。レイヤを右クリック>「エクスポート」>「新規ファイルに地物を保存」でファイル名を入力して「OK」を押します。形式は「ESRI Shapefile」のままで構いません。この形式で保存すると複数の形式のファイルが指定フォルダに現れますが、レイヤを開くときは拡張子がshpになっているものを選んでください。また、このとき「OK」の左にある「保存したファイルを地図に追加する」にチェックが入っていると保存したものと同じものがレイヤに追加されるので注意してください。ファイルとして保存すると、レイヤを削除しても「ベクタレイヤを追加」から保存したshpファイルを選択することで再びレイヤを開くことができます。

図3

4. 内挿

それではいよいよ等深線と等深線の間の深度を補間していきます。「プロセシング」>「ツールボックス」をクリックしてください。右側に「プロセシングツールボックス」というパネルが現れるので、そこの検索窓に「tin interpolation」と入力します。すると「TIN内挿(不規則三角網)」が表示されるので、それをダブルクリックします。ダイアログボックスが表示されるので、「入力ベクタ」に作成した等深線のレイヤを指定し、「内挿対象の属性」で「Depth」を選択してから、すぐ下の緑の「+」マークをクリックします(図4)。
図4

入力レイヤに関するテーブルが現れるので、「データ型」として「ストラクチャーライン」を選択します。「内挿方法」を「線形」、「領域」は右の「...」マークをクリックして「レイヤから計算」から最初に読み込んだラスターデータを選択します。「ピクセルサイズ」は0.001にします。また、「出力レイヤ」に出力先ファイル名を入力します(ファイル名は任意。ここでは depth_pic0.001.tif )。これにより、自動的にファイルが保存されます。ここまでセットできたら右下の「実行」をクリックします。完了するとレイヤパネルにラスターレイヤが追加されます(図5)。デフォルトでは水深の深いところほど白く表示されていると思います。
図5

以上で湖沼図からの水深ラスターデータの作成は完了です。


(おまけ) 傾斜量図の作成

作成した水深ラスターデータから傾斜量図を作成できます。「プロセシングツールボックス」の検索窓に「r.slope」と打ち込むと「r.slope.aspect」が出てくるので、これをダブルクリックします。ダイアログボックスが表示されるので、「Elevation」の欄で作成した水深レイヤを指定し(ここでは depth_pic0.001)、「実行」をクリックします。完了すると複数のレイヤが作成されます。このうち、「Slope」が傾斜,「Aspect」が傾斜方位,「Profile curvature」が断面曲率,「Tangential curvature」が接曲率を示しています。


*「Exception: unknown」と表示され、TIN内挿が動かない場合

自分の環境(Ubuntu 20.04)で上記のようなエラーに遭遇しました。GUI上ではどうにもなりませんでしたが、CUIで実行できました。コマンドは以下の通りです。オプションの設定などはエラーが出たときのログを参照してください。以下のコマンドは上のダイアログボックスの設定と同じです。
qgis_process run qgis:tininterpolation --INTERPOLATION_DATA=Depth.shp::~::0::~::1::~::1 --METHOD=0 --EXTENT=135.833234096,136.000092079,34.974896348,35.166801988 --PIXEL_SIZE=0.001 --OUTPUT=depth_pic0.001.tif

MaxEnt解析手順メモ

前回までの記事 で琵琶湖南湖の湖沼図から地形に関するラスターデータを作成しました。今回はこれを利用してMaxEnt解析を試みます。MaxEntはオープンソースのソフトで ここ からダウンロードできます。なお、ここではバージョン3.4.4を使用しています。サンプルとして、ブルーギル...