QGISで等高線を描く話
昨年の今頃擦った揉んだして出来るようにしたのに、記録を残して無かったのですっかりやり方を忘れていました。
たぶんネタバレすると色々めんどくさくなりそうだったので、ブログにしなかったかもしれません。
まあ忘れてしまっても困るので、ここで残しておくことにします。(時効でしょう)
0.地中の出現標高を等高線で表現したい話
私のような仕事をしていると、調査地点を配点し、その場所における地中深度を平面的に処理して等高線を作成することを求められることがあります。
こういう作業はあまり意味が無いと思うことも多々あるのですが、お客さんがそうしてほしいと言うのだから仕方ありません。
このような配点した状態で、各点に標高データが付いています。
これに等高線を描いて欲しいと言うリクエストが少なくないわけです。
1.QGISに調査位置を読み込ませる
Excelで座標と深度情報を入力したファイルを作成する。
[レイヤ]-[レイヤを追加]-[CSVテキストレイヤを追加]をするを選択すると上記の画面がでる。
ファイルを読み込んでやり、レイヤ名を決めてやったら、ジオメトリの定義をしてやる。
X値とY値は平面座標、Z値が標高になり、M値はラベルを入れておくと点ラベルがあとで表示できる。
正確に読み込めれば、QGISに調査位置が落ちる。
2.DEMを作ってやる
隣り合う点の標高差をとって三次元立体データを作ってやる。
TINを作る作業であります。
[プロセシングツールボックス]-[メッシュ]-[TINメッシュを作成]を選択する。
TINメッシュを作成すると選ぶと上記の画面がでるので、ベクタレイヤをCSVを入れたレイヤに指定する。
点の値をZの値を記載しているところに指定して、ベクタレイヤの頂点を追加してやる。
TINメッシュが完成した。つまりDEMができあがる。
しかし、このままでは等高線が描けない。
3.等高線を描かせてやるためにTINメッシュをラスター画像にする
そのまま等高線を描かせようとしてもうまく出来ないので、ここでおまじないをする必要がある。
[プロセシングツールボックス]-[メッシュ]-[メッシュデータをラスタライズ]を選択する。
入力メッシュは先ほど作成したTIN。それを実行するとラスタライズしてくれる。
白黒コントラストのラスターデータに変換される。
4.等高線を描かせる
最後に等高線を描かせる。
[ラスタ]-[抽出]-[等高線]のコマンドを動かす。
入力レイヤは、先ほどラスター化した白黒のデータの入っているレイヤを指定。
あとは等高線のピッチを入れてやって3Dベクタを生成とすると、高さ情報をもった等高線が描かせられる。
等高線の座標がズレた場合には、座標系を指定してやる。
できあがり。等高線を描くことが出来た。
ここからは等高線をDXFに吐き出せば、CADに持って行ける。
一応これで次のリクエストがきてもすぐに対応出来ると思う。
5.参考サイト
参考にしたサイトは以下の通り。ありがとうございました。