コンテンツへスキップ

DEMをSRTM(hgt)形式に変換する方法

国土基盤情報のDEMをSRTM(hgt)形式に変換する方法について覚書です。

SRTMは世界中をカバーしていて無料で利用可能なので色々なツールが対応しています。例えばmkgmapではGarminGPSで使える3D表示対応の地図を簡単に作成することが出来ます。もちろんSRTMと同じ形式であれば他のソースでも問題ありません。この記事ではこういったツール類で使えるよう他のDEMをSRTMと同じ形式に変換する方法について紹介します。

環境

作業環境はUbuntu18.04です。

  • CPU:Core i5
  • Memory:16GByte
  • Storage:64GByte(SSD) + 2TByte(HDD)
  • OS:Ubuntu18.04

使用するツール

  • gdal 2.2.3
  • awk

SRTM(hgt)形式への変換

一度DEMをgdalで扱える形式に変換して、そこからスクリプトを使ってSRTMと同じ形でファイルに切り出します。

  • DEM--(何らかのツール)-->GeoTIFF等--(gdal)-->vrt形式--(スクリプト)-->SRTM(hgt)

gdalとawkを使用するので、環境に無い場合はインストールしてください。


$ sudo apt install gdal-bin awk

(Step1)DEMをgdalで扱える形式に変換する

目的のDEMがgdalで扱える形式で提供されているか確認してください。対応形式については以下が参考になります。

一覧に無ければ何らかの手段でGeoTIFF等へ変換する必要があります。例えば国土地理院のDEMであれば、以下のツールを用いてGeoTIFF形式に変換することが出来ます。

(Step2)vrt形式ファイルを作成する

DEMがひとつのファイルに収まっているなら読み飛ばしてください。複数に分割されているなら、ここでgdalbuildvrtコマンドを使ってvrtファイルを作成します。

例えばDEMがGeoTIFF形式であれば、以下のようにします。


$ gdalbuildvrt target.vrt ./dem/*.tif

もしDEMの解像度が統一されていないのであれば、以下の記事を参考にしてください。

(Step3)変換スクリプトを実行する

GDALはSRTM(hgt)形式の入出力に対応していますが、同じように1度刻みでゴマの目状にファイルを分けてようとするとオプションで色々と設定する必要があります。そこで諸々を一括で処理するスクリプトを使用します。

以下のようにして必要なスクリプトをダウンロードします。


$ git clone https://github.com/suke-blog/gdal2srtm.git

$ cd gdal2srtm
$ ./gdal2srtm.sh
Usage: gdal2srtm.sh file.vrt filelist.txt

なお、このスクリプトには以下のサイトで提供されている”aw3d30_srtmhgt.zip”を微修正して使わせて頂きました。

使用方法は、まず切り出したいファイル一覧をSRTM(hgt)と同じ形式でテキストファイルにまとめます。プロジェクト内のjapan.txtを参考にしてください。このファイルは日本全体のタイルを含んでいます。


$ cd gdal2srtm
$ cat japan.txt
N20E136.hgt
N24E122.hgt
N24E123.hgt
...
N45E147.hgt
N45E148.hgt
N45E149.hgt

以下のようにスクリプトを実行してください。変換後のファイルは./outputディレクトリに出力されます。

ちなみに解像度はSRTM1と同じになっていますが、スクリプトを直接いじれば変えられます。


$ ./gdal2srtm target.vrt japan.txt

$ du -bhc ./output/*.hgt
...
25M output/N45E148.hgt
25M output/N45E149.hgt
3.3G 合計

所感

地図を自作するときに使ったSRTM形式ファイルの変換スクリプトを公開してみました。

あまり需要は無いと思いますがよかったら使ってやってください。SRTMの本家サイトではファイル形式が変わってGeoTIFFでの提供になったようで、おそらくツール類もそちらに対応してくるとは思いますが現時点では旧hgt形式のみ対応だったりするのでたまに出番があります。

 

1 thought on “DEMをSRTM(hgt)形式に変換する方法

  1. ピンバック: Random sh*t about current project (Oct.2021 ~ Current) – A blog

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください