[gdal-dev] [gdal-commits] r40282 - trunk/gdal/frmts/aaigrid

Even Rouault even.rouault at spatialys.com
Mon Oct 2 08:27:43 PDT 2017


On lundi 2 octobre 2017 08:04:30 CEST Kurt Schwehr wrote:
> +gdal-dev
> 
> Even,
> 
> Looking back at the changes to aaigrid, I think I've messed things up with
> nodata.  Before I submit anything else, what do you think?
> 
> The trouble is that it is no longer doing a cast to float for in range
> values.  That means for large values, it's not getting rounded to the
> nearest float value any more.  I'm seeing this in one on my local tests.  I
> dump the json out of gdalinfo and compare.  For float64.asc.json:
> 
> I was getting: -1.234567880630493164
> Now seeing: -1.234567890123
> 
> The new value matches the text in the file, but it was a behavior change.
> Leave it be or put in an else that does the rounding to nearest float value
> by casting?
> 
> What do you think?

That's actually a general issue with GetNoDataValue() returning a double. For a Float32 band, 
the return only makes sense after being cast to float.

In the past, we have had issues in GDAL core regarding that in statistics, min-max or 
histogram computation functions, but I think that now we compare pixel values to the float-
casted nodata value. So whether you pre-cast to float in the driver shouldn't make a 
difference. You can try putting nodata values as pixel values in the .asc file, and check 
whether gdalinfo -stats / -mm / -hist ignore them.

That said, it wouldn't probably be a bad idea to keep the behaviour we had before your 
changes (ie double->float->double cast), so as to avoid breaking external code/tests that 
would depend (erroneously) on the exact value.

Even

-- 
Spatialys - Geospatial professional services
http://www.spatialys.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20171002/d9f1ebfe/attachment-0001.html>


More information about the gdal-dev mailing list