我正在尝试构建镶嵌图,并且依靠NoDataValue功能将图像的某些部分视为透明。
但是,似乎GDAL无法正常工作。
我还使用vrt数据集和gdal_translate创建了一个非常简单的测试用例-我得到了相同的结果(即-第二张图片覆盖了第一张图片,忽略了“透明区域”)
我必须在黑色背景(黑色正好等于0)上带有100X100带有白色标记(每个文件中都有不同)的图像文件
我建立了一个简单的vrt文件:
<VRTDataset rasterXSize="100" rasterYSize="100">
<VRTRasterBand dataType="Byte" band="1">
<ColorInterp>Gray</ColorInterp>
<SimpleSource>
<SourceFilename relativeToVRT="1">a1.tif</SourceFilename>
<SourceBand>1</SourceBand>
<SrcRect xOff="0" yOff="0" xSize="100" ySize="100"/>
<DstRect xOff="0" yOff="0" xSize="100" ySize="100"/>
<HideNoDataValue>1</HideNoDataValue>
<NoDataValue>0</NoDataValue>
</SimpleSource>
<SimpleSource>
<SourceFilename relativeToVRT="1">a2.tif</SourceFilename>
<SourceBand>1</SourceBand>
<SrcRect xOff="0" yOff="0" xSize="100" ySize="100"/>
<DstRect xOff="0" yOff="0" xSize="100" ySize="100"/>
<HideNoDataValue>1</HideNoDataValue>
<NoDataValue>0</NoDataValue>
</SimpleSource>
</VRTRasterBand>
</VRTDataset>
然后运行命令:
gdal_translate mosaic.vrt mosaic.tif
结果与图像
a2.tif
相同,而不是a1.tif
和a2.tif
的组合我使用gdal 1.8和1.9遇到错误
有任何想法吗?
最佳答案
我从的gdal-dev列表中得到了一个答案,甚至Rouault
几个错误:
NoDataValue
和HideNoDataValue
元素仅在VRTRasterBand
元素下有效,而不是SimpleSource
SimpleSource
更改为ComplexSource
,并在其中添加<NODATA>0</NODATA>
元素。 (基本上,将您当前的NoDataValue
重命名为NODATA
。