【ArcGIS Pro】克隆 arcpy 环境(ArcGIS Pro 3.54)

文章目录

一、简介

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里面点击你使用的工具箱右上角的问号

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

相关推荐
vvoennvv4 小时前
【Python TensorFlow】 TCN-LSTM时间序列卷积长短期记忆神经网络时序预测算法(附代码)
python·神经网络·机器学习·tensorflow·lstm·tcn
nix.gnehc5 小时前
PyTorch
人工智能·pytorch·python
z***3355 小时前
SQL Server2022版+SSMS安装教程(保姆级)
后端·python·flask
I'm Jie5 小时前
从零开始学习 TOML,配置文件的新选择
python·properties·yaml·toml
二川bro6 小时前
Scikit-learn全流程指南:Python机器学习项目实战
python·机器学习·scikit-learn
代码的乐趣6 小时前
支持selenium的chrome driver更新到142.0.7444.175
chrome·python·selenium
数据知道6 小时前
Django基础项目:从零到一搭建用户管理系统
python·django·python web·python项目
z樾6 小时前
TorchRL-MADDPG
pytorch·python·深度学习
Yue丶越7 小时前
【Python】基础语法入门(三)
开发语言·python