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>
Error threshold for transformation approximation, expressed as a number of source pixels. Defaults to 0.125 pixels unless the
RPC_DEM
transformer option is specified, in which case an exact transformer, i.e.err_threshold=0
, will be used.
- -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 以降)注釈
When downsampling is performed (use of
-tr
or-ts
), existing overviews (either internal/implicit or external ones) on the source image will be used by default by selecting the closest overview to the desired output resolution. The resampling method used to create those overviews is generally not the one you specify through the-r
option. Some formats, like JPEG2000, can contain significant outliers due to how wavelet compression works. It might thus be useful in those situations to use the-ovr
NONE
option to prevent existing overviews to be used.
- -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>
Set the amount of memory that the warp API is allowed to use for caching. Defaults to 64 MB. Since GDAL 3.10, the value can be specified either as a fixed amount of memory (e.g.,
-wm 200MB
,-wm 1G
) or as a percentage of usable RAM (-wm 10%
). In earlier versions, or if a unit is not specified, the value is interpreted as being in megabytes if the value is less than 10000. For values >=10000, it is interpreted as bytes.ワーパーは, 入力および出力画像配列と補助マスキング配列を保持するために必要なメモリを合計し, それらが許容される "ワープメモリ" よりも大きい場合, チャンクをより小さなチャンクに分割して再試行します.
-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>
宛先ファイル名.
Overview
gdalwarp transforms images between different coordinate reference systems and spatial resolutions.
First, gdalwarp must determine the extent and resolution of the
output, if these have not been specified using -te
and -tr
.
These are determined by transforming a sample of points from the source CRS to
the destination CRS. Details of the procedure can be found in the documentation
for GDALSuggestedWarpOutput()
. If multiple inputs are provided to
gdalwarp, the output extent will be calculated to cover all of them,
at a resolution consistent with the highest-resolution input.
Once the dimensions of the output image have been determined,
gdalwarp divides the output image into chunks that can be processed
independently within the amount of memory specified by -wm
.
gdalwarp then iterates over scanlines in these chunks, and for each
output pixel determines a rectangular region of source pixels that contribute
to the value of the output pixel. The dimensions of this rectangular region
are typically determined by estimating the relative scales of the source and
destination raster, but can be manually specified (see documentation of the
XSCALE
parameter in GDALWarpOptions::papszWarpOptions
).
Because the source region is a simple rectangle, it is not possible for an
output pixel to be associated with source pixels from both sides of the
antimeridian or pole (when transforming from geographic coordinates).
The rectangular region of source pixels is then provided to a function that
performs the resampling algorithm selected with -r
. Depending on the
resampling algorithm and relative scales of the source and destination rasters,
source pixels may be weighted either according to the approximate fraction of
the source pixel that is covered by the destination pixel (e.g., "mean" and
"sum" resampling), or by horizontal and vertical Cartesian distances between
the center of the source pixel and the center of the target pixel (e.g.,
bilinear or cubic spline resampling). In the latter case, the relative weight
of an individual source pixel is determined by the product of the weights
determined for its row and column; the diagonal Cartesian distance is not
calculated.
Writing to an existing file
Mosaicing into an existing output file is supported if the output file already
exists. The spatial extent of the existing file will not be modified to
accommodate new data, so you may have to remove it in that case, or use the
-overwrite
option.
Polygon cutlines may be used as a mask to restrict the area of the destination
file that may be updated, including blending. If the OGR layer containing the
cutline features has no explicit SRS, the cutline features are assumed to be in
the SRS of the destination file. When writing to a not yet existing target
dataset, its extent will be the one of the original raster unless -te
or -crop_to_cutline
are specified.
ノーデータ / ソース有効マスクの処理
ソースピクセルの無効な値は, ソースバンドに設定されたノーデータ値メタデータ, マスクバンド, アルファバンド, または -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
近似変換
By default gdalwarp uses a linear approximator for the transformations with a permitted error of 0.125 pixels in the source dataset. The approximator precisely transforms three points per output scanline (the start, middle, and end) from a row and column in the output dataset to a row and column in the source dataset. It then compares a linear approximation of the center point coordinates to the precisely transformed value. If the sum of the horizontal and vertical errors is less than the error threshold then the remaining source points are approximated using linear interpolation between the start and middle point, and between the middle and end point. If the error exceeds the threshold, the scanline is split into two sections and the approximator is recursively applied to each section until the error is less than the threshold or all points have been exactly computed.
The error threshold (in source dataset pixels) can be controlled with the gdalwarp
-et
switch. If you want to compare a true pixel-by-pixel reprojection
use -et 0
which disables this approximator entirely.
垂直変換
While gdalwarp is most commonly used to perform coordinate transformations in the 2D space, it can also perform vertical transformations. Vertical transformations are automatically performed when the following two conditions are met:
at least one of the source or target CRS has an explicit vertical CRS (as part of a compound CRS) or is a 3D (generally geographic) CRS, and
the raster has a single band
このモードは, -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 からも呼び出すことができます.