GDAL似乎忽略NoDataValue

时间:2012-02-28 20:21:03

标签: gdal

我正在尝试构建马赛克,我依靠NoDataValue功能将图像的某些部分视为透明。 但是,似乎GDAL没有按预期工作。

我还使用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.tifa2.tif

的组合

我使用gdal 1.8和1.9

得到了错误

任何想法?

1 个答案:

答案 0 :(得分:2)

我在偶数Rouault

gdal-dev列表中得到了答案

有几个错误:

  1. NoDataValueHideNoDataValue元素仅在VRTRasterBand元素下有效,而非SimpleSource

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