北海道5mDEMの作成ではGDALを利用しましたが、実はGDALをコマンドから動かすのは初めて。GDALって何?って感じでしたが、QGISで知らず知らずのうちにお世話になっているようです。こういうライブラリーと呼ばれるものって一体、誰が何で作ってくれるんでしょうか。せっかく少しはPythonを使うので、本当はOSGeo4WのShellからではなくてPythonから動かしたいのですが、それは今後の課題とします。
gdal_mergeはワイルドカードが使えないので、結合したいファイルをまず読み込んでから実行しないといけません(本当かな…)。gdal_mergeの説明は
こちら。
■簡単な例
set GDAL_CACHEMAX=1536
割り当てメモリ容量の設定(私の32bit機ではエラー出るので設定できません…)
cd /d D:\tif
ディレクトりの設定
dir /b *.tif > list.txt
結合したいファイル(*.tif)を検索してlist.txtに出力
gdal_merge -o DEM05.tif --optfile list.txt
マージの実行(出力ファイル名:DEM05.tif)
dir /b *.tif > list.txt
&& gdal_merge -o DEM05.tif --optfile list.txt
&&でつないで、前文が成功したら後文を実行することも可能です。
■gdal_mergeは色々と引数が取れます。
-init -9999
データのないセルに-9999を与える。これをやらないとデータのないセルに0が与えられて、標高の0と区別がつかなくて困る。
-a_nodata -9999
-9999をNODATAと認識する。これをやらないと-9999は普通のセル値として認識され、データの最小値が-9999になって面倒。
-n -9999
-9999をデータなしと認識。これだけだと元々データのないセルと、-9999のセルに0が与えられます。標高の0値とデータなしの0が区別つかなくなるのでダメ。
-ot Int16
出力データタイプ(Float32, Int16とか)。デフォルトはFloat32っぽい。
--config GDAL_CACHEMAX 1536
割り当てメモリを各プロセスごとに変更することも可能(32bit機な私はエラー出るので設定不可。デフォルトのメモリ容量でのんびりやるしかないのか…)
■実際には出力ファイル名と結合したいファイルのワイルドカード用に5dem_mesh1.txtという1次メッシュの番号リストを作成してFORでまわしました。
FOR /F
%i IN (5dem_mesh1.txt) DO dir /b FG-JPS
-%i-*.tif > list.txt && gdal_merge -o
%i.tif --optfile list.txt
-init -9999 -a_nodata -9999 -ot Float32
コマンドプロンプトはほとんど使ったことがなくて、いつも混乱するのですが、FORの%iの使い方がRよりもずっと柔軟で感動しました。しかし、テキストファイル作成しないとFORがまわせない…。/Fがいけないのでしょうか??