gdalwarpで通常のファイルサイズの膨張?


19

を使用gdalwarp-tapて多数のラスタを(グリッドを介して)グリッドに配置した後、出力ラスタが元のラスタよりも大幅に大きいことに気付きました。かなり徹底的なWeb検索により、このTracの問題が判明しました。

フランク・ウォーマーダムはその理由を説明しました:

「慎重に検討すると、問題のファイルの違いは、gdal_translateがTIFFWriteScanline()インターフェースを使用してGTiffDataset :: CreateCopy?()内から出力ファイルを書き込み、これが最終的な「ストリップ」画像領域を完成させるために必要なファイル。ただし、gdalwarpはblockioインターフェイスを通過し、ファイルの終わりから落ちる部分も含めて、完全な最終ストリップを書き込みます。」

ただし、このTracの問題は7年前のものであり、GDALユーティリティにいくつかの変更が加えられたことを知っgdalwarpています。上記の理由がまだ当てはまるかどうか、そして私が見ているファイルサイズの増加が「正常」かどうかを知りたいのです。ここでの「通常」という言葉は、当然のこと予想されることを意味するかもしれませんが、より重要なことは、出力ラスタファイルのサイズを小さくするなど、影響を軽減するためにできることはありますか?以下は、私が経験しているファイルサイズの膨張の表です。

Input File Size (bytes)     Output File Size (bytes)    Inflation
1437380431                  1698334217                   18%
1428001178                  1698334433                   19%
  41683165                   137036637                  228%

入力TIFFファイルはArcGISで作成されたため、外部のワールドファイル、XMLおよびDBFファイルがありますが、これらはファイルサイズの違いを補うものではありません。gdalwarpこれらすべてのケースで使用した呼び出しのサンプルを次に示します。実際の実行はPythonによって処理されましたsubprocesssubprocess.Popen):

$ gdalwarp -tap -tr 30 30 -t_srs "+proj=aea +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs" -co "COMPRESS=LZW" input_file.tif output_file.tif

まれに圧縮により大きなファイルが作成されることを理解していますが、LZW圧縮を使用しなくても効果は同じです。表の比率は、LZW圧縮の場合です。

回答:


30

これgdalwarpが圧縮をうまく処理できないことはよく知られた長年の問題です。解決策は、圧縮せずにgdalwarpしてから、圧縮してgdal_translateすることです。

最初にVRTにgdalwarpする2つの長いプロセスを回避するために、それは本当に速いです、そして-co compress = lzwオプションでgdal_translate。

すなわち

$ gdalwarp -tap -tr 30 30 -t_srs "etc..." -of vrt input_file.tif output_file.vrt
$ gdal_translate -co compress=LZW output_file.vrt output_file.tif

GDAL 2xを使用している場合、VRTに書き込み、/vsistdoutそれをパイプして入力としてgdal_translate指定することにより、これを1つの操作に結合でき/vsistdinます。例えば:

gdalwarp -q -t_srs EPSG:32611 -of vrt input_file.tif /vsistdout/ | gdal_translate -co compress=lzw  /vsistdin/ output_file.tif

整数オーバーフローエラーを回避するために使用したソリューションに感謝します。しかし、エラーは解決しますが、陰影起伏に奇妙なパターンが現れます。私はあなたが見てみることができれば、それは素晴らしいことだ、ここでは別の質問を投稿:gis.stackexchange.com/questions/292632/...
ティムAutin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.