gdalでラスターデータにテクスチャーを貼る方法

北海道地図株式会社のGISMAP Textureに触発されて、gdalでラスターにテクスチャーを貼るプログラム「gdaltexture」 を作成しましたので紹介します。

使い方(windows環境) ※ソースをコンパイルすれば、linuxmacでも可。

  1. OSGeo4Wをインストールします。(gdal1.8.0)
  2. ソースと実行ファイルをここからダウンロードください。
  3. ダウンロードしたgdaltexture.exeをC:\OSGeo4W\binの中に入れます。
  4. コンソールで以下のように打ち込みます。
    • "input.tif"は、値の入ったラスタ。
    • "color_text_file.txt"は、ラスタ値とテクスチャ画像を対応付けるファイル。
    • "out.tif"は、テクスチャ貼付け後の出力ファイル。
gdaltexture.exe color-relief -texture_color_entry input.tif color_text_file.txt out.tif

gdaltextureの説明

  • gdaltextureは、gdal1.8.0に同梱のgdaldem color-reliefにテクスチャ貼りつけ機能を追加したプログラムです。
  • gdaldemの機能はそのまま存在しています。
  • "-texture_color_entry"のオプションを付けるとテクスチャ貼りつけ機能が有効になります。
  • "color_text_file.txt"の中身は、↓こんな感じです。
    • ラスタ値とテクスチャ画像のファイル名を並べます。
    • gdaldem color-reliefの時と様式は同じです。
    • テクスチャの指定と、色の指定を混ぜることも可能です。
    • ファイル名に日本語は使えません。
    • 相対パスも大丈夫です。(パスに空白があるとダメです。)
0	255	255	255
1	img\1.jpg
2	img\2.jpg
3	  0     255       0	

使用例

gdaltextureを使って、shpファイル→ラスタに変換→テクスチャ貼りつけ→公開の手順を簡単に紹介します。
natural earthから"Natural Earth quick start kit"をダウンロードして、10m_admin_1_states_provinces_shp.shpからJapanを抜き出しラスタに変換します。

ogr2ogr -where NAME_0='Japan' japan.shp 10m_admin_1_states_provinces_shp.shp
gdal_rasterize -tr 0.00625 0.00625 -a OBJECTID -l japan japan.shp japan.tif

テクスチャを用意して、ラスタに変換します。

  • テクスチャは、ここから取ってきました。
  • color_text_file.txtの中身はこんな感じ。
0	255	255	255
1872	img\32-abstract-textures.jpg		
1873	img\32-abstract-textures.jpg		
...
以下同様	
  • gdaltextureで変換。
gdaltexture color-relief -texture_color_entry japan.tif color_text_file.txt texture_test.tif

出来上がったテクスチャ画像を公開できるように変換します。

gdal2tiles -g 自分のgooglemapsAPI texture_test.tif

その他

  • gdaldemとgdaltextureの差分部分のプログラムは、変更するなり、gdalにコミットするなり、ご自由にお使いください。