Glynn Clements wrote:
Markus Metz wrote:

   - all floating point: IEEE's NaN
Problem with NaN? According to IEEE 754, x == y is always FALSE if either x or y or both are NaN. Assuming (nodata = GDALGetRasterNoDataValue()) == NaN,
Sorry, should have been nodata = GDALGetRasterNoDataValue() and isnan(nodata)
then going through all cells if (cell == nodata) will always be FALSE, nodata cells may not be detected? Depends on each implementation of nodata detection? Can be solved for GRASS, but how is this done in all other GIS applications?

        if (x == nodata || isnan(nodata) && isnan(x))

isnan() is C99 and POSIX, or it can be defined as e.g.:

        #define ISNAN(x) ((x) != (x))
As previously in ticket #73, I created a MASK and then exported elevation from nc_spm_08 as FLOAT32, once with nodata=0 and once with default nodata value NaN for GDT_Float32.
GRASS 7 r.in.gdal: all ok
GRASS 7 r.external: all ok

Other GIS applications:
QGIS 1.0.0: all ok
gvSIG 1.1.2: doesn't support the nodata concept, and NaN is displayed like 0.0 SAGA 2.0.3: display ok for NaN, but cell query gives 0.0 instead of NaN or nodata, and NoData info says 0 ESRI ArcMap 9.2: display ok for nodata=0, not ok when using NaN, NaN displayed like value 0.0, and cell query gives NaN instead of nodata

Considering this, rather use e.g. raster_min - 1 as default nodata value for GDAL floating point datatypes?
_______________________________________________
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev

Reply via email to