Arcpy批量处理数据——文件夹下的所有栅格求和

使用场景:在文件夹下存放着许多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)

你可能感兴趣的:(批量,ArcGIS,python,arcgis,经验分享)