QGISで描画した等高線が滑らかではない場合があります。測量データからDEMを作成して等高線を描画した場合の多くは、過剰に微細地形を拾ってしまいます。滑らかな等高線を得るための「平滑化」という手法について解説します。
標高差を過剰に拾ってしまっているのがわかります。特に、データが足りないところは角ばったラインになってしまいます。
GRASS GISのr.mapcalcを使う
- ラスタA:DEMを指定(プルダウンメニューに表示中のラスタデータの一覧が表示されます)
- 計算式:
(A[-1,-1]+A[0,-1]+A[1,-1]+A[-1,0]+A[0,0]+A[1,0]+A[-1,1]+A[0,1]+A[1,1])/9
3. 下の方にスクロールして保存先を指定
4. 「raster_10cm_smooth01.tif」で保存
5. 「実行」
このままではよくわからないので等高線を生成します。
ラスタ→抽出→等高線(contour)
さらに平滑化する
平滑化の処理は重ねて行うことができます。先ほど平滑化処理したDEMにもう一度同じ手順を施すと、さらに滑らかになります。
-
r.mapcalc.simple
-
ラスタA:先に生成した平滑化したDEM
-
計算式:
(A[-1,-1]+A[0,-1]+A[1,-1]+A[-1,0]+A[0,0]+A[1,0]+A[-1,1]+A[0,1]+A[1,1])/9
-
ラスタA:上記で生成した2回目平滑化DEM
-
等高線の間隔:0.5m
満足のいくまで平滑化
平滑化処理を5回おこなったDEMから等高線を発生させました。
グレーが平滑化前、赤色が平滑化処理5回です。
平滑化の計算式
r.mapcalc.simple
コマンドで使用した計算式は次のとおりです。
(A[-1,-1]+A[0,-1]+A[1,-1]+A[-1,0]+A[0,0]+A[1,0]+A[-1,1]+A[0,1]+A[1,1])/9
A[x,y]
はDEMラスタの要素(個別のデータ点)にアクセスする記法です。ここでは、DEMの個別の要素(画素)とその周囲8点の平均を計算しています。