如何在提供商提供的自定义tiff图像上使用gdal2tiles生成图块


10

我一直在努力为我们拥有的高分辨率图像生成图块。我们当前拥有的图像是非常大的(+ 20GB)图像,另存为GeoTiff文件。大GTiff图片

我想使用gdal2tiles命令行实用程序生成图块,然后使用TMS图像提供程序提供图块,然后在Cesium中打开并查看它。使用gdalinfo,以下是图片的一些详细信息:

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

我的第一个尝试是使用gdal_translate对图像进行地理配准,然后根据Cesium的要求,使用gdalwarp将投影更改为EPSG:3857(请参阅API参考)

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

但是,出现以下许多错误:

错误1:纬度或经度超出限制

我尝试的另一种方法是直接使用gdal2tiles并生成图块:

gdal2tiles.py image.tif

这将创建一个文件夹,其中一个子文件夹(标记为18)是创建图块的唯一缩放级别。但是,我在这里得到的图像完全是“错误的”和“模糊的”。

磁贴之一的示例:

在此处输入图片说明

有什么建议可以使用gdal2tiles为该特定区域的大图像图像生成切片,以便我可以在Cesium中加载和查看它?

更新资料

因此,在尝试@iant的建议后,我使用了以下命令:

gdalwarp -co TILED=YES -co COMPRESS=DEFLATE -co BIGTIFF=YES -t_srs EPSG:3857 image.tif newImage.tif

该命令运行良好,直到最后出现以下错误:

错误1:TIFFFillTile:在第43520行,列47104处读取错误;得到了35788250字节,预期是37421449

不知道该错误意味着什么,我暂时将其保留,仍然得到了gdalwarp步骤生成的最终图像“ newImage.tif”。使用这个我叫gdal2tiles.py

gdal2tiles.py newImage.tif

这样就产生了一个包含10-18子文件夹的文件夹(而不仅仅是像我之前获得的一个缩放级别18)。它也可以很好地读入Cesium,没有任何控制台错误,但是图像仍然看起来“错误”:

图像已载入铯

我正在考虑我的问题,因为@ user30184建议“ ...源数据不太适合gdal2tiles。” 但是,直到我们的提供者能够为我们提供与gdal一起使用的东西,这就是我的全部。

我正在考虑删除其中一个频段,以避免gdal干扰最后一个频段作为alpha通道。有什么建议么?


为什么要对图像进行地理配准?它已经具有所有CRS信息。
AndreJ

Answers:


7

我认为您需要做的就是使用以下方法重新投影它:

gdalwarp -co TILED=YES -co COMPRESS=DEFLATE -t_srs EPSG:3857 newImage.tif image.tif

然后将其平铺:

gdal2tiles.py newImage.tif

如果文件很大,则需要一段时间。


您可以使用-z参数控制缩放级别,是否已经尝试过?并注意您的图像有4个波段,这可能会导致意外结果,尤其是因为您处理16位数据时。可能需要先进行一些预处理
user30184 '16

感谢您的回复@iant。我将尝试一下,看看会发生什么。您能否在回答中多解释一下您选择的选项是什么意思?根据文档,-co选项“将创建选项传递给输出格式驱动程序”。那么,您实际上是在tiff文件中添加了更多属性吗?
努力

@ user30184我没有尝试过但没有。我怎么知道变焦水平应该是多少?或者我可以根据需要指定它们?我以为通过省略此选项,我可以让脚本根据所选区域确定缩放级别。
2016年

@ user30184您还提到过,如果使用4带图像和16位数据,我可能会得到意想不到的结果。到底为什么 格式块的处理格式是否正确?如果是这样,则直接从提供者处获取图像,如何以正确的格式获取文件?即GDAL tiff文件?(如果我能说这样的话)
努力

如您建议的@iant,我在运行gdalwarp时遇到以下问题:>>>>>>>>>>>>错误1:TIFFFillTile:在第43520行读取错误,列47104;获得35788250字节,预期为37421449错误1:TIFFReadEncodedTile()失败。错误1:pleiades_merge05m_2015-06-19.tif,频段1:IReadBlock在X偏移86,Y偏移109处失败错误1:GetBlockRef在X偏移86,Y偏移109处失败>>>>>>>>>>> >有什么建议可以解决此问题?
2016年

2

我想您的图像是空客DS的4频段产品中的一部分:

http://www.intelligence-airbusds.com/en/4951-which-spectral-mode-do-i-choose

Gdal2tiles用于将常见的可视图像拆分为png磁贴。这样的图像每频带使用8位,并且它们有1个频带(灰度),3个频带(红绿蓝色)和4个频带(reg-green-blue + alpha)。

我要说的是,您的问题在很大程度上是不相关的,因为您的源数据不太适合gdal2tiles。您可以解决当前遇到的直接问题,但是如果不重新处理数据,最终结果仍然不会很好。

您附加到问题上的外观不太好看的原因可能是第四个数据段被解释为Alpha通道。


谢谢@ user30184,我一直在阅读一些资源,并得出了类似的想法。我认为最好要求我们的提供商向我们提供“ GDAL兼容” tiff文件,但是直到他们找回我们,这就是我们所拥有的。我正在考虑删除其中一个频段,以避免gdal干扰最后一个频段作为alpha通道。有什么建议么?
努力

使用gdal_translate从图像中剪切一小部分gdal_translate -srcwin 20000 20000 1000 1000 original.tif sample.tif应该这样做(大的偏移量可以避免nodata区域)。使用QGIS打开此小图像,您应该能够快速使用查看设置进行播放。我对alpha通道的猜测可能是错误的,否则结果应该看起来是彩色的,而不是灰色的。
user30184 '16

感谢@ user30184,我按照您的建议进行了操作,并成功在QGIS中打开了它。请参阅以下链接:drive.google.com/open ? id=0B97NtaPJrVz-anRYQmxjZFludk0现在我该如何“调试”我的问题?使用QGIS做gdalwarp和gdal2tiles吗?
2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.