もしも地図画像がGeoTIFFならば(愛しのGDAL編)・2
試しに、数値地図25000(地図画像)に地理的な座標値を入れてGeoTIFFにしてみます。GeoTIFFタグをTIFFヘッダ部にバイナリエディタ等で書き込むだけですが、面倒なのでGDALとlibgeotiffを使います。ついでに画像にも少し細工をします。
地図画像はユニバーサル横メルカトル図法(UTM)で投影され、経緯度によって区切られています。数値地図25000(地図画像)データファイル仕様説明書によれば、『地形図の上辺は、TIFFファイル内の画像データのピクセル方向と一致しています』。UTM座標系を回転させた、図葉ごとのラスタ座標系になっています。
地図の図郭線と画像の端が一致しないため、図郭外に余白が生まれます。またティックなどの整飾用にもスペースをとってあり、隣接図とシームレスにつなぐことが多いGISでは余白は邪魔なだけ…
この余白部のピクセルにNODATAというフラグを立てます。NODATAを「データ無し」として扱えるGISアプリケーションの場合、例えば画面表示上は透明になります(例えばQuantum GIS)。
地図画像は8ビットカラー。256色のカラーパレットを持っています。NODATA用の細工をするついでにパレット操作をしました。この例では色は電子国土風、注記は他データベース*1から得るということにして注記を外します。
次はNODATAの細工。
図郭外の余白部は白色で色番号0です。ここはそのまま変更なし。図郭内の白色を細工して、他の色番号に割り当ててます。これは色番号0をNODATAにするための処置となり、幾つかのGISアプリケーションで表示させた結果*2、都合がよかっただけの理由です。
地図画像のカラーパレットは実に巧妙なつくりで、本来は色変更以外の操作は出来ません。まあ、とりあえず影響の少なそうな色番号255を割り振りました。
あとは地図画像に添付される管理ファイルを元に、図郭四隅のラスタ座標値とUTM座標値を対応させたコマンドラインをつくって実行するだけです。管理ファイルは新図郭と旧図郭で書式が異なります。注意。
-a_nodataでNODATA値を、-a_srsで測地系・座標系を、-gcpでラスタ座標値とUTM座標値を対にしてコマンドに並べます。これでPCS。
gdal_translate -a_nodata 0 -a_srs EPSG:3099 -gcp 89 4266 317645.209 3920487.579 -gcp 92 74 317858.325 3930964.025 -gcp 5234 74 330708.041 3930711.565 -gcp 5237 4266 330509.974 3920235.408 533310.tif g533310.tif
(つづく)
*1:例えば「数値地図25000(地名・公共施設)」
*2:サンプル数2です。すいません