当前位置:首页>python>ArcGIS Pro+Python进阶实操批量数据处理+自动化制图,一个复杂案例搞定GIS高效工作流

ArcGIS Pro+Python进阶实操批量数据处理+自动化制图,一个复杂案例搞定GIS高效工作流

  • 2026-10-04 22:33:54
ArcGIS Pro+Python进阶实操批量数据处理+自动化制图,一个复杂案例搞定GIS高效工作流

对于常年和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

最新文章

随机文章