LoginSignup
0
0

More than 1 year has passed since last update.

QGIS,GRASSGIS v.sampleで作る断面図

Last updated at Posted at 2021-12-05

はじめに

はじめまして、Qiita初投稿です。mooyaと申します。
ここ3年ほどQGISにはまってまして、仕事でも使ってますし、QGIS初心者質問グループに出没しています。
この投稿ではQGISのラスターとポリラインから作る断面図作成プロセッシングの出力を確認した後、グラフィカルモデラー、ポイントのラスター値を取得するv.sampleを使って断面図を作ります。

断面図に品質?

ラスターとポリラインから作る断面図なんて何を使っても同じだろうと漠然と思っていたのですが、QGISに含まれているsagaのProfile from linesで作った断面図がなんかおかしい、単調な勾配の斜面でがたつきがある。
そこで、ほかのソフト(arcgis、surfer)と比較していみるとarcgis≒surfer≠sagaで、同じラスタとポリラインから作る断面図でも実装によって出力が異なること、sagaがやっぱり何かおかしいことがわかりました。

サンプルラスタと測線の作成

 まず、断面図の元になるラスターデータの作ります。最初は富士山のデータをダウンロードしようと思ったのですが案外データが大きかったのと、趣旨からいって解像度の荒い単調なデータが良いので、「IDW内挿(逆距離加重法)」で作ることにしました。
 断面を作る測線は、ラスタに対し斜交しnodataを通るA測線と、ラスタのピクセルの中央を通るB測線を作成しました。
IDWの元データ
01-idw-line.png
IDWで作成したラスターと測線 -10以下はnodataを設定
02-idw-raster.png

断面図作成プロセッシングの出力

saga Profile from lines

sagaのprofile from lineを使ってA測線の断面を作成します。ポイントは断面上にセルサイズで等間隔に作成され、ラスタのピクセル値とポイント値は異なるので、何等か内挿補完がされているようです。
03-saga-heimen.png
 断面図は、IDWでラスタを作成したにしては、歪みがあります。
04-saga-profile.png

grass r.profile

 もうひとつ、grassのr.profileを使ってA測線の断面を作成します。入力のラインが数値指定で出力もテキストですが、変換して同様に平面、断面を作ります。
 ポイントはsaga同様等間隔でラスタのピクセル値とポイント値は同じなので、近傍値を取得しているようです。
05-grass-r-profile-heimen.png
 同じピクセルに複数のポイントが入ると水平になります。
06-grass-r-profile-profile.png

grass v.sampleで作る断面図

 ここから本題のラスター値を内挿補完で取得できるv.sampleを使って断面を作ります。

v.sampleメソッド比較

 最初に、ピクセル中央を通るB測線でv.sampleの3つのメソッドの出力を確認します。B測線に1m間隔で点を作り、3つのメソッドで値を取得すると、
07-grass-v-sample-heimen.png
 nearestは階段状、bilinearはピクセル間は直線的に内挿補完、bicubicは曲線で内挿補完されます。bicubicが滑らかな曲線が得られていますがこのラスターの場合、bilinerもあまり変わりません。
08-grass-v-sample-profile.png

ライン上のポイント作成と値の取得、選択

 ラスターの値を反映するため、ライン上のポイントはピクセル中心を通るラインと交差するところに作ります。ポイントにv.sampleでラスター値をつけると、ラスターのnodata近傍はbicubic,bilinearのポイントが欠けました。そのため値の優先順位をbicubic→bilinear→nearestとして、値を設定しました。
09-grass-v-sample-method.png
 断面図は比較的自然な曲線が得られています。水平距離200m付近にnearestの点が2つ連続しており、水平になっています。これはこの方法では改善できないですね。
10-grass-v-sample-profile2.png
 起点側の形状が他の断面と違い凹地になっていたので確認してみると、これはこれで合っているようです。
11-grass-v-sample-heimen2.png

グラフィカルモデラ

 というようなことを、手作業でやっていたら大変なのでグラフィカルモデラを作りました。
12-modeler.png
入力画面
13-input.png
「ベクタレイヤの散布図」で簡易的に断面も出ます。
14-.png

QGISモデルファイル

 QGISモデルをアップロードしました。

 QGIS 3.16.14 Windows10,64bit,exe版で作成しています。MSI版ではv.sample実行時にエラーが発生します。
 解決方法をご存じの方コメントをお願いします。

エラーメッセージ
Traceback (most recent call last):
File "C:\PROGRA~1/QGIS32~1.1/apps/qgis/./python/plugins\grassprovider\Grass7Algorithm.py", line 433, in processAlgorithm
Grass7Utils.executeGrass(self.commands, feedback, self.outputCommands)
File "C:\PROGRA~1/QGIS32~1.1/apps/qgis/./python/plugins\grassprovider\Grass7Utils.py", line 397, in executeGrass
for line in iter(proc.stdout.readline, ''):
UnicodeDecodeError: 'cp932' codec can't decode byte 0x84 in position 35: illegal multibyte sequence
v.sample nearestの実行中にエラーが発生しました
Execution failed after 8.55 秒(seconds)

0
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
0
0