[gdal-dev] [GRASS-user] r.out.gdal export with color table for floating-point values

Otto Dassau dassau at gbd-consult.de
Tue Aug 2 08:06:48 EDT 2011


Am Tue, 2 Aug 2011 12:33:20 +0200
schrieb Markus Metz <markus.metz.giswork at googlemail.com>:

> Otto Dassau:
> > Am Mon, 01 Aug 2011 16:24:23 +0200
> > schrieb Even Rouault <even.rouault at mines-paris.org>:
> >
> >> > > Hi,
> >> > >
> >> > > I have an elevation map in GRASS with a color table that
> >> > > distinguishes decimal values based on the srtm color table, see
> >> > > below. I only want to have the value 0 in aqua, and all values <> 0
> >> > > shall reflect land below or above sea level.
> >> > >
> >> > > -10  57 151 105
> >> > > -0.000001 57 151 105
> >> > > 0 aqua
> >> > > 0.000001  57 151 105
> >> > > 50   117 194 93
> >> > > 100  230 230 128
> >> > > 200  202 158 75
> >> > >
> >> > > When I export the raster with r.out.gdal (nor now I used GeoTiff and
> >> > > ERDAS Img) the color table seems to be changed to reflect "only"
> >> > > integer values. so all 0 floating point values are displayed as
> >> > > aqua.
> >> > >
> >> > > Is there a solution for this?
> >> > >
> >> > > Thanks a lot
> >> > >  Otto
> >> >
> >> > Hi,
> >> >
> >> > fowarded from grass list, because it is probably better here with some
> >> > additional notes:
> >> >
> >> > I used Float32 as data type for the export to ERDAS Img, so the data a
> >> > floating point and there is a color table but the colortable does not
> >> > reflect the floating point data.
> >> >
> >> > Color Table (RGB with 174 entries)
> >> >     0: 0,191,191,255
> >> >     1: 58,151,105,255
> >> >     2: 59,152,105,255
> >> >     3: 60,153,105,255
> >> >     4: 61,154,105,255
> >> >     5: 62,155,104,255
> >> >     6: 64,156,104,255
> >> >
> >> > Is it possible somehow to adjust the colortable after the GRASS export
> >> > to get a color table that distinguishes floating point values as it
> >> > does in GRASS?
> >>
> >> Otto,
> >>
> >> In the GDAL data model, the index of a color table is necessary a
> >> (positive) integer. So there's no direct way to translate the GRASS
> >> color table of a floating point band into a matching GDAL object.
> >>
> >> There are several workarounds you could try :
> >> * put your color table in a text file that can be used for example by
> >> "gdaldem color-relief" . See http://gdal.org/gdaldem.html
> >> * build a Raster Attribute Table from the color table and set it to the
> >> IMG dataset. But be aware that R.A.T. are rarely exploited by GDAL
> >> utilities.
> >>
> >>
> >> Best regards,
> >>
> >> Even
> >
> > Thanks a lot Even for your help,
> >
> > the workaround with gdaldem worked fine for me. I can use the integer
> > output for nice looking visualisation in the background and the floating
> > ERDAS Img for further processing.
> >
> > Are there any plans to be able to translate GRASS color tables of a
> > floating point band into a matching GDAL object? Would it make sense to
> > write an enhancement report to the GDAL bug tracker?
> >
> AFAIK, color table support depends on the file format and datatype,
> nothing that GRASS or GDAL can change. For nice looking visualization,
> r.out.tiff or r.out.png would do the job. Otherwise it is probably
> safest to export the color rules and supply them as separate text file
> together with the exported raster map.
> 
> Markus M

Hi Markus,

yes, for nice looking visualization r.out.png would be an option, too. I
didn't have that in mind - thanks. But r.out.tiff also changes the colors
when it changes the values from floating to integer so that's not really an
option and I need to come back to some sort of gdaldem workaround. 

Regards,
 Otto



More information about the gdal-dev mailing list