在利用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,并进行二值化。