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).

_______________________________________________
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev

Reply via email to