[gdal-dev] gdal_merge nodata evaluation

Cechini, Matthew F. (GSFC-423.0)[Science Systems & Applications, Inc.] matthew.f.cechini at nasa.gov
Thu Oct 20 13:27:14 PDT 2016

   We’ve recently begun usage of the gdal_merge utility in our processing workflow and have hit a snag.  I’m not sure if the snag is by design or is user error.  Here’s the scenario:

   We have two 24_bit PNG images, and existing image (E) and a new image (N) we are merging into E.  They are the same size/projection/etc, so that’s ignored here.  Some pixels within N are transparent with non-zero RGB band values.  The behavior we want is for gdal_merge to ignore these transparent pixels during the merge.  Unfortunately, it appears that the -n nodata_value argument is evaluated band-by-band.  So, the following merged pixel (M) occurs for a merge of E and N:
E: 100, 100, 100, 255
        N: 0, 0, 3, 0
        M: 100, 100, 3, 255

   To work around this, we figured out a gdal_calc command that will set RGB bands to 0 (nodata) in N if the pixel is transparent.  So that gives us this:

E: 100, 100, 100, 255
        N': 0, 0, 0, 0
        M: 100, 100, 100, 255

   That’s fine, however, we still have the problem of opaque pixels in N merging incorrectly:

E: 100, 100, 100, 255
        N: 0, 0, 3, 255
        M: 100, 100, 3, 255

   In this case, we either have to come up with a gnarly gdal_calc command… or accept the infrequent merge issues.

   The exploratory question is “why does gdal_merge evaluate the nodata value band-by-band?”  This is also a limitation with gdal_translate, whereas gdalwarp allows for multiple band nodata values.  Answers to that will be interesting, but not necessarily fix our immediate issue, so how do we resolve this situation using existing gdal capabilities?

Matthew Cechini
Contractor, Science Systems and Applications, Inc.
NASA GIBS Systems/Software Engineer
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20161020/871170d2/attachment.html>

More information about the gdal-dev mailing list