[gdal-dev] HFA (.img) driver prints Warning 1: NaN converted to INT_MAX when float raster has nan as the NoData value

Even Rouault even.rouault at spatialys.com
Thu May 8 15:39:35 PDT 2025


There are metadata fields that the HFA driver opens. That must come from 
that. Always shutting down the warning could be inappropriate, but 
perhaps in the context where the warning is emitted the driver could 
avoid emitting it. But we need to have access to the file to better 
understand the call path.

Le 09/05/2025 à 00:35, Jason Roberts a écrit :
> Hi Even,
>
> Thanks. I can silence this with a custom error handler (I tested it, 
> and it works). But the part that is confusing to me, as a user of the 
> Python API, is that I did not ask the API to do anything with int32s. 
> All I did was open the dataset using the default parameters of 
> gdal.Open(). I would not expect a warning to be reported in that 
> circumstance, unless opening .img files that use nan as the NoData 
> value was problematic for GDAL in some way. That is why I was 
> suggesting that the warning be removed.
>
> Jason
>
> On 5/8/25 17:51, Even Rouault wrote:
>>
>> Jason,
>>
>> It looks like something in the code asks a float64 field to be 
>> returned as a int32, and thus NaN has to be turned into something 
>> else. That's perhaps fine in the context where that happens with your 
>> file and could potentially be silenced, but access to the file would 
>> be needed to investigate
>>
>> Even
>>
>> Le 08/05/2025 à 23:01, Jason Roberts via gdal-dev a écrit :
>>> Hi GDAL team,
>>>
>>> I'm working with the GDAL Python API. I have some HFA (.img) files 
>>> that are float32 and that use nan as their NoData value. As far as I 
>>> can tell, using nan is allowed but I could be wrong. When I open 
>>> them, I get "Warning 1: NaN converted to INT_MAX." Everything seems 
>>> to work fine after that. Is this message something I need to worry 
>>> about? If not, may I suggest you remove it from the HFA driver if 
>>> possible?
>>>
>>> Here's some code demonstrating the message. If need be, I can 
>>> provide an example file, or write some code to generate one.
>>>
>>> >>> import numpy as np
>>> >>> from osgeo import gdal
>>> >>> gdal.__version__       # this version is packaged with ArcGIS 
>>> Pro 3.4, but I don't think the version matters
>>> '3.9.2e'
>>> >>> ds = 
>>> gdal.Open(r'\\conch\denmod\Covariates\NARW25\CMEMS_GLORYS\SST\1999\SST_199901.img', 
>>> gdal.GA_ReadOnly)
>>> Warning 1: NaN converted to INT_MAX.
>>> >>> band = ds.GetRasterBand(1)
>>> >>> gdal.GetDataTypeName(band.DataType)
>>> 'Float32'
>>> >>> band.GetNoDataValue()
>>> nan
>>> >>> arr = band.ReadAsArray()   # the data look ok:
>>> >>> np.isnan(arr).sum()
>>> 86788
>>> >>> (~np.isnan(arr)).sum()
>>> 142985
>>> >>> np.max(arr)
>>> nan
>>> >>> np.nanmax(arr)
>>> 27.078554
>>>
>>> As far as I can tell, the warning comes from this code in 
>>> gdal/frmts/hfa/hfafield.cpp:
>>>
>>>                 else if (std::isnan(dfDoubleRet))
>>>                 {
>>>                     CPLError(CE_Warning, CPLE_AppDefined,
>>>                              "NaN converted to INT_MAX.");
>>>                     nIntRet = nMax;
>>>                 }
>>>
>>> But I don't know if there are any negative ramifications that will 
>>> result.
>>>
>>> Thank you for your help. And, as always, thank you very much for 
>>> developing and maintaining GDAL.
>>>
>>> Jason
>>>
>>>
>>> _______________________________________________
>>> gdal-dev mailing list
>>> gdal-dev at lists.osgeo.org
>>> https://lists.osgeo.org/mailman/listinfo/gdal-dev
>> -- 
>> http://www.spatialys.com
>> My software is free, but my time generally not.
>
-- 
http://www.spatialys.com
My software is free, but my time generally not.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20250509/78551b42/attachment.htm>


More information about the gdal-dev mailing list