1. 项目背景与需求解析
在地理信息数据处理工作中,我们经常需要处理大量分散存储的Shapefile文件。最近我在处理一个县域基础地理信息项目时,就遇到了这样的需求:颍上县23个乡镇的规划数据分散存储在近百个不同文件夹中,每个文件夹包含若干.shp文件,需要快速统计每个图层的要素数量以及总数量。
传统的手动统计方式存在三个明显痛点:
- 文件数量庞大时(如超过50个.shp),ArcGIS桌面端逐个打开查看属性表的方式效率极低
- 不同文件夹中的同名.shp文件容易造成统计混淆
- 人工记录容易出错且无法形成结构化统计报表
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术方案设计
2.1 核心工具选型
采用ArcPy作为解决方案的核心工具链,主要基于以下考虑:
- 原生支持ESRI格式数据读写,无需额外转换
- 提供完整的空间数据访问接口(如Describe函数)
- 可与ArcGIS Pro环境无缝集成
- 支持递归目录遍历和批量处理
2.2 关键函数说明
实现本需求主要依赖三个核心函数:
arcpy.da.Walk:递归遍历目录树,获取所有.shp文件路径arcpy.MakeFeatureLayer_management:创建临时图层对象arcpy.GetCount_management:获取要素数量统计
特别注意:MakeFeatureLayer创建的临时图层在脚本结束后会自动释放,不会占用额外存储空间
3. 完整实现代码
python复制import arcpy
import os
def batch_shp_stats(root_folder, output_csv):
"""
批量统计多个文件夹中shp文件的要素数量
:param root_folder: 根目录路径
:param output_csv: 输出统计结果CSV路径
"""
# 创建结果CSV文件并写入表头
with open(output_csv, 'w') as f:
f.write("文件路径,图层名称,要素数量\n")
# 设置工作空间环境
arcpy.env.workspace = root_folder
arc
