Arcgis批量计算栅格数据的中位数

今天跟师妹讨论arcgis如何批量统计若干个栅格数据的中位数,发现arcgis10.x不能直接做,有教程说只能用Arcgis pro来计算,想了想用Arcpy配合numpy应该也可以直接计算,可供大家参考。

用法:只需要替换input_folder 目录即可。
功能:对input_folder 文件夹内所有栅格数据进行批量计算中位数,并将统计结果保存为Excel表格

PS:应该是可以在Arcgis10.x的python窗口直接运行的。

import arcpy
import os
import numpy as np
import csv

# 输入栅格数据文件夹路径
input_folder = r"####################"
# 输出统计结果的CSV文件路径
output_csv = r"统计结果.csv"

# 创建一个CSV文件并写入表头
with open(output_csv, mode='w', newline='', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(["Raster Name", "Median"])

# 遍历文件夹中的所有栅格文件
arcpy.env.workspace = input_folder
raster_list = arcpy.ListRasters()

if not raster_list:
    print("未找到栅格文件,请检查文件夹路径!")
else:
    for raster in raster_list:
        print(f"正在处理栅格: {raster}")
        try:
            # 将栅格转换为NumPy数组
            raster_array = arcpy.RasterToNumPyArray(raster, nodata_to_value=np.nan)
            # 计算中位数(忽略NaN值)
            median_value = np.nanmedian(raster_array)
            print(f"{raster} 的中位数: {median_value}")

            # 将结果写入CSV文件
            with open(output_csv, mode='a', newline='', encoding='utf-8') as csvfile:
                writer = csv.writer(csvfile)
                writer.writerow([raster, median_value])
        except Exception as e:
            print(f"处理 {raster} 时出错: {e}")

print(f"统计完成,结果已保存到 {output_csv}")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值