使用Python+gdal对图像做极值化运算,出现一下问题:
out_ds.GetRasterBand(i).WriteArray(x_nor) # 将每个波段的数据写入内存
UnboundLocalError: local variable 'x_nor' referenced before assignment
错误代码段:
if data.min() <0: # 将lagndsat8数据背景值-19999转换为0值
data = np.where(data <0, 0, data) # 将背景值赋值为0(最小值)
x_nor = (data - data.min()) / (data.max() - data.min() + 1e-6)
out_ds.GetRasterBand(i).WriteArray(x_nor)
问题原因分析:
出现以上问题的原因是变量为声明,那么为什么没有声明这个变量,这里是因为if条件语句没有执行,所以x_nor未提前声明。我们这里使用的遥感数据中的最小值大于0值,所以if没有执行。
解决办法:
(1)删除if语句,直接运行if下面的两行代码
(2)再次添加一个if或者elif语句,如:
elif data.min() >=0: # 将lagndsat8数据背景值-19999转换为0值
x_nor = (data - data.min()) / (data.max() - data.min() + 1e-6)