Sahip olduğumuz yüksek çözünürlüklü bir görüntü için fayans üretmek için biraz uğraşıyorum. Şu anki görüntümüz GeoTiff dosyası olarak kaydedilen çok büyük (+ 20 GB) bir görüntüdür.
Gdal2tiles komut satırı yardımcı programını kullanarak fayans oluşturmak ve daha sonra fayans sağlamak için TMS görüntü sağlayıcı kullanarak Cesium, açmak ve görüntülemek istiyorum. Gdalinfo kullanarak, görüntünün ayrıntılarından bazıları:
Driver: GTiff/GeoTIFF
Files: image.tif
Size is 52250, 56119
Coordinate System is:
PROJCS["WGS 84 / UTM zone 35S",
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433],
AUTHORITY["EPSG","4326"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",27],
PARAMETER["scale_factor",0.9996],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",10000000],
UNIT["meters",1],
AUTHORITY["EPSG","32735"]]
Origin = (606276.000000000000000,7197873.000000000000000)
Pixel Size = (0.500000000000000,-0.500000000000000)
Metadata:
AREA_OR_POINT=Area
TIFFTAG_MAXSAMPLEVALUE=13165
TIFFTAG_MINSAMPLEVALUE=1
TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
TIFFTAG_SOFTWARE=ERDAS IMAGINE
TIFFTAG_XRESOLUTION=1
TIFFTAG_YRESOLUTION=1
Image Structure Metadata:
INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left ( 606276.000, 7197873.000) ( 28d 3'21.59"E, 25d19'55.12"S)
Lower Left ( 606276.000, 7169813.500) ( 28d 3'29.55"E, 25d35' 7.17"S)
Upper Right ( 632401.000, 7197873.000) ( 28d18'55.92"E, 25d19'47.60"S)
Lower Right ( 632401.000, 7169813.500) ( 28d19' 5.85"E, 25d34'59.57"S)
Center ( 619338.500, 7183843.250) ( 28d11'13.23"E, 25d27'27.58"S)
Band 1 Block=512x512 Type=UInt16, ColorInterp=Gray
Band 2 Block=512x512 Type=UInt16, ColorInterp=Undefined
Band 3 Block=512x512 Type=UInt16, ColorInterp=Undefined
Band 4 Block=512x512 Type=UInt16, ColorInterp=Undefined
İlk denemem görüntüyü coğrafi referans için gdal_translate kullanmak ve daha sonra projeksiyonu Cesium'un gerektirdiği şekilde EPSG: 3857 olarak değiştirmek için gdalwarp kullanmaktı (API referansına bakın)
gdal_translate -of VRT -a_srs EPSG:4326 -gcp 606275 7197875 28.055987 -25.331974 -gcp 606275 7169814 28.058200 -25.585326 -gcp 632400.5 7197875 28.31553 -25.329876 -gcp 632400.5 7169814 28.318286 -25.583209 image.tif newImage1.vrt
gdalwarp -of VRT -t_srs EPSG:3857 newImage1.vrt newImage2.vrt
Ancak, aşağıdaki hataların çoğunu alıyorum:
HATA 1: enlem veya boylam sınırları aştı
Denediğim başka bir yöntem doğrudan gdal2tiles kullanmak ve fayans üretmek oldu:
gdal2tiles.py image.tif
Bu, döşemelerin oluşturulduğu tek yakınlaştırma düzeyi olan bir alt klasör (18 etiketli) olan bir klasör oluşturdu. Ancak buraya geldiğim görüntüler tamamen "yanlış" ve "bulanık".
Fayanslardan birine örnek:
Herhangi bir öneri üretmek için herhangi bir öneri gdal2tiles kullanarak belirli bir alanın büyük görüntü böylece yük ve Sezyum görebilirsiniz?
Güncelleme
Yani, @ iant'ın önerisini denedikten sonra, aşağıdaki komutları kullandım:
gdalwarp -co TILED=YES -co COMPRESS=DEFLATE -co BIGTIFF=YES -t_srs EPSG:3857 image.tif newImage.tif
Bu komut aşağıdaki hatayı aldım sonuna kadar mükemmel çalıştı:
HATA 1: TIFFFillTile: 43520. Satır, 47104. Satırdaki okuma hatası; 35788250 bayt aldı, beklenen 37421449
Bu hatanın ne anlama geldiğinden emin değilim, bir an için bıraktım ve hala gdalwarp adımı tarafından üretilen son bir görüntü "newImage.tif" var. Bunu kullanarak gdal2tiles.py
gdal2tiles.py newImage.tif
Bu, alt klasörleri 10-18 olan bir klasör üretti (ve daha önce aldığım gibi sadece bir zoom seviyesi 18 değil). Ayrıca herhangi bir konsol hatası olmadan Cesium'a mükemmel bir şekilde okur, ancak görüntü hala "yanlış" görünüyor:
Sorunumun @ user30184 önerdiği gibi olabileceğini düşünüyorum "... kaynak veriler gdal2tiles için uygun değil." Ancak sağlayıcımız bize gdal ile kullanmak için bir şeyler sağlayabilinceye kadar, sahip olduğum tek şey bu.
Belki de son bandın alfa kanalı olarak geçmesini önlemek için gdallardan kaçınmak için bantlardan birini çıkarmayı düşünüyordum. Herhangi bir öneri?