3

我正在尝试构建马赛克,我依靠 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

结果与 image 相同a2.tif,而不是和的a1.tif组合a2.tif

我使用 gdal 1.8 和 1.9 得到了错误

有任何想法吗?

4

1 回答 1

2

我在Even Rouault的gdal-dev列表中得到了答案

几个错误:

  1. NoDataValueandHideNoDataValue元素只在该 元素下有效VRTRasterBand,不SimpleSource

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

于 2012-02-29T19:16:06.120 回答