I'm trying to build a mosaic, and I rely on the NoDataValue feature to treat some parts of the image as transparent. However, it appears that GDAL doesn't work as expected.

I also created a very simple test case using a vrt dataset and gdal_translate - and I get the same results (that is - the 2nd image draws over the 1st image, ignoring "transparent areas")

I have to 100X100 image files with a white marking (different in each file) over black background (black being exactly equal to 0) I built a simple vrt file:

<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>

and I run the command:

gdal_translate mosaic.vrt mosaic.tif

The result is identical to image a2.tif, instead of being a combination of a1.tif and a2.tif

I got the error using gdal 1.8 and 1.9

any ideas?

有帮助吗?

解决方案

I got an answer in the gdal-dev list from Even Rouault

Several errors :

  1. The NoDataValue and HideNoDataValue elements are only valid under the VRTRasterBand element, not SimpleSource

  2. You want to change SimpleSource to ComplexSource, and add a <NODATA>0</NODATA> element in it. (well basically rename your current NoDataValue to NODATA.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top