[gdal-dev] Setting NODATA to -nan

Homme Zwaagstra hrz at geodata.soton.ac.uk
Wed Jul 15 14:21:05 PDT 2015



On 15/07/15 19:02, Even Rouault wrote:
>
 >> Thanks Even,
 >>
 >> I have submitted <https://trac.osgeo.org/gdal/ticket/6036> with an
 >> attached TIFF
 >> infested with `-nan` values.
 >>
 >> While researching this I cam across this question
 >> <http://stackoverflow.com/q/3772835> which might contain some 
information of
 >> interest.
 >
 > Hum looking more closely at representation of nan values in IEEE754, 
there is
 > at least 12 million different ways of representing nan for a 32bit 
floating
 > point value. And you can indeed have signed NaN... But I'm not sure 
it is
 > really useful to set "-nan" as the declared nodata value (it is 
stored as a
 > string in GeoTIFF) since even 2 NaN values that could be printed in 
text form
 > as "-nan" could have a different binary representation.
 >
 > The parts of GDAL that test pixel values against nodata have normally a
 > special behaviour  to test the pixel values against nodata, when the 
nodata
 > value is one of the NaN values, so I wouldn't expect this apparent
 > inconsistency to cause problems
 >
 > For example when running gdalinfo -stats on your file, I get :
 >
 > ERROR 1: negative-nan-example.tif, band 1: Failed to compute 
statistics, no
 > valid pixels found in sampling.
 >
 > Which is expected since all pixels are set to nan (-nan yeah...), so
 > ComputeStatistics() actually managed to match the declared nan with 
the -nan
 > as pixel values. (which is quite ironical since a property of nan is 
that nan
 > != nan, but here nan ~= -nan ;-) )

Firstly thanks for looking into this.  Secondly, wow - 12 million 
different ways
to say that's not a number and still not be completely convincing. From a
practical point of view that all seems fairly crazy!

>
 >
 > Did you run into particular problems beyond this apparent mismatch ?

Yes, the issue that brought this to light was that I am trying to 
convert the
single band TIFF containing -nan values to a colour relief along the 
following
lines:

gdaldem color-relief single-band.tif colour-relief.ramp 
colour-relief.tif -alpha -of GTiff -co COMPRESS=DEFLATE -co PREDICTOR=1 
-co ZLEVEL=9 -co TILED=YES

colour-relief.ramp is as follows:

382    0   1   36
171    12  15  118
114    33  109 158
57     63  184 105
5      120 234 50
0      254 255 125
nv     0   0   0   0

I was expecting the -nan values to be interpreted as nv and therefore made
transparent in colour-relief.tif.  However, they were assigned the RGB value
0,1,36 i.e. the maximum value in the ramp!

I can provide a bite sized example of the dataset that contains some 
real values
if that is helpful.

Best regards,

Homme

>
 > Even
 >


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20150715/cba3a4a2/attachment.html>


More information about the gdal-dev mailing list