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

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

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

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}")

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容