異なる解像度の数値標高モデルを組み合わせる方法についての覚書です。ここでは国土地理院が提供する高解像度の5mメッシュデータと10mメッシュデータを組み合わせて等高線を生成する手順を紹介します。
はじめに
国土地理院のサイトを覗いてみると5mメッシュの数値標高モデルが公開されています。以前GarminGPS向けに地形図を作成した際は日本全土をカバーしている10mメッシュデータを利用しました。これでも十分地形が分かる等高線が作れましたが、さらに高解像度の5mメッシュだとどうなるだろうかと気になります。
5mメッシュだと単純に解像度が倍になるので、これを元にすれば更に精度の良い地形図が作れるはず。ですが残念ながら現時点(2018/08/10)ではまだ日本全国をカバーしていません。そこで不足している部分を他のデータで補って等高線を生成出来るかやってみることにしました。
環境
作業環境は以下の通りです。今回はいつもの仮想PCではなくWindowsとのデュアルブート環境を構築して作業しました(作業過程でメモリを猛烈に食うので)。
- CPU:Core i5
- Memory:16GByte
- OS:ubuntu 18.04
使用する数値標高モデル
以下の数値標高モデルを等高線生成に用います。
- DEM5A(5mメッシュ,航空レーザ測量)
- DEM5B(5mメッシュ,写真測量)
- DEM10A(10mメッシュ)
数値標高モデルは以下のサイトからダウンロード出来ます。
- 国土地理院 - 基盤地図情報 ダウンロードサービス
https://fgd.gsi.go.jp/download/menu.php
作業
前準備
データをダウンロード出来たらツールを使ってGeoTIFFに変換します。この辺りの流れは以下の記事を参照ください。
変換したGeoTIFFは種類毎にディレクトリに分けておきます。
- ./DEM5A/
- ./DEM5B/
- ./DEM10B/
解像度を合わせる(リサンプリング)
データが揃ったので3種類ある数値標高モデルを組み合わせます。ここではgdalbuildvrtコマンドを使ってvrt形式ファイルにしました。以下のようにコマンド入力してください。
$ gdalbuildvrt -resolution highest -r cubic japan-dem5_10_cubic.vrt ../DEM10B/geotiff/FG-GML-*.tif ../DEM5B/geotiff/FG-GML-*.tif ../DEM5A/geotiff/FG-GML-*.tif
引数のファイルは後ろになるほど優先順位が高くなります。こうすると、DEM5A->DEM5B->DEM10Bの順に高度情報が参照されるので、DEM5Aが提供されていない座標ではDEM5B、それも無ければDEM10Bの高度情報が読み込まれます。
"-resolution"オプションは解像度を指定します。highestとすると、解像度をGeoTIFFファイルの中で最も高いもの(ここでは5mメッシュ)にあわせます。なお、無指定だと"average"となり、解像度が(10+5)/2=7.5mになってしまいます。
"-r"オプションはリサンプリングのアルゴリズムを指定します。ここでは"cubic"を指定しました。どれがベストなのかはっきりとはわかりませんが、少なくとも無指定(nearestが選択される)だとDEM10Aを参照する場所の等高線がカクカクになります。
等高線の生成
前項のvrtファイルを使って等高線を生成し地形図を作ります。ここではGarminGPS向けの地図ファイルを作成しました。詳細な手順は以下の記事を参照してください。
ちなみに、地域枚に切り出したファイルサイズを見てみると、
$ du -bhc *.tif 17M japan-hachijojima.tif 3.6G japan-hokkaido.tif 15G japan-honshu.tif 2.6G japan-kyushu.tif 42M japan-ogasawara.tif 319M japan-okinawa.tif 1.4G japan-sikoku.tif 22G 合計
となりDEM10Bを使ったときは5GByteくらいだったのでほぼ4倍のファイルサイズになりました。分解能が倍になったのでここは想定通りです。
試しに作ってみたGarmin地図では、
- 10mメッシュ版:2.8GByte
- 5mメッシュ版:3.8GByte
とかなりサイズが増えました。GarminGPSはFAT32の制約でファイルサイズ上限4GByteなのでギリギリです。3D表示対応のためにDEMをくっつけたら恐らく容量オーバーになりますね。
リサンプリングアルゴリズムと等高線形状の比較
指定したアルゴリズムによって等高線がどう変化するか比べてみました。以下の画像中央付近にある”旗のアイコン”を境界にして左側が5mメッシュ、右側が10mメッシュのデータです。”nearest”を使ったケースなどでは10mメッシュ側の等高線がリサンプリングの影響でガクガクになっているので分かりやすいと思います。"cubic","cubicspline","bilinear"辺りが無難かな。
参考までにリサンプリング無し(DEM10B、10mメッシュのデータだけ)を掲載します。出来上がった地形図と見比べると5mメッシュの部分はより細かい地形が判別出来そうです。その一方で10mメッシュと5mメッシュデータの境目となる場所の等高線には違和感がありますね。
所感
異なる解像度の数値標高モデルを組み合わせて等高線を生成してみました。作業手順としては問題なさそうですが、もし登山で利用するとなると、うーんどうでしょうか。これから登る場所がちょうど継ぎ目に該当しなければ問題ないかもですが、富士山頂付近なんかがちょうど玉虫色になっているんですよね。。。
次回の地形図更新では試しに10mメッシュ版と10m/5mメッシュ混合版のふたつを作ってみようかな。
参考
この記事は以下の内容を参考にさせて頂きました。
- 国土地理院 基盤地図情報 ダウンロードサービス
https://fgd.gsi.go.jp/download/menu.php - GDAL - #5070 gdalbuildvrt won't respect -srcnodata value for overlapping rasters
https://trac.osgeo.org/gdal/ticket/5070 - StackExchange - What is Lanczos resampling useful for in a spatial context?
https://gis.stackexchange.com/questions/10931/what-is-lanczos-resampling-useful-for-in-a-spatial-context - StackExchange - Best Resampling Method for DEM reprojection in
QGis
https://gis.stackexchange.com/questions/102868/best-resampling-method-for-dem-reprojection-in-qgis