gdalwarp
画像再投影および変形ユーティリティ
概要
gdalwarp [--help] [--long-usage] [--help-general]
[--quiet] [-overwrite] [-of <output_format>] [-co <NAME>=<VALUE>]...
[-s_srs <srs_def>] [-t_srs <srs_def>]
[[-srcalpha]|[-nosrcalpha]]
[-dstalpha] [-tr <xres> <yres>|square] [-ts <width> <height>]
[-te <xmin> <ymin> <xmax> <ymax]
[-te_srs <srs_def>]
[-r near|bilinear|cubic|cubicspline|lanczos|average|rms|mode|min|max|med|q1|q3|sum]
[-ot Byte|Int8|[U]Int{16|32|64}|CInt{16|32}|[C]Float{32|64}]
<src_dataset_name>... <dst_dataset_name>
Advanced options:
[-wo <NAME>=<VALUE>]... [-multi]
[-s_coord_epoch <epoch>] [-t_coord_epoch <epoch>] [-ct <string>]
[[-tps]|[-rpc]|[-geoloc]]
[-order <1|2|3>] [-refine_gcps <tolerance> [<minimum_gcps>]]
[-to <NAME>=<VALUE>]...
[-et <err_threshold>] [-wm <memory_in_mb>]
[-srcnodata "<value>[ <value>]..."]
[-dstnodata "<value>[ <value>]..."] [-tap]
[-wt Byte|Int8|[U]Int{16|32|64}|CInt{16|32}|[C]Float{32|64}]
[-cutline <datasource>|<WKT>] [-cutline_srs <srs_def>]
[-cwhere <expression>]
[[-cl <layername>]|[-csql <query>]]
[-cblend <distance>] [-crop_to_cutline]
[-nomd] [-cvmd <meta_conflict_value>] [-setci]
[-oo <NAME>=<VALUE>]... [-doo <NAME>=<VALUE>]...
[-ovr <level>|AUTO|AUTO-<n>|NONE]
[[-vshift]|[-novshiftgrid]]
[-if <format>]... [-srcband <band>]... [-dstband <band>]...
説明
gdalwarp ユーティリティは画像モザイキング, 再投影および変形ユーティリティです. このプログラムは, 任意のサポートされている投影法に再投影でき, 画像が制御情報を持つ "raw" である場合は画像に格納された GCP を適用することもできます.
- --help
このヘルプメッセージを表示して終了します
- --help-general
一般的な GDAL コマンドラインオプションの使用方法を簡単に表示して終了します.
- -b <n>
- -srcband <n>
Added in version 3.7.
変形する入力バンド番号を指定します (1 からソースデータセットのバンド数まで).
このオプションは, 入力バンドのサブセットを変形するために使用されます. 指定されていない場合は, すべての入力バンドが使用されます.
このオプションは複数回繰り返すことができ, 複数の入力バンドを選択します. バンドが指定された順序が出力データセットに表示される順序になります (
-dstband
が指定されていない限り).アルファバンドはリストに指定しないでください. 自動的に取得されます (
-nosrcalpha
が指定されていない限り).次の呼び出しは, Blue, Green, Red, NearInfraRed として並べられたバンドを Red, Green, Blue として並べられた出力データセットで変形します.
gdalwarp in_bgrn.tif out_rgb.tif -b 3 -b 2 -b 1 -overwrite
- -dstband <n>
Added in version 3.7.
変形する出力バンド番号を指定します. 実際には, 既存のデータセットを更新する場合にのみ有用です. たとえば, 1 回に 1 つのバンドを変形するために使用します.
gdal_create -if in_red.tif -bands 3 out_rgb.tif gdalwarp in_red.tif out_rgb.tif -srcband 1 -dstband 1 gdalwarp in_green.tif out_rgb.tif -srcband 1 -dstband 2 gdalwarp in_blue.tif out_rgb.tif -srcband 1 -dstband 3
-srcband
が指定されている場合,-srcband
の数と同じ数の-dstband
がある必要があります.出力アルファバンドは指定しないでください. 入力データセットにアルファバンドがある場合や
-dstalpha
が指定されている場合は, 自動的に作成されます.-dstband
が指定されていない場合,-dstband 1 -dstband 2 ... -dstband N
が仮定されます. ここで, N は入力バンドの数です (-srcband
で明示的に指定されているか暗黙的に指定されています).
- -s_srs <srs def>
ソース空間参照を設定します. 指定されていない場合, 入力データセットで見つかった SRS が使用されます.
渡すことができる座標参照システムは, OGRSpatialReference.SetFromUserInput() 呼び出しでサポートされているものです. これには, EPSG プロジェクト済み, 地理的または複合 CRS (つまりEPSG:4296), 既知のテキスト (WKT) CRS 定義, PROJ.4 宣言, または WKT CRS 定義を含む .prj ファイルの名前が含まれます.
GDAL 2.2 以降, SRS に PROJ.4 geoidgrids を指す明示的な垂直基準がある場合, 入力データセットが単一バンドデータセットである場合, データセットの値に垂直補正が適用されます.
- -s_coord_epoch <epoch>
Added in version 3.4.
ソース SRS にリンクされた座標エポックを割り当てます. ソース SRS が動的 CRS の場合に便利です.
-s_srs
が使用されている場合のみ考慮されます.PROJ 9.4 以前,
-s_coord_epoch
と-t_coord_epoch
は, 2 つの動的 CRS 間の変換のサポートがないため, 相互に排他的でした.
- -t_srs <srs_def>
ターゲット空間参照を設定します.
再投影が発生するためには, ソース SRS が利用可能である必要があります. ソース SRS は, 利用可能な場合は入力データセットで見つかったものであり, ユーザーによって
-s_srs
で上書きされます.渡すことができる座標参照システムは, OGRSpatialReference.SetFromUserInput() 呼び出しでサポートされているものです. これには, EPSG プロジェクト済み, 地理的または複合 CRS (つまりEPSG:4296), 既知のテキスト (WKT) CRS 定義, PROJ.4 宣言, または WKT CRS 定義を含む .prj ファイルの名前が含まれます.
GDAL 2.2 以降, SRS に PROJ.4 geoidgrids を指す明示的な垂直基準がある場合, 入力データセットが単一バンドデータセットである場合, データセットの値に垂直補正が適用されます.
- -t_coord_epoch <epoch>
Added in version 3.4.
ターゲット SRS にリンクされた座標エポックを割り当てます. ターゲット SRS が動的 CRS の場合に便利です.
-t_srs
が使用されている場合のみ考慮されます.PROJ 9.4 以前,
-s_coord_epoch
と-t_coord_epoch
は, 2 つの動的 CRS 間の変換のサポートがないため, 相互に排他的でした.
- -ct <string>
PROJ 文字列 (単一ステップ操作または +proj=pipeline で始まる複数ステップ文字列), CoordinateOperation を記述する WKT2 文字列, またはソースからターゲット CRS へのデフォルト変換を上書きする urn:ogc:def:coordinateOperation:EPSG::XXXX URN.
通常, ソース CRS が北方/東方軸順序を持つ場合はパイプラインの先頭に
step proj=axisswap order=2,1
を含め, ターゲット CRS が北方/東方軸順序を持つ場合はパイプラインの末尾に含める必要があります.ソースとターゲット CRS の軸順序を考慮する必要があります.新しい出力ファイルを作成する場合,
-t_srs
を使用して出力ファイルのメタデータにターゲット CRS を書き込む必要がありますが, CoordinateOperation のパラメータは標準変換のパラメータを上書きします.Added in version 3.0.
- -to <NAME>=<VALUE>
GDALCreateGenImgProjTransformer2()
に渡すのに適した変換オプションを設定します.RPC 固有のオプションについては,GDALCreateRPCTransformerV2()
を参照してください.
- -vshift
垂直シフトの使用を強制します. このオプションは一般的には必要ありませんが, 明示的な座標変換(
-ct
)を使用し, 明示的なソースとターゲット SRS を指定しない場合にのみ必要です.Added in version 3.4.
- -novshift
ソースまたはターゲット SRS のいずれかが明示的な垂直基準を持ち, 入力データセットが単一バンドデータセットの場合,垂直シフトの使用を無効にします.
注釈
このオプションは GDAL 2.2 から 3.3 では
-novshiftgrid
という名前でした.Added in version 3.4.
- -order <n>
変形に使用される多項式の順序 (1 から 3). デフォルトは, GCP の数に基づいて多項式の順序を選択します.
- -tps
利用可能な GCP に基づいて薄板スプライン変換器の使用を強制します.
- -rpc
RPC の使用を強制します.
- -geoloc
ジオロケーション配列の使用を強制します.
- -et <err_threshold>
変換近似のエラー閾値 (ピクセル単位 - デフォルトは 0.125 ですが, GDAL 2.1 以降, RPC_DEM 変換器オプションが指定されている場合は, 正確な変換器, つまり err_threshold=0 が使用されます).
- -refine_gcps <tolerance> [<minimum_gcps>]
外れ値を自動的に除外して GCP を洗練します. 外れ値は, 最小_gcps が残っているか, 外れ値が検出されなくなるまで除外されます. 許容値は, GCP が除外されるタイミングを調整するために渡されます. GCP の洗練は多項式補間とのみ機能します. 許容値は, 投影が利用できない場合はピクセル単位で, それ以外の場合は SRS 単位で指定されます.minimum_gcps が提供されていない場合, 多項式モデルに従って最小 GCP が使用されます.
- -te <xmin> <ymin> <xmax> <ymax>
作成される出力ファイルのジオリファレンスされた範囲を設定します (デフォルトではターゲット SRS または
-te_srs
で指定された SRS で).
- -te_srs <srs_def>
-te で指定された座標を解釈する SRS を指定します. <srs_def> は, 通常の GDAL/OGR 形式, 完全な WKT, PROJ.4, EPSG:n または WKT を含むファイルのいずれかです. これは, 出力データセットのターゲット SRS である-t_srs と混同してはいけません.
-te_srs
は, 出力座標を地理的な経度/緯度 SRS で知っている場合でも, 投影された座標系で結果を得たい場合などの便利な機能です.
- -tr <xres> <yres> | -tr square
出力ファイルの解像度を設定します (ターゲットのジオリファレンス単位で).
指定されていない場合 (または -te と -ts から推論されていない場合), gdalwarp は, 一般的な場合,xres=yres の出力ラスタを生成します.
GDAL 3.7 以降,
-tr
または-ts
のいずれも指定されていない場合, 再投影が関係していない場合 (ジオロケーション配列や RPC を考慮に入れることを含む), ソースファイルの解像度が保持されます (以前のバージョンでは, 常に xres=yres の出力ラスタが生成されました).square
を-tr
の値として指定することで, 依然として正方形のピクセルを生成することができます.
- -tap
(ターゲットに整列したピクセル) 出力ファイルの範囲の座標を
-tr
の値に整列させ, 整列した範囲が最小範囲を含むようにします (実際の変形前に検出された空白のエッジ行/列は, GDAL 3.8 以降削除されます). 整列とは, xmin / resx, ymin / resy, xmax / resx, ymax / resy が整数値であることを意味します.
- -ts <width> <height>
ピクセル数と行数の出力ファイルサイズを設定します. 幅または高さが 0 に設定されている場合, 他の次元は計算された解像度から推測されます.
-ts
は-tr
とは使用できないことに注意してください.
- -ovr <level>|AUTO|AUTO-<n>|NONE
使用するソースファイルのオーバービューレベルを指定します. デフォルトの選択肢である AUTO は, ターゲット解像度に最も近い解像度のオーバービューレベルを選択します. 特定のレベルを選択するには, 整数値 (0 から始まる, つまり 0=1 番目のオーバービューレベル) を指定します. AUTO よりも低いオーバービューレベルを選択するには, AUTO-n と指定します. ここで n は 1 以上の整数です. または, NONE を指定してベース解像度を使用するように強制します (オーバービューが低品質のリサンプリング方法で生成されており, 変形が高品質のリサンプリング方法を使用して行われている場合に便利です).
- -wo <NAME>=<VALUE>
変形オプションを設定します.
GDALWarpOptions::papszWarpOptions
ドキュメントにすべてのオプションが表示されます. 複数の-wo
オプションをリストアップすることができます.
- -ot <type>
ドライバでサポートされている特定のデータ型を持つ出力画像バンドを強制します. これは, 次のいずれかである可能性があります:
Byte
,Int8
,UInt16
,Int16
,UInt32
,Int32
,UInt64
,Int64
,Float32
,Float64
,CInt16
,CInt32
,CFloat32
または``CFloat64``.
- -wt <type>
作業ピクセルデータ型. ソース画像と宛先画像バッファ内のピクセルのデータ型.
- -r <resampling_method>
使用するリサンプリング方法. 使用可能な方法は次のとおりです:
near
: 最近傍補間 (デフォルト, 最速のアルゴリズム, 最悪の補間品質).bilinear
: バイリニア補間.cubic
: cubic 補間.cubicspline
: cubic spline 補間.lanczos
: Lanczos windowed sinc 補間.average
: average 補間, すべての非NODATAの寄与ピクセルの加重背筋を計算します.rms
: すべての非NODATAの寄与ピクセルの平均二乗平方根 / 平方平均 (GDAL >= 3.3)mode
: mode 補間, サンプリングされたすべての点の中で最も頻繁に現れる値を選択します. 引き分けの場合, 最初にモードとして識別された値が選択されます.max
: 最大値補間, すべての非NODATAの寄与ピクセルから最大値を選択します.min
: 最小値補間, すべての非NODATAの寄与ピクセルから最小値を選択します.med
: median 補間, すべての非NODATAの寄与ピクセルの中央値を選択します.q1
: 第 1 四分位数補間, すべての非NODATAの寄与ピクセルの第 1 四分位数値を選択します.q3
: 第 3 四分位数補間, すべての非NODATAの寄与ピクセルの第 3 四分位数値を選択します.sum
: すべての非NODATAの寄与ピクセルの加重和を計算します (GDAL 3.1 以降)注釈
ダウンサンプリングが実行される場合 (
-tr
または-ts
の使用), ソース画像の既存のオーバービュー (内部/暗黙的または外部のいずれか) は, 通常, 出力解像度に最も近いオーバービューを選択してデフォルトで使用されます. これらのオーバービューを作成するために使用されるリサンプリング方法は, 通常,-r
オプションを通じて指定する方法ではありません. JPEG2000 のような一部のフォーマットは, ウェーブレット圧縮の動作による重要な外れ値を含むことがあります. そのような状況では, 既存のオーバービューが使用されないようにするために,-ovr
NONE
オプションを使用すると便利です.
- -srcnodata "<value>[ <value>]..."
入力バンドのためのノーデータマスク値を設定します (異なる値を各バンドに供給することができます). 複数の値が供給される場合, すべての値を引用符で囲んで, 1 つのオペレーティングシステム引数としてまとめておく必要があります. マスクされた値は補間に使用されません (ノーデータ / ソース有効マスクの処理 で詳細を説明しています).
ソースデータセットの固有のノーデータ設定を無視するには,
None
の値を使用します.このオプションが
None
以外の値に設定されている場合,UNIFIED_SRC_NODATA
変形オプション(GDALWarpOptions::papszWarpOptions
) が明示的に設定されていない場合にYES
に設定されます.-srcnodata
が明示的に設定されていない場合, ただしソースデータセットにノーデータ値がある場合, デフォルトでUNIFIED_SRC_NODATA
はPARTIAL
で考慮されます.
- -dstnodata "<value>[ <value>]..."
出力バンドのためのノーデータ値を設定します (異なる値を各バンドに供給することができます). 複数の値が供給される場合, すべての値を引用符で囲んで, 1 つのオペレーティングシステム引数としてまとめておく必要があります. 新しいファイルはこの値で初期化され, 可能であればノーデータ値は出力ファイルに記録されます. ノーデータが定義されていないことを確認するには,
None
の値を使用します. この引数が使用されていない場合, ノーデータ値はソースデータセットからコピーされます.
- -srcalpha
ソース画像の最後のバンドをソースアルファバンドとして扱うように強制します.
- -nosrcalpha
ソース画像のアルファバンドがそのように考慮されないようにします (通常のバンドとして変形されます)
Added in version 2.2.
- -dstalpha
ノーデータ (未設定/透過) ピクセルを識別するための出力アルファバンドを作成します.
- -wm <memory_in_mb>
ワープ API がキャッシュに使用するメモリ量を設定します. 値が 10000 未満の場合, メガバイト単位として解釈されます. 10000 以上の値の場合, バイトとして解釈されます.
ワーパーは, 入力および出力画像配列と補助マスキング配列を保持するために必要なメモリを合計し, それらが許容される "ワープメモリ" よりも大きい場合, チャンクをより小さなチャンクに分割して再試行します.
-wm 値が非常に小さい場合, 多くの小さなチャンクを処理するための追加のオーバーヘッドが発生するため, 大きく設定する方が良いですが, それは収穫逓減の問題です.
- -multi
マルチスレッドワーピング実装を使用します. 2 つのスレッドが画像のチャンクを処理し, 入出力操作を同時に実行します. 計算自体はマルチスレッド化されていません. そのため,
-wo
NUM_THREADS=val/ALL_CPUSオプションを使用することができます. これは-multi
と組み合わせて使用することができます.
- -q
静かにします.
- -if <format>
入力ファイルを開こうとするフォーマット/ドライバ名. 通常, 指定する必要はありませんが, 適切なドライバを選択できない場合に自動ドライバ検出をスキップするために使用できます. このオプションは複数回繰り返すことができ, 複数の候補ドライバを指定するために使用できます. ただし, これらのドライバをデータセットを開くように強制するわけではありません.特に, 一部のドライバはファイル拡張子に要件を持っています.
Added in version 3.2.
- -of <format>
出力フォーマットを選択します. GDAL 2.3 以降, 指定されていない場合, フォーマットは拡張子から推測されます(以前は GTiff でした). 短いフォーマット名を使用します.
- -co <NAME>=<VALUE>
多くのフォーマットには, 作成されるファイルについての特定の点を制御するために使用できる 1 つ以上のオプションがあります. たとえば, GeoTIFF ドライバは, 圧縮を制御する作成オプションや, ファイルをタイル化するかどうかを制御する作成オプションをサポートしています.
利用可能な作成オプションはフォーマットドライバによって異なり, 一部のシンプルなフォーマットには全く作成オプションがありません. フォーマットでサポートされているオプションのリストは, --formats コマンドラインオプションでリストアップすることができますが, フォーマットのドキュメントがドライバ作成オプションに関する情報の決定的なソースです. 各フォーマットの法的な作成オプションについては, ラスタードライバー フォーマット固有のドキュメントを参照してください.
- -cutline <datasource>|<WKT>
ベクトルデータセットの名前からブレンドカットラインの使用を有効にします. GDAL 3.9 以降, POLYGON またはMULTIPOLYGON で始まる WKT ジオメトリ文字列も指定できます.
- -cutline_srs <srs_def>
Added in version 3.9.
カットラインの SRS を設定または上書きします.
- -cl <layername>
カットラインデータソースから名前付きレイヤを選択します.
- -cwhere <expression>
属性クエリに基づいて希望のカットラインフィーチャを制限します.
- -cblend <distance>
カットライン上でブレンドするために使用するブレンド距離を設定します (ピクセル単位).
- -crop_to_cutline
ターゲットデータセットの範囲をカットラインの範囲に切り取ります.
- -overwrite
ターゲットデータセットが既に存在する場合, 上書きします. ここでの上書きは, ファイルをゼロから削除して再作成することとして理解する必要があります. このオプションが指定されていない場合, 出力ファイルが既に存在する場合, その場所で更新されます.
- -nomd
メタデータをコピーしないでください. このオプションがない場合, データセットおよびバンドメタデータ (および一部のバンド情報) は最初のソースデータセットからコピーされます. ソースデータセット間で異なる項目は * に設定されます (
-cvmd
オプションを参照してください).
- -cvmd <meta_conflict_value>
ソースデータセット間で競合するメタデータ項目を設定する値 (デフォルトは "*"). 競合する項目を削除するには"" を使用します.
- -setci
ターゲットデータセットのバンドのカラーインタープリテーションをソースデータセットから設定します.
- -oo <NAME>=<VALUE>
データセットオープンオプション (フォーマット固有)
- -doo <NAME>=<VALUE>
出力データセットオープンオプション (フォーマット固有)
Added in version 2.1.
- <src_dataset_name>
ソースファイル名.
- <dst_dataset_name>
宛先ファイル名.
既存の出力ファイルにモザイクを作成することがサポートされています. 既存のファイルの空間範囲は新しいデータに対応するために変更されませんので, その場合は削除するか, -overwrite オプションを使用する必要があります.
ポリゴンカットラインは, ブレンドを含む, 更新できる宛先ファイルの領域を制限するためのマスクとして使用できます. カットラインフィーチャを含む OGR レイヤに明示的な SRS がない場合, カットラインフィーチャは宛先ファイルの SRS である必要があります. まだ存在しないターゲットデータセットに書き込む場合, -te または -crop_to_cutline が指定されていない限り, その範囲は元のラスタの範囲になります.
GDAL 3.1 以降, CreateCopy 操作のみをサポートするドライバを出力フォーマットとして使用することが可能です. これは内部的に一時ファイルの作成を意味する場合があります.
ノーデータ / ソース有効マスクの処理
ソースピクセルの無効な値は, ソースバンドに設定されたノーデータ値メタデータ, マスクバンド, アルファバンド, または -srcnodata
の使用によって識別され, 補間に使用されません. それがどのように考慮されるかの詳細は, 補間カーネルに依存します:
最近傍補間の場合, 各ターゲットピクセルについて, その中心の座標がソース座標に逆投影され, その座標を含むソースピクセルが識別されます. このソースピクセルが無効な場合, ターゲットピクセルはノーデータと見なされます.
バイリニア, 立方体, キュービックスプライン, ランチョスの場合, 各ターゲットピクセルについて, その中心の座標がソース座標に逆投影され, 対応するソースピクセルが識別されます. このソースピクセルが無効な場合, ターゲットピクセルはノーデータと見なされます. これらの補間カーネルはノンゼロカーネル半径を持っているため, このソースピクセルは他のいくつかのソースピクセルの 1 つに過ぎず, これらの他の寄与ソースピクセルに無効な値がある可能性があります. これらの無効な値を考慮するために使用される重みは, それらを無視するためにゼロに設定されます.
その他の補間方法の場合, 無効なソースピクセルは無視されます. 有効なもののみが考慮されます. 有効なものがない場合, ターゲットピクセルはノーデータと見なされます.
異なる無効値を持つ複数の画像に -srcnodata
を使用する場合, それらを同じ無視される値にするために事前処理するか, または各ファイルにノーデータフラグを設定する必要があります. 何らかの理由で元の値を保持する必要がある場合は, (b) を使用してください. たとえば:
# for this image we want to ignore black (0)
gdalwarp -srcnodata 0 -dstnodata 0 orig-ignore-black.tif black-nodata.tif
# and now we want to ignore white (0)
gdalwarp -srcnodata 255 -dstnodata 255 orig-ignore-white.tif white-nodata.tif
# and finally ignore a particular blue-grey (RGB 125 125 150)
gdalwarp -srcnodata "125 125 150" -dstnodata "125 125 150" orig-ignore-grey.tif grey-nodata.tif
# now we can mosaic them all and not worry about nodata parameters
gdalwarp black-nodata.tif grey-nodata.tif white-nodata.tif final-mosaic.tif
近似変換
デフォルトでは, gdalwarp は許容誤差 0.125 ピクセルで変換に対して線形近似器を使用します. 近似器は基本的にスキャンライン上の 3 つの点を変換します: 開始, 終了, および中間. 次に, 真のものと比較して中心の線形近似をエンドポイントに基づいて行い, エラーをチェックします. エラーがエラー閾値未満の場合, 残りの点が近似されます (中心点を利用して 2 つのチャンクに分割されます). エラーが閾値を超えると, スキャンラインは 2 つのセクションに分割され, エラーが閾値未満になるか, すべての点が正確に計算されるまで, 近似器が再帰的に各セクションに適用されます.
エラー閾値 (ピクセル単位) は gdalwarp -et
スイッチで制御できます. 真のピクセル単位の再投影を比較する場合は, -et 0
を使用してこの近似器を完全に無効にします.
垂直変換
gdalwarp は基本的に 2D 空間で座標変換を実行できますが, 垂直変換も実行できます. これは, 次の 2 つの条件が満たされると自動的に有効になります:
ソースまたはターゲットのいずれかに少なくとも 1 つの明示的な垂直 CRS (複合 CRS の一部) があるか, 3D (一般的に地理的) CRS である,
およびラスタに単一バンドがある.
このモードは, -vshift
を使用して強制することもできます (-ct
で指定された変換パイプラインが明示的に 3D でない CRS が関係している場合に実質的に有用です), または -novshift
で無効にすることもできます.
垂直変換が関係している場合, 通常, ジオイドグリッドから読み取ったシフト値が適用されます. これには, そのようなグリッドをインストールするか, PROJ ネットワーキング機能を有効にする必要があります. 詳細については PROJ のドキュメントを参照してください. シフトに加えて, ラスタ値は垂直単位の変更を考慮するために因子で乗算される場合があります. 優先的に, GDALRasterBand::GetUnitType()
が返す値が使用されます. 現在認識されている値は次のとおりです: m
, metre
, metre
, ft
, foot
, US survey foot
. バンドレベルで定義された単位タイプがない場合, ソース CRS の垂直単位が使用されます. ターゲット CRS の垂直単位も, その変換係数を決定するために使用されます. 変換係数は, -wo
で MULT_FACTOR_VERTICAL_SHIFT
ワーピングオプションを設定することで上書きできます. たとえば, 垂直単位の変更を無効にするには -wo MULT_FACTOR_VERTICAL_SHIFT=1
のようにします.
メモリ使用量
RAM を追加すると, gdalwarp の速度がほぼ確実に向上します. それはそれが価値があるかどうか, または速度の向上が著しいかどうかとは全く異なるものです. ディスクはプロセスの中で最も遅い部分です. デフォルトでは, gdalwarp はRAM をあまり活用しません. フラグ -wm 500
を使用すると, 一度に 500MB のチャンクで操作されるため, デフォルトよりも良いです. -wm
で指定されたワープメモリはすべてのスレッドで共有されるため, -wo NUM_THREADS
( GDAL_NUM_THREADS
の場合も) が 1 より大きい場合に gdalwarp を実行するときにこの値を増やすと特に有益です.
I/O ブロックキャッシュサイズを増やすことも役立ちます. これは, 次のように GDAL_CACHEMAX
設定を行うことで行うことができます:
gdalwarp --config GDAL_CACHEMAX 500 -wm 500 ...
これは, 読み書きキャッシングに 500MB の RAM を使用し, ワープ中の作業バッファに 500MB の RAM を使用します. それ以上のメモリを使用しても, 大きな違いはないと疑われます.
gdalwarp が実行中に CPU 使用率をチェックしてください. それが 100% 未満である場合, それは IO に制約されていることがわかります. それ以外の場合は CPU に制約されています. --debug
オプションも有用な情報を提供する場合があります. たとえば, 次のように実行した後:
gdalwarp --debug on abc.tif def.tif
次のようなメッセージが出力されます:
GDAL: 224 block reads on 32 block band 1 of utm.tif
この場合, utm.tif
のバンド 1 には 32 ブロックがありますが, 224 ブロックの読み取りが行われたと言っており, 多くのデータが再読み込みされていることを示しています. おそらく, 限られた IO キャッシュのためです. また, 次のようなメッセージも表示されます:
GDAL: GDALWarpKernel()::GWKNearestNoMasksByte()
Src=0,0,512x512 Dst=0,0,512x512
Src/Dst ウィンドウは使用されている "チャンクサイズ" を示しています. この場合, とても小さい私の全画像です. チャンクに分割されていることがわかった場合, -wm
を増やすと多少助けになるかもしれません.
メモリよりもはるかに重要なのは, ワーパーで最適化されたパスを通ることを確認することです. いつでも GDALWarpKernel()::GWKGeneralCase()
と報告されている場合, それは比較的遅いことを知っています. 基本的に, 最速の状況は, ノードータやアルファマスキングが有効でない 8 ビットデータの最近傍補間です.
圧縮された出力
場合によっては, gdalwarp の出力が元のものよりもはるかに大きくなることがあります. 同じ圧縮アルゴリズムが使用されていてもです. デフォルトでは, gdalwarp は出力フォーマットのブロック/タイル/ストリップの境界に必ずしも整列していないチャンクで動作するため, これにより部分ブロックの繰り返し圧縮/解凍が発生し, 出力フォーマットでのスペースが失われる可能性があります.
状況は, OPTIMIZE_SIZE
ワーピングオプション (-wo OPTIMIZE_SIZE=YES
) を使用することで改善できますが, ソースとターゲットの投影によっては, ワーピングプロセスが大幅に遅くなる可能性もあることに注意してください.
別の可能性は, 圧縮なしで gdalwarp を使用して, 圧縮を伴う gdal_translate を後に続けることです:
gdalwarp infile tempfile.tif ...options...
gdal_translate tempfile.tif outfile.tif -co compress=lzw ...etc.
または, gdalwarp の出力フォーマットとして VRT ファイルを使用することもできます. VRT ファイルはすぐに作成されるXML ファイルです. gdal_translate 操作はもちろん少し遅くなりますが, 実際のワーピング操作を行います.
gdalwarp -of VRT infile tempfile.vrt ...options...
gdal_translate tempfile.vrt outfile.tif -co compress=lzw ...etc.
例
基本的な変換:
gdalwarp -t_srs EPSG:4326 input.tif output.tif
たとえば, 四隅を緯度/経度にマッピングするコントロールポイントで保存された GeoTIFF の 8 ビットスポットシーンを, 次のようなコマンドでUTM 投影に変換できます:
gdalwarp -t_srs '+proj=utm +zone=11 +datum=WGS84' -overwrite raw_spot.tif utm11.tif
たとえば, 四隅を緯度/経度にマッピングするコントロールポイントで保存された HDF の ASTER 画像の 2 番目のチャンネルを, 次のようなコマンドで UTM 投影に変換できます:
Added in version 2.2.
gdalwarp -overwrite HDF4_SDS:ASTER_L1B:"pg-PR1B0000-2002031402_100_001":2 \
pg-PR1B0000-2002031402_100_001_2.tif
ジオリファレンスされていない画像にカットラインを適用し, ピクセル (220,60) からピクセル (1160,690) までクリップするには:
gdalwarp -overwrite -to SRC_METHOD=NO_GEOTRANSFORM -to DST_METHOD=NO_GEOTRANSFORM \
-te 220 60 1160 690 -cutline cutline.csv in.png out.tif
cutline.csv の内容は次のようになります:
id,WKT
1,"POLYGON((....))"
ジオイド標高 (EGM96 を使用) から WGS84 楕円体高に DEM を変換するには:
Added in version 2.2.
gdalwarp -overwrite in_dem.tif out_dem.tif -s_srs EPSG:4326+5773 -t_srs EPSG:4979
C API
このユーティリティは, GDALWarp()
で C からも呼び出すことができます.