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

Jason Roberts jason.roberts at duke.edu
Thu May 8 15:35:50 PDT 2025


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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20250508/bbbcd251/attachment-0001.htm>


More information about the gdal-dev mailing list