在利用python gdal numpy计算NDVI等运算栅格数组的指数时出现nan和inf的问题。
_band3_np_data = np.array(_band3_ds_data)
_band6_np_data = np.array(_band6_ds_data)
以上得到np多维数组
直接进行运算
_band_ndsi = (_band3_ds_data - _band6_ds_data) / (_band3_ds_data + _band6_ds_data)
会出现nan和inf,在QGIS中加载出现问题
这里进行一些处理:
# 去除运算中的nan
_band_ndsi_fillnan = np.nan_to_num(_band_ndsi, nan=0)
# 去除运算后的inf
_band_ndsi_fillnan[np.isinf(_band_ndsi_fillnan)] = 0
np.putmask(_band_data, _band_data < 0.25, 0)
np.putmask(_band_data, _band_data > 1, 0)
np.putmask(_band_data, _band_data >= 0.25, 1)
去除nan和inf,并进行二值化。


本文讲述了在使用Python的GDAL和NumPy计算NDVI时遇到的NaN和Inf问题,作者提供了如何在QGIS外部处理这些异常值的方法,包括用nan_to_num函数替换NaN,将Inf设置为0,并对结果进行二值化处理。

797

被折叠的 条评论
为什么被折叠?



