文章目录
一、简介
1.1 本文软件版本
- ArcGIS Pro:3.5.4
- 对应的python:3.11.11
1.2 arcpy简介
ArcPy 是 Esri 提供的一个 Python 站点包(Site Package)。它是 Python 语言与 ArcGIS 强大的地理处理功能之间的桥梁。
通过 ArcPy,你可以:
- 自动化工作流:把需要点击 50 次鼠标的重复性工作,变成一个"一键运行"的脚本。
- 数据分析:利用 Python 强大的数学库(如 NumPy, SciPy)结合空间数据进行复杂分析。
- 批量制图:自动管理工程文件(.aprx),批量导出成百上千张地图。
- 数据清洗:快速检查、修复和转换海量地理数据。
简单来说就是 ArcGIS Pro 地理处理功能的python接口,但我们进行批量处理数据的时候,写个python脚本效率更高一点。
即工具箱里面的功能:

当然了,在ArcGIS Pro 软件里面你也可以使用模型构建器来实现一些重复、批量的任务(不会编程也能一看就懂),也可以使用python脚本和notebook来执行一些任务。
在ArcGIS Pro里面使用notebook的体验可能更好一些,依个人喜好而定。

🟢比较一下这4种方式:
| 项目 | 模型构建器(ModelBuilder) | 软件内 Python(Python Window) | 软件内 Notebook(ArcGIS Notebook) | 外部独立 Python 脚本 |
|---|---|---|---|---|
| 操作方式 | 可视化拖拽 | 即时输入命令 | 类似 Jupyter Notebook | 独立 .py 脚本 |
| 适合人群 | 不写代码的用户 | 会基础 Python 的用户 | 做数据分析或调试 | 工程开发、批处理、服务器 |
| 任务复杂度 | 适合固定流程 | 中等复杂度 | 中~高复杂度 | 最高,可完全定制 |
| 循环 / 条件判断 | 非常弱(仅简单迭代) | 有但不适合复杂逻辑 | 完整 Python 逻辑 | 完全自由、最灵活 |
| 长期任务 | 不适合 | 容易卡死 | UI 依赖,容易被中断 | 最适合长时间运行任务 |
| 批处理能力 | 中等(流程必须固定) | 中等 | 中等 | 最强,支持大规模批处理 |
| 多进程支持 | 不支持 | 不支持/易出错 | 易出错、受限 | 支持多进程(更稳定) |
| 性能 | 最慢,界面阻塞 | 一般 | 运行受 UI 影响 | 性能最好 |
| 数据锁定问题 | 有(依赖 aprx 工程) | 有 | 有 | 无锁,更适合写大批量数据 |
| 可扩展性(第三方库) | 不支持 | 受限 | 受限 | 完全自由,可装任意库 |
| 适合做的事 | 固定流程、可视化任务 | 小型快速任务 | 调试、可视化、记录流程 | 大型工程、多年任务、服务器自动跑 |
| 适合不做的事 | 大批处理、复杂逻辑 | 大批处理、长时间跑 | 长时间跑、超大数据 | 与 Pro UI 强绑定的事情 |
| 可复现性 | 中等,流程可保存 | 很一般 | 高,Notebook 可重现步骤 | 最高,可版本控制 |
| 依赖 ArcGIS Pro 界面 | 必须依赖 | 必须依赖 | 必须依赖 | 完全不依赖 |
| 典型场景 | 批处理矢量流程 | 调用工具做小任务 | 调试 arcpy 工作流 | 处理上千栅格、服务器部署、生产环境 |
二、克隆arcpy
打开ArcGIS Pro的设置-->包管理器,可以看到软件自带的arcpy:

这是一个conda组织的python虚拟环境,环境位置:在你的软件安装目录的bin下面,例如:
bash
D:\ArcGis\bin\Python\envs\arcgispro-py3
在软件里面写的是无法修改这个默认的环境,其实是可以修改的,在命令就可以像操作其它一般conda虚拟环境一样管理里面的包。
⚠️⚠️但不建议这样做,有时候安装一些奇奇怪怪的包时,可能会破环一些包的依赖。
🟢🟢保险的做法就是,克隆这个环境,然后在你的python脚本中使用克隆后的环境,随便造。
做法也很简单:
- 点击页面右侧活动环境旁边的设置图标;
- 点击右边3个点,选择克隆即可。

克隆的时候选择一个目标位置,以及新的名称即可。
比如我把它克隆到我的系统conda(ArcGIS Pro的conda仅仅是供软件使用)虚拟环境目录了:

克隆后的环境,你可以在这个界面安装一些额外的包,也可以像你使用一般的conda虚拟环境一样管理包。
比如我安装了处理excel格式的2各包:xlsxwriter和openpyxl

三、测试
在pycharm里面选择克隆的环境:

让Gemini随便写个测试脚本:
python
# -*- coding = utf-8 -*-
# @TIME : 2025/11/24 18:09
# @Author : Grace
# @File : arcpy_test.py
# @Software : PyCharm Professional 2025.1.2
# Introduction:测试克隆的arcpy环境
import sys
import os
import arcpy
import openpyxl
import xlsxwriter
def check_environment():
print("=" * 30)
print("1. 环境与版本检测")
print("=" * 30)
# 打印当前使用的 Python 解释器路径
print(f"当前 Python 路径: {sys.executable}")
# 验证是否是克隆环境(通常路径里不包含 Program Files,而是在 Users 目录下)
if "Program Files" in sys.executable:
print("⚠️ 警告: 你似乎正在使用 ArcGIS Pro 的默认安装环境,而不是克隆环境。")
else:
print("✅ 状态: 正确(正在使用克隆/自定义环境)。")
# 打印 Python 版本
print(f"Python 版本: {sys.version.split()[0]}")
# 打印 ArcPy 版本
try:
install_info = arcpy.GetInstallInfo()
print(f"ArcGIS Pro 版本: {install_info['Version']}")
print("✅ ArcPy 导入成功。")
except Exception as e:
print(f"❌ ArcPy 导入失败: {e}")
def check_arcpy_function():
print("\n" + "=" * 30)
print("2. ArcPy 功能测试")
print("=" * 30)
try:
# 创建一个简单的几何对象测试 GIS 功能
pt = arcpy.Point(100, 200)
pt_geom = arcpy.PointGeometry(pt)
print(f"测试几何创建: {pt_geom.JSON}")
print("✅ ArcPy 几何功能正常。")
except Exception as e:
print(f"❌ ArcPy 功能测试失败: {e}")
def check_excel_libs():
print("\n" + "=" * 30)
print("3. Excel 库写入测试")
print("=" * 30)
# 获取当前脚本所在目录,用于存放测试文件
output_dir = os.getcwd()
print(f"测试文件生成目录: {output_dir}\n")
# --- 测试 openpyxl ---
try:
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "OpenPyXL测试"
ws['A1'] = "ArcGIS Pro 3.5"
ws['B1'] = "OpenPyXL 写入成功"
file_name = os.path.join(output_dir, "test_openpyxl.xlsx")
wb.save(file_name)
print(f"✅ openpyxl: 成功生成 '{file_name}'")
except Exception as e:
print(f"❌ openpyxl 失败: {e}")
# --- 测试 xlsxwriter ---
try:
file_name = os.path.join(output_dir, "test_xlsxwriter.xlsx")
workbook = xlsxwriter.Workbook(file_name)
worksheet = workbook.add_worksheet("XlsxWriter测试")
# 添加一个简单的格式
bold = workbook.add_format({'bold': True})
worksheet.write('A1', 'ArcGIS Pro 3.5', bold)
worksheet.write('B1', 'XlsxWriter 写入成功')
workbook.close()
print(f"✅ xlsxwriter: 成功生成 '{file_name}'")
except Exception as e:
print(f"❌ xlsxwriter 失败: {e}")
if __name__ == "__main__":
check_environment()
check_arcpy_function()
check_excel_libs()
print("\n" + "=" * 30)
print("测试结束")
四、注意事项
想必大家都是面向AI编程了,这是好事。
但要注意自己审查一下AI的代码,有时候可能会用错函数,可能是你的中文表述的翻译问题,也可能是软件较新,或者是AI学习了低质量的代码等等。
主要看一下使用的函数名称是否正确。
在ArcGIS Pro里面点击你使用的工具箱右上角的问号:

在跳转的官网上就可以看到这个工具的介绍和函数名称:
