ArcPy|使用ArcPy脚本实现分区统计并将结果添加到原有要素的属性表

概述​

使用ArcPy快速实现按区域统计,并将统计结果添加到原有属性表,因为ArcPy的接口中并没有将结果直接添加到原属性表这一选项,因此通过一个中间dbf文件存储统计得到的结果,并将中间dbf文件与原有要素连接,最后将中间文件删除来实现。

Python代码

# -*- coding: utf-8 -*-
"""
PROJECT_NAME: ArcPy 
FILE_NAME: ZonalSta
AUTHOR: welt
DATE: 2024/7/2
"""

import arcpy

# 定义输入和输出参数
zone_feature = "输入区域数据路径"
raster = "需要统计的区域数据路径"
#中间dbf文件
mid_table = "mid.dbf" # 不用管

# 运行ZonalStatisticsAsTable
arcpy.env.overwriteOutput = True
mid_table = arcpy.sa.ZonalStatisticsAsTable(zone_feature, "OBJECTID", raster, mid_table, "DATA", "MAJORITY")
# 下面是输出的每个参数的意义
# shp: 输入的区域数据(一般为矢量的区域文件),
# zoneField: 区分各个区域的字段(一般为名字或者代码),
# raster: 需要统计的区域,
# outTable: 输出的表(输出到数据库最好扩展名为.dbf),
# "DATA":{是否忽略空值,DATA表示不计算空值},
# "MAJORITY":{需要统计的类型(最大最小平均……按需选择)})

# field_name = "CLASSIFICATION"
# field_type = "DOUBLE"
# arcpy.AddField_management(zone_feature, field_name, field_type)

join_field = "OBJECTID"  # 共有字段,通常是矢量数据的FID或OID字段
fields = ["MAJORITY"]  # 要加入的字段列表

# 执行连接
arcpy.management.JoinField(zone_feature, join_field, mid_table, join_field, fields)

arcpy.Delete_management(mid_table)
print('finish')
posted @ 2024-07-06 18:11  Weltㅤ  阅读(12)  评论(0编辑  收藏  举报