Birkaç gdalwarp
raster projelendirmek ve hizalamak için -tap
kullandıktan sonra çıktı rasterlerinin orijinal rasterlerden önemli ölçüde daha büyük olduğunu fark ettim. Oldukça kapsamlı bir web araması bu Trac sorununu ortaya çıkardı :
Frank Warmerdam bunun nedenini açıkladı:
"Dikkatli bir incelemede, söz konusu dosyadaki fark, gdal_translate'in çıktı dosyasını GTiffDataset :: CreateCopy? () İçinden yazmak için TIFFWriteScanline () arayüzünü kullanması ve bunun yalnızca son 'şeridin' tam görüntü alanına gereklidir gibi dosya. Ama gdalwarp dosyanın sonuna düşer komple nihai şeridi, hatta bir kısmını yazıyor blockio arabirimi üzerinden gider."
Ancak bu Trac sorunu ~ 7 yaşında ve GDAL yardımcı programlarında bazı değişiklikler olduğunu biliyorum, gdalwarp
o zamandan beri yapıldı. Yukarıdaki muhakemenin hala devam edip etmediğini ve gördüğüm dosya boyutu enflasyonunun "normal" olup olmadığını bilmek istiyorum. Buradaki "normal" kelimesi , şaşırtıcı veya beklenen anlamına gelebilir , ancak daha da önemlisi: etkileri azaltmak için yani çıktı raster dosya boyutunu küçültmek için yapılabilecek herhangi bir şey var mı? Aşağıda, yaşadığım dosya boyutu enflasyonunun bir tablosu bulunmaktadır.
Input File Size (bytes) Output File Size (bytes) Inflation
1437380431 1698334217 18%
1428001178 1698334433 19%
41683165 137036637 228%
Giriş TIFF dosyaları ArcGIS'de oluşturulmuştur ve bu nedenle harici Worldfiles, XML ve DBF dosyaları vardır, ancak bunlar dosya boyutundaki farkı oluşturmaz. İşte gdalwarp
tüm bu durumlarda kullandığım örnek bir çağrı; gerçek yürütme bir Python subprocess
( subprocess.Popen
) tarafından işlendi :
$ 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
Nadir durumlarda sıkıştırma daha büyük bir dosya yapar, ancak etki LZW sıkıştırma olmadan aynı olduğunu anlıyorum. Tablodaki oranlar LZW sıkıştırması ile verilmiştir.