Bu sorunla başa çıkmanın en kolay yolu GDAL Sanal Formatını kullanmaktı . Bu biçim, tüm görüntü kümesini tek bir görüntü nesnesi olarak ele almamı ve göreceli olarak basit üç adımda dönüştürmemi sağladı.
Sanal Veri Kümesi Oluşturma
GDAL ( Tamas Szekeres'in GISInternals Windows ikili dosyaları ve OSGeo4W'nin son sürümleri dahil ), ilk sanal veri kümesini oluşturmak için kullanılabilecek gdalbuildvrt adlı bir yardımcı program içerir .
Bunu kullanmanın basit bir yolu, tüm resimlerinizi bir metin dosyasına eklemek ve daha sonra bu metin dosyasını gdalbuildvrt dosyasına girdi olarak kullanmaktır. İşte bir örnek (ikinci komutu tekrar bir satıra koymanız gerekir):
dir /b *.tif > my_images.txt
gdalbuildvrt
-hidenodata
-vrtnodata "255 255 255"
-resolution highest
-input_file_list my_images.txt
my_image.vrt
Bu, tüm GDAL işlemleri için tek bir görüntü olarak değerlendirebileceğiniz bir XML dosyası bırakır. Ayrıca dahili olarak nodatayı beyaz olarak temsil eder, ancak nodata tanımını ondan okunan araçlardan gizler.
Yeniden Örneklenen Genel Bakış Oluşturma
Daha sonra, genel bakış görüntüsünün yeniden örneklenmesini ve çıktısını alacaksınız. Bunu gdal_translate veya gdalwarp ile yapabilirsiniz . Bunlardan herhangi biri için, ortaya çıkan boyutun width * height * 3
(8 bit bant sayısı) Bayt olacağını unutmayın . Bu 4 GB'den büyük olacaksa sözdiziminin çıktı olarak BigTIFF'i belirtmesi için GeoTIFF seçeneklerine bakmak isteyeceksiniz (-co "BIGTIFF = YES").
Gdal_translate için, kullanışlı gdalinfo komutunu kullanarak sanal görüntünün boyutlarını belirlemeniz gerekir . Dosyanızın çıktı genişliğini ve yüksekliğini piksel cinsinden belirlemek için bu boyutları alın ve her birini tutarlı bir faktöre bölün.
Komut şuna benzer görünecektir (bir satırda):
gdal_translate
-outsize 53120 14000
-co "TILED=YES"
-co "PROFILE=GEOTIFF"
-co "BLOCKXSIZE=256"
-co "BLOCKYSIZE=256"
my_image.vrt
my_image.tif
Gdalwarp için elde edilen piksel boyutunu bilmeniz gerekir; bu durumda .5 metre kullanıyorum. Ayrıca, yeniden örnekleme yöntemiyle de arama yapmak istersiniz. Ortofoto incelemeleri için cubicspline'ı tercih ediyorum. Daha yumuşak, ancak bunları tam çözünürlüğe kadar kullanmayacaksınız ve deneyimlerime göre, JPEG veya ECW gibi bir şey kullanıyorsanız daha sıkıştırılabilir bir görüntü oluşturuyor.
gdalwarp
-r cubicspline
-of GTiff
-dstnodata "255 255 255"
-tr 0.5 0.5
-co "PROFILE=GEOTIFF"
-co "BIGTIFF=YES"
-co "TILED=YES"
-co "BLOCKXSIZE=256"
-co "BLOCKYSIZE=256"
my_image.vrt
my_image.tif
Bu yeniden örneklenen GeoTIFF genel bakışları için JPEG sıkıştırma seçeneklerini kullanmayı da düşünebilirsiniz; çıktı dosyasını ( Frank'e göre ) yalnızca marjinal bir performans cezası ile önemli ölçüde daraltır .
-co "COMPRESS=JPEG"
-co "JPEG_QUALITY=80"
-co "PHOTOMETRIC=YCBCR"
Genel Bakış
Ayrıca, dahili "piramitler" oluşturmak için elde edilen görüntü üzerinde kullanışlı gdaladdo komutunu çalıştırmak isteyeceksiniz , böylece tam görüntü boyutlarından daha düşük çözünürlük talepleri bir veri alt kümesiyle karşılanabilir. Performanstaki artış çoğu durumda disk alanından daha fazladır. Burada kullandığınız seviyelerle oynamak isteyeceksiniz; çok büyük görüntüler için bazılarını düşürebilirsiniz. Gdaladdo komutu şuna benzer:
gdaladdo
-r average
my_image.tif
2 4 8 16 32 64 128 256
En iyi performans için bu seviyeleri denemenizi öneririm. Uygulamanız için farklı bir yeniden örnekleme aralığının daha iyi olduğunu veya resim boyutunuza bağlı olarak, daha yüksek sayılardan bazılarını düşürebileceğinizi (veya daha fazlasının gerekli olduğunu) görebilirsiniz.
Ayrıca, harici bir genel bakış oluşturuyorsanız (-ro seçeneğini kullanarak) JPEG sıkıştırma yapılandırma satırlarını eklemeyi düşünün:
--config COMPRESS_OVERVIEW JPEG
--config PHOTOMETRIC_OVERVIEW YCBCR
--config INTERLEAVE_OVERVIEW BAND
(Bunların gömülü genel bakışlar için üst GeoTIFF'den miras alındığına inanıyorum)
notlar
Bu sorunla karşılaştığımda, freenode.irc.net üzerindeki #gdal kanalında sordum. Bu inanılmaz bir kaynak ve bu konuda bana yardımcı oldukları için Howard Butler, Frank Warmerdam ve Even Rouault'a borçluyum.