[GRASS-dev] Re: [GRASS GIS] #73: r.out.gdal tiff output does not work

Markus Metz markus.metz.giswork at googlemail.com
Fri Apr 24 02:16:09 EDT 2009


Glynn Clements wrote:
> Markus Metz wrote:
>
>> Considering this, rather use e.g. raster_min - 1 as default nodata value 
>> for GDAL floating point datatypes?
>
> If fabs(raster_min) is large, raster_min - 1 won't be exactly
> representable, and may be rounded to raster_min. You would need to
> subtract a value which depends upon the exponent.
>
> Also, the input data may contain -DBL_MAX. For FCELL, if the map is
> large enough, it's possible that *all* finite values occur in the
> data.
I was (honestly! I was listening to you:-)) thinking about something like

if (raster_min > type_min) {
unsigned int i = 0;
while ((float)(raster_min - ++i) == raster_min);
nodata = raster_min - i;
}
else if (raster_max < type_max) {
unsigned int i = 0;
while ((float)(raster_max + ++i) == raster_max);
nodata = raster_max + i;
}
else
nodata = 0; /* or whatever fallback */

for GDT_Float32 but did not want to go into so much detail.
>
> The question is: is GDAL's no-data value allowed to be any FP value,
> or must it be finite? I'm guessing that the GDAL documentation doesn't
> say (similarly, I don't think it's documented whether GRASS
> FCELL/DCELL values are allowed to be infinite).
>
> Actually, this may depend upon the format. If a format supports FP,
> the format's specification may dictate whether or not NaN and/or
> inifinities are considered valid.
Hmm. I thought the point of using GDAL is that r.out.gdal does *not* 
have to bother about the format's specifications. IMHO, if there is 
reason to assume that NaN and/or infinities are not valid for any of the 
formats supporting FP, r.out.gdal should not use NaN and/or infinities. 
OTOH, NaN and infinities are described in the IEEE FP standard. I would 
avoid format-specific code in r.out.gdal, considering the large number 
of supported formats and the number of creation options for each format 
(for each format sometimes differing between datatypes, e.g. GeoTIFF).



More information about the grass-dev mailing list