[GRASS-dev] [GRASS GIS] #2512: r.out.gdal wrongly messes with SetColorInterpretation
GRASS GIS
trac at osgeo.org
Mon Dec 22 12:37:11 PST 2014
#2512: r.out.gdal wrongly messes with SetColorInterpretation
------------------------+---------------------------------------------------
Reporter: rouault | Owner: grass-dev@…
Type: defect | Status: new
Priority: normal | Milestone: 6.4.5
Component: Raster | Version: svn-trunk
Keywords: r.out.gdal | Platform: All
Cpu: All |
------------------------+---------------------------------------------------
Comment(by mmetz):
Replying to [ticket:2512 rouault]:
> r.out.gdal export_band.c currently contains
>
{{{
CPLPushErrorHandler(CPLQuietErrorHandler);
GDALSetRasterColorInterpretation(hBand, GPI_RGB);
CPLPopErrorHandler();
}}}
>
> This is a wrong usage of the GDAL API.
GDALSetRasterColorInterpretation() expects an enumerated value from the
GDALColorInterp enumeration, whereas GPI_RGB is a value from the
GDALPaletteInterp enumeration. Consequently, due to the fact that GPI_RGB
= 1 and GCI_GrayIndex=1, the above snippet will effectively force the
color interpreation to be Gray level.
>
> On GeoTIFF this was without effect before GDAL 1.11, since in those
versions, SetColorInterpration() in the GeoTIFF driver has no effect. But
in GDAL 1.11, the SetColorInterpration() in the GeoTIFF driver can modify
the default PHOTOMETRIC TIFF tag. For example, for a 3 band GeoTIFF file,
at creation time, the GeoTIFF driver defaults to PHOTOMETRIC=RGB, but if
later, SetRasterColorInterpretation(GCI_GrayIndex) is called, it will undo
that setting to fallback to PHOTOMETRIC=MINISBLACK.
>
> All in all, I suggest just to remove those 3 lines. The
CPLPushErrorHandler(CPLQuietErrorHandler) / CPLPopErrorHandler()
surrounding is a hint that this call is wrong.
Done in r63682,3 (trunk, relbr70).
--
Ticket URL: <http://trac.osgeo.org/grass/ticket/2512#comment:2>
GRASS GIS <http://grass.osgeo.org>
More information about the grass-dev
mailing list