2012-02-28 648 views
2

我试图构建马赛克,并且我依赖NoDataValue功能将图像的某些部分视为透明。 但是,看起来GDAL不能按预期工作。GDAL似乎忽略NoDataValue

我也使用VRT数据集和gdal_translate创造了一个非常简单的测试案例 - 我也得到了相同的结果(即 - 第二图像绘制在第一图象,忽略“透明区域”)

我有到的背景黑色与白色标记(不同在每个文件)100X100图像文件(黑色确切地说是等于0) 我建立一个简单的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

任何想法的错误?

回答

1

我在gdal-dev列表中的答案从即使鲁奥

几个错误:

  1. NoDataValueHideNoDataValue元素只有VRTRasterBand元素下有效,不SimpleSource

  2. 您想将SimpleSource更改为ComplexSource,并在其中添加<NODATA>0</NODATA>元素。 (嗯,基本上重新命名当前的NoDataValueNODATA

+1

嗨,我编辑您的文章,因为''部分失踪了。反正就是可以看看你的最后'vrt'?我尝试了'HideNoData','NoDataValue'和'NODATA'的几种组合,但是没有任何变化 – 2014-01-21 13:30:33

+0

对不起,但我无法再访问这些文件 – 2014-01-21 14:00:54

+0

Ops,这太遗憾了。 – 2014-01-21 14:17:37