对于常年和GIS数据打交道的小伙伴来说,重复机械的数据处理绝对是工作中的一大痛点:批量裁剪几十份矢量数据、挨个汇总属性字段、一张张导出制图成果……手动操作不仅耗时耗力,还极易出现漏处理、参数错误的问题,半天时间都耗在重复性工作上。其实ArcGIS Pro内置的Python+ArcPy,完全能实现全流程自动化,从数据批量处理到最终制图出图,一行代码替代N次手动点击。
今天先带大家快速掌握ArcGIS Pro中Python语句的核心用法,再通过「多区域土地利用数据批量裁剪+属性统计+自动化出图」这一实用复杂案例,手把手教你搭建GIS自动化工作流,新手也能跟着实操,直接提升工作效率!
老规矩,学习之前先放首歌安静的歌曲,话不多说,直接开大招。
一、先搞懂:ArcGIS Pro中Python基础用法
1. 两大代码运行入口(按需选择)
在ArcGIS Pro里运行Python代码,无需额外配置Python环境,软件自带专属环境,两个入口超便捷:
①Python窗口:【分析】→【地理处理】→【Python窗口】,适合代码调试、临时运行简单语句,结果实时显示,新手入门首选;
②ArcGIS Notebook:【插入】→【新建Notebook】,适合编写完整脚本、复杂批量处理,支持代码分段运行、注释留存,方便长期复用。
2. 核心基础语句(所有脚本通用)
不管是简单处理还是复杂案例,这几句基础代码是开篇必写,相当于搭建脚本的“地基”:
import arcpy # 1. 导入ArcPy核心库,这是调用ArcGIS所有工具的关键import os # 辅助处理文件路径,批量处理必备env.workspace = r"E:\测试数据\测试数据.gdb" # 设置工作空间,填写你的数据存储路径,加r避免转义报错env.overwriteOutput = True # 允许覆盖已有输出数据,避免重复运行时报错 env.processBackgroundGeoprocessing = False # 关闭地理处理后台运行,方便查看执行进度
3. 核心语法规则(避坑关键)
①所有工具调用格式:arcpy.工具名_工具箱(参数1,参数2,...),和手动运行工具参数一一对应;
②文件路径必须加r,或用双斜杠\\,单斜杠会触发转义错误;
③批量处理必用for循环,遍历数据列表实现一键批量操作;
④可添加print语句,实时查看代码执行进度,方便排查问题。
二、重磅复杂案例:多区域土地利用数据全流程自动化
1.案例背景
日常工作中,我们经常会拿到全省土地利用栅格/矢量数据,需要按各个地级市的行政区划边界,批量裁剪出每个市的土地利用数据,再统计每个市不同土地利用类型的面积,最后自动生成标准化制图模板并导出PDF成果。
手动操作至少需要大半天,用Python脚本5分钟就能完成全流程,以下是完整可直接复制的代码+分步解析。
2.案例准备
①数据准备:
输入数据:全省土地利用矢量数据(字段:DLMC代表地类名称、Shape_Area代表面积);

裁剪边界:各地级市行政区划矢量数据(字段:CITY_NAME代表城市名称);

输出路径:提前新建文件夹和地理数据库,用于存储裁剪结果、统计表格、制图成果。

②工具依赖:ArcGIS Pro 2.8及以上版本,内置Python3环境。
3.完整自动化代码(分步注释,直接复制)
#!/usr/bin/env python# -*- coding:utf-8 -*-# ---------------------------------------------------------------------------# Name: 多区域土地利用数据全流程自动化# # Author: OldGiser# Created on: 2026/*/** 11:49# Reference:# Description# python3.11# ---------------------------------------------------------import arcpyimport os# 设置工作空间和输出路径env.workspace = r"E:\测试数据\测试数据.gdb"output_gdb = r"E:\测试数据\处理结果.gdb"output_pdf = r"E:\测试数据\制图成果"# 创建输出文件夹(不存在则自动新建)if not os.path.exists(output_pdf): os.mkdir(output_pdf)# 定义输入数据landuse_fc = "DLTB" # 土地利用数据city_boundary = "Clip_polygon" # 市级行政区划# ———— 第二步:获取所有城市名称列表,实现批量遍历 ————city_list = []# 用游标读取行政区划中的城市名称with arcpy.da.SearchCursor(city_boundary, ["CITY_NAME"]) as cursor: for row in cursor: city_list.append(row[0])print(f"待处理城市列表:{city_list}")# ———— 第三步:批量裁剪+地类面积统计 ————for city in city_list: print(f"正在处理:{city}") # 1. 筛选单个城市边界 city_query = f"CITY_NAME = '{city}'" single_city = os.path.join(output_gdb, f"{city}_边界") arcpy.Select_analysis(city_boundary, single_city, city_query) # 2. 按城市边界裁剪土地利用数据 clip_landuse = os.path.join(output_gdb, f"{city}_土地利用") arcpy.Clip_analysis(landuse_fc, single_city, clip_landuse) # 3. 按地类汇总面积,生成统计表格 stats_table = os.path.join(output_gdb, f"{city}_地类面积统计") arcpy.Statistics_analysis(clip_landuse, stats_table, [["Shape_Area", "SUM"]], "DLMC") # 添加面积单位换算字段(平方米转公顷) arcpy.AddField_management(stats_table, "总面积_公顷", "DOUBLE") arcpy.CalculateField_management(stats_table, "总面积_公顷", "!SUM_Shape_Area! / 10000", "PYTHON3")# ———— 第四步:自动化制图+批量导出PDF ————# 加载ArcGIS Pro工程文件(提前做好制图模板)aprx = arcpy.mp.ArcGISProject(r"E:\测试数据\测试数据.aprx")# 获取工程中的地图和布局map_obj = aprx.listMaps("地图")[0]layout = aprx.listLayouts("土地利用现状图")[0]# 遍历裁剪后的土地利用数据,更新图层并出图for city in city_list: # 移除原有图层,添加当前城市数据 for layer in map_obj.listLayers(): map_obj.removeLayer(layer) city_landuse = os.path.join(output_gdb, f"{city}_土地利用") map_obj.addDataFromPath(city_landuse) # 更新布局中的标题文本 for text_elem in layout.listElements("TEXT_ELEMENT"): if text_elem.name == "标题": text_elem.text = f"{city}土地利用类型分布图" # 导出PDF成果到指定文件夹 pdf_path = os.path.join(output_pdf, f"{city}_土地利用图.pdf") layout.exportToPDF(pdf_path, resolution=300) print(f"{city}制图完成,已导出PDF")# 释放工程资源del aprxprint("✅ 全流程处理完成!")
4.完成截图如下:

案例核心亮点
1.一站式自动化:从数据裁剪、属性统计到制图出图,全流程无需手动干预;
2.批量适配:无论多少个城市/区域,只需修改数据路径,即可一键运行;
3.成果标准化:导出的PDF图纸分辨率300DPI,符合项目成果提交要求;
4.可拓展性强:可修改代码适配栅格数据裁剪、字段更新、批量拓扑检查等场景。
三、新手实操避坑小指南
1.路径错误:所有路径务必加r,且不要出现中文、空格以外的特殊字符;
2.字段名称错误:代码中的字段名(如CITY_NAME、DLMC)必须和自己数据的字段完全一致;
3.模板准备:自动化制图需提前在ArcGIS Pro中做好布局模板,保存工程文件;
4.权限问题:数据路径不要放在C盘系统文件夹,避免无写入权限导致报错。
四、写在最后
对于GIS从业者来说,Python不是可有可无的技能,而是提升工作效率、摆脱重复劳动的核心工具。这个复杂案例覆盖了日常工作中数据处理、空间分析、制图输出三大核心场景,吃透这个案例,大部分批量GIS任务都能轻松搞定。
不用畏惧代码,ArcPy的语法和ArcGIS工具一一对应,哪怕是零基础,照着代码修改参数,也能快速上手。赶紧打开ArcGIS Pro,试着运行这段代码,感受GIS自动化的便捷吧!
下期将分享Python结合ArcGIS API for Python的在线数据自动化获取技巧,记得星标公众号,不错过干货更新~
创作不易,如果这篇文章对你有帮助,欢迎点赞、在看、转发给身边的使用ArcGIS Pro的小伙伴~ 有任何疑问,或者想了解更多的ArcGIS Pro相关技术及规范,都可以在评论区留言,后续我将继续关于ArcGIS Pro的相关软件的操作技巧和使用经验,让更多都小伙伴~在规范使用ArcGIS Pro软件学习方面收获满满,记得关注哟!另外后台私信我们,加交流群,获取更多相关ArcGIS Pro软件技能知识。
互动话题
你平时在GIS工作中,最头疼哪些重复操作?评论区留言,下期安排对应的Python自动化教程!
#ArcGISPro #Python #GIS干货 #测绘工程 #地理信息 #数据自动化处理 #ArcPy