【基于Python的Arcgis脚本工具】批量获取栅格数据最大值、最小值、平均值等,并写入csv

前言

在需要获取某种长时间序列数据(例如:某一地区的1990-2022年ndvi数据)的总体特征数据时,在gis中传统的操作是:添加数据->图层属性->源->查看相应特征值->复制粘贴入excel。面对大量数据这一传统人工操作不仅费时费力,而且容易出错。现免费分享一个基于Arcpy的自定义脚本工具,安装进gis后只需输入4个参数,便可自动化获取总体特征数据并写入excel可读取的csv文件,这将极大简易以上需求的流程,提高处理数据的速率,提升数据处理精度。


一、工具介绍

批量获取多个栅格数据总体特征数据(如,平均值、最大值、最小值、标准差等)并写入excel可读取的csv文件。

二、脚本代码

代码如下:

import arcpy

arcpy.CheckOutExtension("spatial")

input_rasters = arcpy.GetParameterAsText(0)
sta_type = arcpy.GetParameterAsText(1)
band_index = arcpy.GetParameterAsText(2)
output_csv = arcpy.GetParameterAsText(3)


input_rasters_list = input_rasters.split(';')
def GetMultiVa():
    value_list = []
    rastername_list=[]
    for tif in input_rasters_list:
        meanvalueinfo = arcpy.GetRasterProperties_management(tif,sta_type,band_index)
        value = float(meanvalueinfo.getOutput(0))
        arcpy.AddMessage('{} read completed'.format(tif))
        value_list.append(value)
        rastername = tif.split('\\')
        rasternameend = rastername[-1]
        if rasternameend.endswith(".tif"):
            rastername_list.append(rasternameend[:-4])
        else:
            rastername_list.append(rasternameend)
    value_dict = dict(zip(rastername_list,value_list))
    return value_dict

def writetocsv():
    f = open(output_csv, 'a')
    header = 'RasterName' + ',' + sta_type + '\n'
    f.write(header)
    for key,val in GetMultiVa().items():
        f.write(str(key) + ',' + str(val) + '\n')
        arcpy.AddMessage('The {} has been written'.format(key))
    f.close()


GetMultiVa()
writetocsv()

三、工具操作

如何添加外部工具箱进入gis中,请参考Salierib博主的这篇文章:添加工具箱

按帮助描述操作即可

四、使用示例

总结

使用注意事项:由于gis自带python是2版本,所以路径中不能出现中文,不然就会报错。

工具免费分享,网盘自提:

链接:https://pan.baidu.com/s/1y9M0AqGers-XicmiGLTkUg?pwd=bjfu 
提取码:bjfu

欢迎交流,上传报错。

感谢Sarlierb博主的大力支持。

使用过程中有任何问题,发邮件至邮箱:83827730@qq.com

作者:Focusify

  • 12
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值