查询和统计是GIS中的重要功能之一。在ArcGIS中可以按属性信息、按空间位置关系进行查询和统计。今天为源GIS给大家分享使用ArcPy编程实现批量统计地理数据库要素类记录数量。

软件应用

统计单个图层的记录数非常简单,直接打开属性表,在表格下方查看总数即可;如果有多个图层,以此类推。

如果您有更好的解决方案,请搜索和关注为源GIS

实现效果

统计要素数量工具,主要包括有以下特点:

  • 能够批量统计数据库里所有图层的要素或记录数量;
  • 支持ArcGIS 所有类型的工作空间、要素类和表;
  • 统计结果输出为CSV格式;
  • 兼容ArcGIS 10.0~10.8、ArcGIS Pro多个版本。

统计结果包括路径文件、要素数据集、要素名称、类型、数量等字段信息:

操作示例

在ArcGIS Pro加载为源工具箱,运行此功能,选择输入数据库、输出统计表格,单击“运行”即可得到结果。

在ArcMap中使用方法类似,如下图所示:

程序源码

主要用到GetCount_management统计数量,完整代码如下:

# -- coding:cp936 --
# ---------------------------------------------------------------------------
# 名称:PrintCount
# 功能:统计图层数量
# 作者:为源GIS
# 日期:2022.7.11
# 说明:
# --------------------------------------------------------------------------- import codecs
import csv
from imp import reload
import os
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
import arcpy
import string try:
#参数1:输入工作空间列表
in_dbs=arcpy.GetParameterAsText(0)
dbs=in_dbs.split(";") #参数2:输出CSV文件
csv_file=arcpy.GetParameterAsText(1)
f = codecs.open(csv_file, 'w','utf_8_sig')
csv_writer=csv.writer(f) count=0 # 写入标题行
title=['路径','文件','要素数据集','要素名称','类型','数量']
csv_writer.writerow(title)
arcpy.AddMessage(title) for db in dbs:
db=db.strip("'")
arcpy.env.workspace = db
db_desc=arcpy.Describe(db)
datasets = arcpy.ListDatasets()
datasets = [''] + datasets if datasets is not None else []
for ds in datasets:
for fc in arcpy.ListFeatureClasses(feature_dataset=ds):
arcpy.SetProgressorLabel("正在统计 "+ fc)
arcpy.AddMessage(fc)
shapeType = arcpy.Describe(fc).shapeType
total = int(arcpy.GetCount_management(fc).getOutput(0))
result=[db_desc.path,db_desc.baseName,ds,fc,shapeType,str(total)]
csv_writer.writerow(result)
count=count+1
for table in arcpy.ListTables():
arcpy.SetProgressorLabel("正在统计 "+ table)
shapeType = 'Table'
total = int(arcpy.GetCount_management(table).getOutput(0))
result=[db_desc.path,db_desc.baseName,'',fc,shapeType,str(total)]
csv_writer.writerow(result)
count=count+1
arcpy.AddMessage('共输出 '+str(count)+'条统计结果。')
except arcpy.ExecuteError:
arcpy.GetMessages()

技术支持

如果有任何疑问或问题,可联系微信:wygis2022,公众号:为源GIS, 企鹅:1811335143

最新文章

  1. C#中Dictionary<TKey,TValue>排序方式
  2. oracle:ORACLE 实际返回的行数超出请求的行数
  3. UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
  4. DNS主从TSIG加密传输
  5. Swift 学习难点笔记
  6. SQL Server优化50法(转)
  7. oracle 表空间、用户名 相关语句
  8. jQuery 遍历祖先
  9. Delphi-UpperCase 函数
  10. html中的rowspan和colspan
  11. 用mapreduce 处理气象数据集
  12. mysql数据类型和基础语句
  13. [BZOJ 2705] [SDOI 2012] Longge的问题
  14. Lua游戏开发之时区问题
  15. 毕加索发布轻量化转化引擎及BIMSOP协作云平台
  16. [C++ Primer Plus] 零散知识点(一)、输入函数(cin,cin.get,cin.getline等)+string头文件辨析
  17. Docker基础学习-尚硅谷
  18. 03基于python玩转人工智能最火框架之TensorFlow介绍
  19. 利用scp 远程上传下载文件/文件夹
  20. 冰淇淋三明治 (Android 4.0)介绍

热门文章

  1. esp32把玩记-④ 星星点灯 (点亮led)
  2. 后端框架的学习----mybatis框架(7、使用注解开发)
  3. python django超链接
  4. VUE v-model 语法糖
  5. while循环条件不成立却无法跳出死循环的问题
  6. .NET 7.0 重磅发布及资源汇总
  7. 从0搭建vue3组件库: Input组件
  8. 面试 个人摸底监测 考察JavaScript基础 (第三天)
  9. 【云原生 · Kubernetes】配置 Rancher docker 云平台
  10. Java对象拷贝原理剖析及最佳实践