根据您提供的代码和报错信息,问题出在适宜性分析函数返回值以及输出栅格写入上。首先,适宜性分析函数的返回值应为整数类型,而不是列表。其次,在将适宜性值写入输出栅格时,需要将其转换为NumPy数组。
请尝试修改代码如下:
import numpy as np
# ...
# 定义适宜性分析函数
def suitability_analysis(precipitation, landuse, slope):
# 根据不同的土地类型和坡度设置适宜性标准
if landuse == 1:
if slope < 5 and 300 < precipitation < 600:
return 1
else:
return 0
elif landuse == 2:
# ...
pass
return 0
# ...
# 循环遍历每个像素
for i in range(x_size):
for j in range(y_size):
precipitation_val = precipitation_raster.GetRasterBand(1).ReadAsArray(i, j, 1, 1)[0, 0]
landuse_val = landuse_raster.GetRasterBand(1).ReadAsArray(i, j, 1, 1)[0, 0]
slope_val = slope_raster.GetRasterBand(1).ReadAsArray(i, j, 1, 1)[0, 0]
# 调用适宜性分析函数并转换结果为整数类型
suitability = int(suitability_analysis(precipitation_val, landuse_val, slope_val))
# 写入输出栅格
out_band.WriteArray(np.array([[suitability]]), i, j)
请注意,你还需要将"path_to_output_raster.tif"替换为实际的输出栅格路径。
内容由零声教学AI助手提供,问题来源于学员提问




