GDALメモ ラスタのマージ
DEMデータもオルソフォトも衛星画像もどんどん解像度があがって、ファイルサイズが超大きくなってきてます。1つのファイルが大きくなりすぎないように適当な図郭に分割して複数の画像ファイルになっていることも多いです。ところが、実際に使う立場になってみると、あんまりたくさんのファイルになっていると、ちょっと使いにくい。それに、画像がばらばらになっていると投影変換したときにはちゃんとつながってくれないです。
そんなわけで、せっかく分割してくれたファイルをマージしたりすることは結構多いです。
最近はGlobalMapperでデータのマージでも何でもやってしまうのですが、コマンドラインから使いやすいGDALでの画像のマージ方法もメモしておきます。日本語のGDAL情報はいまのところ多くはないので、具体的な方法をメモしておきます。主に自分向けですが・・
画像のマージはgdal_merge.pyでやります。基本的には、
python C:\gdal_merge.py -o output.tif -init -9999 input1.tif input2.tif input3.tif input4.tif
みたいな感じで、「-o merge.tif」でマージ後のファイル名を指定して、その後ろにマージしたい画像のファイル名を並べていくだけ(上の例はgdal_merge.pyがC直下に置いてある場合)。-init -9999は、nodata valueの指定。ところが、これではファイルがたくさんある場合は大変。
inputファイルを指定するのにワイルドカードが効かないかと思って「*.tif」とかやってみたけどダメでした。どうしたらよいかしばらくわからなかったのですが、GDALのwikiで見つけました。マージしたファイルのリストを用意しておけばよいみたい。
リストは、コマンドプロンプトから
dir /b /s *.tif > list.txt
とやって、list.txtに格納。これができたら、
python C:\gdal_merge.py -o merge.tif -init -9999 --optfile list.txt
という感じでlist.txtを指定してあげたらうまくいきました。
gdal_merge.pyの詳しい説明はこちら。