使用场景:在文件夹下存放着许多tif格式的栅格文件,需要求此文件夹下所有栅格文件的和。
以下代码将每一个tif文件中的nodata像元转为了0值像元,再对每一个tif格式的栅格文件进行了累加。如果没有将nodata像元进行转0处理,那么某一个位置的像元如果曾经取值为nodata,那么此像元与其他非nodata像元相加所得的值还是nodata,所以在此使用场景下,有必要进行这一步的转0处理。
注意事项:代码中需要修改两个路径。
# # -*- coding: UTF-8 -*-
import arcpy
from arcpy.sa import *
# 设置工作空间和输出路径,两者需要在同一文件夹下,否则在保存的时候会报错
arcpy.env.workspace = r"E:\GSH\River_tif"
output_path = r"E:\GSH\River_tif"
# 获取文件夹中的栅格文件列表
raster_list = arcpy.ListRasters("*","TIF")
# 计算栅格相加
total_raster = None
for raster_file in raster_list:
# 创建栅格对象
raster = arcpy.Raster(raster_file)
# 处理 nodata 值为 0
raster_fixed = Con(IsNull(raster), 0, raster)
# 累加栅格
if total_raster is None:
total_raster = raster_fixed
else:
total_raster += raster_fixed
# 输出路径和文件名
output_file = output_path + "\\total_raster_River.tif"
# 保存累加后的栅格
total_raster.save(output_file)