基盤地図情報(標高)をGDALやGRASSで使いたい

基盤地図情報(標高)のDEMは、XMLで記述されています。記録や流通の理念としては良いのでしょうが、実務レベルではちょっと厄介です。でかいし。特にDEMの場合は、対応するアプリケーションも少なめです。

具体的に困っている人がいたので、知っていることを記しておきます。他にも方法は沢山ありますが、このあたりが手軽かと。

ARC/INFO ASCII GRID形式にする

単純な書式のテキストファイル*1なので、Perlとかで簡単に処理できます。拡張子はGRD通常".asc"になります。書式はhttp://docs.codehaus.org/display/GEOTOOLS/ArcInfo+ASCII+Grid+formatに出ていますが、それでは身も蓋も無いので、5mメッシュを例に少し説明します。

ヘッダー部は次の通りです。

ncols 225			#X軸のピクセル数
nrows 150			#Y軸のピクセル数
xllcorner 139.562500000000	#左下X(西)の座標
yllcorner 35.908333333667	#左下Y(南)の座標
cellsize 0.000055555556		#1ピクセルあたりの大きさ
NODATA_value -9999		#「データ無し」の値
  • 5mメッシュは1ピクセルあたり0.2秒なので、0.2/3600=0.000055555556になります(10進表現)。
  • 基盤地図情報(標高)では「データ無し」は記載されないので、一般的な"-9999"を割り当てておきます。

データ部は、左上を原点としたマトリックスです。区切り文字はスペースです。この場合は225列、150行になります。またPRJファイルも用意しておくと便利です。これには座標系や測地系、投影法が記述されています。

5m_grid_jgd2k.grd

ncols 225
nrows 150
xllcorner 139.562500000000
yllcorner 35.908333333667
cellsize 0.000055555556
NODATA_value  -9999
-9999 -9999 -9999 9.19 9.17 9.10 ……(225列)
-9999 -9999 9.19 9.20 9.15 ……
:
:
(150行)

5m_grid_jgd2k.prj

GEOGCS["JGD2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],
UNIT["Degree",0.017453292519943295]]

生成したGRDファイルを、gdal_translateでGeoTIFFにしてしまうなら、PRJファイルは不要です。変換時に直接EPSGコードで指定してしまえばいいです。

gdal_translate -a_srs EPSG:4612 5m_grid_jgd2k.grd 5m_grid_jgd2k.tif

アプリケーションによっては、WGS84の方が都合がいいかもしれません。この場合は、EPSG:4326を指定します。現行の日本測地系2000と現行のWGS84は、ほぼ同一ですので問題ありません。旧日本測地系(Tokyo)へはEPSGコードの指定だけでは無理です。また別の話。

と、ここでEsri grid - Wikipediaを発見。こちらの方が分かりやすいかも…

フリーソフト基盤地図情報DEMコンバータ」を使う

Windows環境なら、これを使わせてもらうのが一番手軽です。GeoTIFF, BIL+HDR,GRASS ASCII形式にしてくれます。

http://space.geocities.jp/bischofia_vb/

ZIPファイルのまま扱えるし、適当な単位でマージもしてくれます。
Windows環境でない人も、近くに一台ぐらいはWindowsマシンがあると思います。ちょっと借りてGeoTIFFにしておけば、面倒がありません。日本測地系2000のGeoTIFFが生成されますが、WGS84が入用ならgdal_translateでしてしまえばいいです。

5mメッシュは配布が3次メッシュ単位。数が多いので適当な単位でマージしておけば扱いやすいです。僕は2次メッシュ単位のGeoTIFFでストックしています。必要に応じてgdal_translateで切り出し、gdal_merge.pyでくっつけて使っています。

日本地図センター「基盤地図情報(数値標高モデル)変換サービス」を使う

http://net.jmc.or.jp/digitaldata_base_henkan.html

間違いなく、いちばんラクだと思いますw

*1:ちなみにバイナリ形式もあります