gdal_calc
numpy 構文を使用したコマンドラインラスター計算機.
概要
gdal_calc [--help] [--help-general]
--calc=expression --outfile=<out_filename> [-A <filename>]
[--A_band=<n>] [-B...-Z <filename>] [<other_options>]
解説
numpy 構文を使用したコマンドラインラスター計算機. +
, -
, *
, /
などの numpy 配列でサポートされる基本的な算術と >
のような論理演算子を使用します.すべてのファイルは同じ次元である必要があります(範囲オプションが使用されていない限り),ただし,投影チェックは実行されません(投影チェックオプションが使用されていない限り).
注釈
gdal_calc は Python ユーティリティであり,GDAL Python バインディングが利用可能な場合のみ利用できます.
- --help
このヘルプメッセージを表示して終了します
- --help-general
一般的な GDAL コマンドラインオプションの使用方法の簡単なメッセージを表示して終了します.
- --calc=<expression>
+
,-
,/
,*
または任意の numpy 配列関数(log10()
など)を使用した numpy 構文での計算.複数の--calc
オプションをリストアップして,マルチバンドファイルを生成できます(GDAL >= 3.2).
- -A <filename>
入力 gdal ラスターファイル,任意の文字 (a-z, A-Z) を使用できます. (小文字は GDAL 3.3 以降でサポートされています)
文字を繰り返すことができます,または複数の値(スペースで区切られた値)を提供できます(GDAL >= 3.3). GDAL 3.5 以降,ワイルドカード例外(?, *) がすべてのシェル/プラットフォームでサポートされています. その効果は,3 次元 numpy 配列を作成することです.この場合,計算式はこの入力を 3 次元配列として使用し,2D 配列を返さなければなりません(以下の例を参照). 計算が 2D 配列を返さない場合,エラーが生成されます.
- --A_band=<n>
ファイル A のラスターバンドの数(デフォルト 1).
- --outfile=<filename>
生成または塗りつぶす出力ファイル.
- --NoDataValue=<value>
出力 NoDataValue (デフォルトのデータ型固有の値). NoDataValue を設定しないことを示すには,--NoDataValue=none を使用します(GDAL >= 3.3)
注釈
Python API を使用する場合:
None
値はデフォルトのデータ型固有の値を示します.'none'
値は NoDataValue を設定しないことを示します.
- --hideNoData
Added in version 3.3.
入力バンドの NoDataValue を無視します. デフォルトでは,入力バンドの NoDataValue は計算に参加しません. この設定を設定することで,入力 NoDataValue に特別な処理は行われず,他の値と同様に計算に参加します. 出力には 特定の値を明示的に指定して --NoDataValue=<value> を設定しない限り NoDataValue が設定されません.
- --type=<datatype>
出力データ型は,以下のいずれかである必要があります[
Byte
,Int8
,UInt16
,Int16
,UInt32
,Int32
,UInt64
,Int64
,Float64
,Float32
,CInt16
,CInt32
,CFloat64
,CFloat32
].注釈
--type
を使用して設定されたデータ型に関係なく,同じタイプのオペランドを使用して中間算術演算を行う場合,演算結果は元のデータ型を尊重します.これは最終結果で予期しない結果につながる可能性があります.注釈
UInt64, Int64, CInt16, CInt32, CFloat32, CFloat64 は GDAL 3.5.3 で追加されました. Int8 は GDAL 3.7 で追加されました.
- --format=<gdal_format>
出力ファイルの GDAL フォーマット.
- --color-table=<filename>
出力ラスターに使用するカラーテーブルのファイル名(または ColorTable オブジェクト)を指定できます(パレットインデックス解釈付き).サポートされるフォーマット: txt (gdaldem のような), qlr, qml (QGIS からエクスポートされたもの)
- --extent=<option>
Added in version 3.3.
このオプションは,異なる範囲のラスタをどのように処理するかを決定します. このオプションは,カスタム範囲を提供するために使用される projwin オプションと排他的です.
以下のすべてのオプションにおいて,すべての入力ラスタのピクセルサイズ(解像度)と SRS (空間参照システム)は同じである必要があります.
ignore
(デフォルト) - ラスタの次元のみが比較されます. 次元が一致しない場合,操作は失敗します.fail
- ラスタの次元と範囲(境界)が一致している必要があります. そうでない場合,操作は失敗します.union
- 出力の範囲(境界)は,すべての入力範囲を含む最小の長方形になります.intersect
- 出力の範囲(境界)は,すべての入力範囲に含まれる最大の長方形になります.
- --projwin <ulx> <uly> <lrx> <lry>
Added in version 3.3.
このオプションは,出力のカスタム範囲を提供します. これは extent オプションと排他的です.
- --projectionCheck
Added in version 3.3.
デフォルトでは,投影チェックは実行されません. このオプションを設定することで,すべてのバンドの投影が同じでない場合,操作は失敗します.
- --creation-option=<option>
出力フォーマットドライバに作成オプションを渡します. 複数のオプションをリストアップできます. 各フォーマットの法的な作成オプションについては,フォーマット固有のドキュメントを参照してください.
- --co=<option>
creation-option と同じです.
- --allBands=[a-z, A-Z]
指定されたラスタのすべてのバンド(a-z, A-Z)を処理します. すべてのバンドに対して単一の計算が必要です.
- --overwrite
出力ファイルがすでに存在する場合は上書きします. ここでの上書きは,ファイルをゼロから削除して再作成することとして理解する必要があります.このオプションが指定されていない場合,出力ファイルがすでに存在する場合,その場所で更新されます.
- --debug
デバッグ情報を出力します.
- --quiet
進行メッセージを抑制します.
Python オプション
Added in version 3.3.
次のオプションは, gdal_calc の Python インターフェースを使用して利用できます. コマンドプロンプトを使用しては利用できません.
- user_namespace
Calc 式で使用できるカスタム関数やその他の名前の辞書.
- return_ds
有効にすると,出力データセットは関数から返され,閉じられません.
- color_table
出力ラスタに使用する ColorTable オブジェクト(パレットインデックス解釈付き)を指定できます.
例
2 つのファイルを追加します:
gdal_calc -A input1.tif -B input2.tif --outfile=result.tif --calc="A+B"
2 つのレイヤーの平均:
gdal_calc -A input1.tif -B input2.tif --outfile=result.tif --calc="(A+B)/2"
注釈
前の例では,入力 A と B が同じデータ型である場合,例えば整数である場合,除算操作の前にオペランドの変換を強制する必要があることに注意してください.
gdal_calc -A input.tif -B input2.tif --outfile=result.tif --calc="(A.astype(numpy.float64) + B) / 2"
3 つのファイルを追加します(2 つのオプションで同じ結果):
gdal_calc -A input1.tif -B input2.tif -C input3.tif --outfile=result.tif --calc="A+B+C"
gdal_calc -A input1.tif -A input2.tif -A input3.tif --outfile=result.tif --calc="numpy.sum(A,axis=0)".
3 つのレイヤーの平均(2 つのオプションで同じ結果):
gdal_calc -A input1.tif -B input2.tif -C input3.tif --outfile=result.tif --calc="(A+B+C)/3"
gdal_calc -A input1.tif input2.tif input3.tif --outfile=result.tif --calc="numpy.average(a,axis=0)".
3 つのレイヤーの最大値(2 つのオプションで同じ結果):
gdal_calc -A input1.tif -B input2.tif -C input3.tif --outfile=result.tif --calc="numpy.max((A,B,C),axis=0)"
gdal_calc -A input1.tif input2.tif input3.tif --outfile=result.tif --calc="numpy.max(A,axis=0)"
0 以下の値を null に設定します:
gdal_calc -A input.tif --outfile=result.tif --calc="A*(A>0)" --NoDataValue=0
入力から値の範囲を保持するための論理演算子の使用:
gdal_calc -A input.tif --outfile=result.tif --calc="A*logical_and(A>100,A<150)"
複数のバンドで作業:
gdal_calc -A input.tif --A_band=1 -B input.tif --B_band=2 \
--outfile=result.tif --calc="(A+B)/2" --calc="B*logical_and(A>100,A<150)"