Arcpy批量对栅格进行ZonalStatisticsAsTable

(我是转载的,自己试了可行之后再发出来,原文找不到了)

利用arcgis的ZonalStatisticsAsTable功能,对多幅影像进行批处理计算

 完整代码:

# -*- coding: utf-8 -*-
 
import arcpy
from arcpy import env
from arcpy.sa import *
import os
 
# Set environment settings

env.workspace = "E:/DATAin/" # 输入raster所在的文件夹
output_path="E:/DATAout/"  # 输出文件夹
 
# Set local variables
shp  = "E:/DATA/geo/test.shp"
zoneField = "type"     #按照shp的属性,改成你自己文件里字段名
 
datanames = os.listdir(env.workspace)
count = 0
for dataname in datanames:
    if os.path.splitext(dataname)[1] == '.tif': #目录下包含.tif的文件
        count=count+1
        print(dataname)
print('count:'+str(count))
 
num=1
for dataname in datanames:
    if os.path.splitext(dataname)[1] == '.tif': #目录下包含.tif格式的文件   
        data_name=os.path.splitext(dataname)[0]
        arcpy.CheckOutExtension("Spatial")
 
        file_name=data_name.split('.')[0]
        raster= env.workspace+"/"+ dataname
        outTable=(output_path+"/"+file_name+".dbf")
        print(outTable)
        
        outZSaT = ZonalStatisticsAsTable(shp,zoneField,raster,outTable,"DATA", "MEAN")
 
        #下面是输出的每个参数的意义
        #shp: 输入的区域数据(一般为矢量的区域文件), 
        #zoneField: 区分各个区域的字段(一般为名字或者代码),
        #raster: 需要统计的区域, 
        #outTable: 输出的表(输出到数据库最好扩展名为.dbf;输出之后可以直接当工作表读取), 
        #"DATA":{是否忽略空值,DATA表示不计算空值}, 
        #"MEAN":{需要统计的类型(最大、最小、平均,按需选择)})
 
 
        print(1.0*num/count)
        num=num+1

print('finish')

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值