GRASS GIS wrote: > #73: r.out.gdal tiff output does not work > ----------------------+----------------------------------------------------- > Reporter: helena | Owner: grass-dev@lists.osgeo.org > Type: defect | Status: new > Priority: major | Milestone: 6.4.0 > Component: default | Version: svn-trunk > Resolution: | Keywords: r.out.gdal, tiff > ----------------------+----------------------------------------------------- > Comment (by hamish): > > (I see the same with 6.2.1's old script version of r.out.gdal) > > it works if the values are in the range of 0-255: > {{{ > #spearfish > r.out.gdal in=fields out=fields.tif type=Byte > qiv fields.tif # qiv is a quick image viewer > }}} > > but not if all values are out of range: > {{{ > r.info -r elevation.dem > min=1066 > max=1840 > r.info -t elevation.dem > datatype=CELL > r.out.gdal in=elevation.dem out=elv.tif type=Byte > > gdalinfo -stats elv.tif | grep STATISTIC > STATISTICS_MINIMUM=255 > STATISTICS_MAXIMUM=255 > STATISTICS_MEAN=255 > STATISTICS_STDDEV=0 > > r.in.gdal in=elv.tif out=elv2 > r.info -r elv2 > min=255 > max=255 > }}} > > > we can try with half the raster in range: > {{{ > r.mapcalc "elev_0 = elevation.dem - 1066" > r.info -r elev_0 > min=0 > max=774 > r.out.gdal in=elev_0 out=elv0.tif type=Byte > gdalinfo -stats elv0.tif | grep STATISTIC > STATISTICS_MINIMUM=0 > STATISTICS_MAXIMUM=254 > STATISTICS_MEAN=138.68943338231 > STATISTICS_STDDEV=56.526296226099 > }}} > > If I load elv0.tif into an image viewer it comes out as all black. But in > Gimp if you use the eyedropper you can see the index number changes, but > the palette is black for all 256 index entries. > > gdalinfo confirms palette info was not written to file:
I have noticed that r.out.gdal only generates the palette if G_read_colors() returns 1, i.e. if the map has its own colour table. If G_read_colors() falls back to a default rainbow colour table, you don't get a palette. I suggest: --- raster/r.out.gdal/main.c (revision 30389) +++ raster/r.out.gdal/main.c (working copy) @@ -125,7 +125,7 @@ GDALSetRasterColorInterpretation(hBand, GPI_RGB); CPLPopErrorHandler(); - if( G_read_colors(name, mapset, &sGrassColors ) == 1 ) + if( G_read_colors(name, mapset, &sGrassColors ) >= 0 ) { int maxcolor, i; CELL min, max; G_read_colors() returns -1 on error (e.g. the map doesn't exist), 0 if a default rainbow colour table was generated, and 1 if the map has its own colour table. AFAICT, the UInt16 case actually works, insofar as the debug output with DEBUG=3 and the output from gdalinfo look just like they do for an 8-bit TIFF which works fine in various viewers. I wouldn't rule out the possibility that popular image viewers can't handle 16-bit indexed-colour images. TIFF's strong-point is that it supports so many different formats. It's weak point is also that it supports so many different formats. I doubt that there is a program in existence which can correctly handle every possible valid TIFF file. -- Glynn Clements <[EMAIL PROTECTED]> _______________________________________________ grass-dev mailing list grass-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/grass-dev