GDAL/OGR が新しくなったよ
今年11月29日に実施された FOSS4G SHINSHU にて、 GDAL/OGR が新しくなった。という発表を行いました。
そのときの資料
また FOSS4G Advent Calender で、新しい GDAL で CS 立体図をつくってみたので紹介いたしました。
GDAL/OGR はリニューアル直後であるため、しばらくは新しいコマンド( gdal raster convert / gdal vector reproject など)の仕様などは変更となる可能性があります。
今までの GDAL/OGR のコマンドは残っており、引き続き、以前のコマンド( gdal_translate / ogr2ogr など)を実行することができます。
QGIS 上での GDAL/OGR
それはそれとして、 QGIS でも GDAL/OGR を使うことができます。そして、意外に知られていない気がするので「追加オプション」についてまとめてみました。
QGIS から利用できる GDAL/OGR の各機能はプロセシングツールの「 GDAL 」ツリー下にまとめられています。
GDAL/OGR が動いていることは実際にツールを起動すると、下部に「 GDAL/OGR コンソールコール」という欄に、実行されるコマンドが表示されることからもわかります。なお、現時点( QGIS 3.44 )では前述した新しいコマンド体系ではなく、従来のコマンドによるものです。
コマンドオプションの指定方法
各ツールで主要となる設定は、ツールのダイアログ上で指定できるようになっていますが、大元の GDAL/OGR の各コマンドにはもっとたくさんのオプションが存在します。つまり見えている以上にいろいろなことが可能なのです。
ダイアログ上で設定項目が用意されていないオプションは、詳細パラメータの「追加オプション」という欄から指定することができます。
今回、いくつか便利そうなものを紹介します。
紹介するオプションは、すべてのツール(コマンド)に対応しているわけではありません。各ツールで何のコマンドが使われており、どんなオプションに対応しているか確認が必要となります。
解像度
出力ラスタの解像度(1セルあたりの距離)を指定することができます。
# 形式変換 (gdal_translate) / グリッド (gdal_grid) / 仮想レイヤ (gdalbuildvrt) など
-tr <xres> <yres>
たとえば1セルが縦5 m 、横5 m にしたい場合、 -tr 5 5 と指定します。
プロセシングツールの「再投影 (warp)」ではダイアログ上に入力欄がありますが、「形式変換 (gdal_translate)」や 「グリッド(線形)」「グリッド(累乗逆距離加重法)」などの gdal_grid 系、「仮想レイヤを構築」などで使うことができます。
出力領域
出力ラスタの領域(ラスタ頂点地点の位置)を指定することができます。
# 再投影 (gdalwarp)
-te <xmin> <ymin> <xmax> <ymax>
# 形式変換 (gdal_translate)
-projwin <xmin> <ymax> <xmax> <ymin>
# グリッド (gdal_grid)
-txe <xmin> <xmax> -tye <ymin> <ymax>
再投影などをそのまま実行すると、元のデータの位置にあわせて非常に半端な座標値のラスタデータとなることがあります。気にしない場合もありますが、各セルの中心点の位置にも関わってくるため、なんとなくきれいな数値にしたいとき使います。
上記をみてもらえばわかりますが、使用するコマンドによりオプション名と引数の取り方が異なります。逆を言えば、なぜ GDAL/OGR がリニューアルしたか、ってことですよ。
位置情報(範囲)の設定
対象ラスタの位置を設定(上書き)します。
# 形式変換 (gdal_translate)
-a_ullr <xmin> <ymax> <xmax> <ymin>
位置情報が付与されていない状態の地図画像があるとき、通常はジオリファレンスなどで位置情報を設定します。ただ目的の画像が下記のような経度-180度〜180度、緯度-90度〜90度の範囲を示している地図画像とわかっている場合、「形式変換 (gdal_translate)」の -a_ullr オプションを使って位置情報を付与することができます。
-a_ullr というオプション名称は左上点 (Upper-Left) と右下点 (Lower-Right) の座標を割り当てる (assign) という意味からきています。
(画像: Natural Earth )
形式ごとのオプション
保存する形式ごとに特有な設定項目が存在します。それらの作成オプションは下記の形式で指定することができます。
- ラスタの場合( Creation option )
-co <NAME>=<VALUE>
- ベクタの場合(データセットレベル / Dataset creation option )
-dsco <NAME>=<VALUE>
- ベクタの場合(レイヤレベル / Layer creation option )
-lco <NAME>=<VALUE>
形式によりどんなオプションが存在しているかについてはドキュメントを確認してください。
またベクタ形式でよく使いそうなオプションは昔まとめてました。
さいごに
ここ最近 GDAL/OGR をいろいろ調べたりしてたので、どうせなら QGIS Advent Calendar も GDAL/OGR でいったれ。と思い GDAL/OGR ネタをぶっこんでみました。がっつり使う人は直接コマンドを叩けばよいですが、 QGIS でちょっと作業するとき、もう少し痒いところに手を届かせたいときに使えるかもしれません。
現時点は従来の GDAL/OGR のコマンドが使われていますが、どのタイミングになるかわかりませんが、新しい GDAL/OGR 使用に切り替わる可能性があります。そのときは新しいコマンドにおけるオプション名を使う必要があります。