楼主: 范宏伟
219 0

[其他] 【ArcGIS Pro】克隆 arcpy 环境(ArcGIS Pro 3.54) [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-4-26
最后登录
2018-4-26

楼主
范宏伟 发表于 2025-11-25 16:21:24 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

一、概述

1.1 软件版本信息

本文所使用的软件环境如下: ArcGIS Pro 版本:3.5.4 对应 Python 版本:3.11.11

1.2 什么是arcpy?

ArcPy 是 Esri 提供的一个 Python 站点包(Site Package),作为连接 Python 编程语言与 ArcGIS 地理处理功能的核心接口。 通过该工具包,用户可以实现多种高级操作: - 自动化流程:将原本需要多次手动点击的操作转化为一键执行的脚本任务。 - 空间数据分析:结合 NumPy、SciPy 等科学计算库,对地理数据进行深度分析。 - 批量出图:自动加载工程文件(.aprx),批量导出大量地图成果。 - 数据清洗与转换:高效检查、修复并转换大规模的空间数据集。 简而言之,ArcPy 就是 ArcGIS 地理处理能力在 Python 中的编程化体现。相比图形界面操作,编写脚本在处理大批量任务时效率更高。
ArcGIS Pro
例如,以下这些常见功能都可以通过代码调用实现:
工具箱
此外,在 ArcGIS Pro 内部还提供了多种交互方式来完成重复性或批量任务: - 使用 模型构建器(ModelBuilder):无需编程基础,通过拖拽方式设计流程。 - 利用 Python 窗口:直接输入命令,适合简单调试和快速测试。 - 运行 ArcGIS Notebook:类似 Jupyter 的交互式环境,便于记录和分享工作流。 - 编写 外部独立 Python 脚本:适用于复杂项目和生产级部署。 其中,使用 Notebook 的体验较为流畅,尤其适合数据分析类任务,具体选择取决于个人习惯。
模型构建器

四种工作模式对比

以下是对上述四种方法的综合比较:
项目 模型构建器(ModelBuilder) 软件内 Python(Python Window) 软件内 Notebook(ArcGIS Notebook) 外部独立 Python 脚本
操作方式 可视化拖拽 即时输入命令 类似 Jupyter Notebook 独立脚本
适合人群 不写代码的用户 掌握基础 Python 的用户 用于数据分析或流程调试 工程开发、批处理、服务器运维
任务复杂度 适合固定流程 中等复杂度 中~高复杂度 最高,支持完全自定义逻辑
循环 / 条件判断 功能弱(仅支持简单迭代) 有,但不适合复杂逻辑 完整 Python 控制结构 完全自由,灵活性最强
长期任务运行 不适合 容易卡死 依赖 UI,易中断 最适合长时间运行任务
批处理能力 中等(流程需预先设定) 中等 中等 最强,支持超大规模批处理
多进程支持 不支持 不支持或易出错 受限且不稳定 支持多进程,运行更稳定
性能表现 最慢,界面阻塞严重 一般 受 UI 影响较大 最优,无界面负担
数据锁定问题 存在(依赖 .aprx 工程文件) 存在 存在 无锁机制,更适合写入大量数据
可扩展性(第三方库) 不支持 受限 受限 完全自由,可安装任意第三方库
适用场景 固定流程、可视化建模 小型快速任务 调试、可视化展示、流程记录 大型工程项目、长期任务、服务器部署
不推荐用途 大批量处理、复杂逻辑控制 大批量任务、长时间运行 超大数据集、持续运行任务 与 ArcGIS Pro UI 强绑定的操作
可复现性 中等,流程可保存 较差 高,Notebook 可重现步骤 最高,支持版本控制(如 Git)
是否依赖 ArcGIS Pro 界面 必须依赖 必须依赖 必须依赖 完全不依赖
典型应用场景 矢量数据批处理流程 调用工具完成小任务 调试 arcpy 工作流 处理上千个栅格文件、生产环境自动化
.py

二、如何克隆 arcpy 环境

进入 ArcGIS Pro 的设置页面 → 包管理器,可以看到系统自带的 Python 环境信息:
arcpy
该环境是由 Conda 管理的虚拟环境,通常位于软件安装目录下的 bin 文件夹中,例如: D:\ArcGis\bin\Python\envs\arcgispro-py3 虽然在软件内部无法直接修改默认环境,但实际上可以通过命令行像管理普通 Conda 环境一样对其进行操作。 但强烈建议不要直接修改原生环境,因为安装某些非标准包可能导致依赖关系被破坏,进而影响软件稳定性。 推荐做法是:**克隆原始环境**,然后在新环境中自由安装所需包,避免对主环境造成影响。 具体步骤如下: 1. 在包管理器界面,点击当前活动环境右侧的“设置”图标; 2. 点击右侧三个点按钮,选择“克隆”选项即可开始复制。 在弹出窗口中指定新的环境名称和存储路径。例如,可将其克隆至系统的 Conda 环境目录下(注意:ArcGIS Pro 自带的 Conda 仅供其自身使用,不应与其混淆):
conda
克隆完成后,你可以在该环境中自由安装额外的 Python 包,管理方式与常规 Conda 虚拟环境一致。 例如,我在此环境中安装了两个用于处理 Excel 文件的库: xlsxwriteropenpyxl

三、环境测试

接下来,在 PyCharm 中配置使用刚刚克隆的 Python 解释器:
Gemini
创建一个简单的测试脚本以验证 arcpy 是否可用:
# -*- 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
后续可根据实际需求继续添加 arcpy 相关导入语句并运行功能测试。

四、注意事项

- 克隆后的环境应定期备份,尤其是已安装多个第三方库的情况下。 - 避免在克隆环境中安装与 ArcPy 冲突的库(如旧版 numpy 或 pandas)。 - 若在外部 IDE 中运行脚本,请确保脚本中正确引用了地理数据库路径、工程文件位置等资源。 - 多人协作时,建议统一使用克隆环境,并共享环境配置文件(environment.yml)。 - 批量处理任务前,先在小样本上测试脚本逻辑,防止错误扩散。
import arcpy
import openpyxl
import xlsxwriter
import sys
import os

def check_environment():
    print("=" * 30)
    print("1. 环境与版本检测")
    print("=" * 30)
    
    # 输出当前使用的 Python 解释器路径
    print(f"当前 Python 路径: {sys.executable}")

    # 判断是否在推荐的克隆环境中运行(避免使用默认 Program Files 环境)
    if "Program Files" in sys.executable:
        print("?? 警告: 你似乎正在使用 ArcGIS Pro 的默认安装环境,而不是克隆环境。")
    else:
        print("? 状态: 正确(正在使用克隆/自定义环境)。")

    # 显示 Python 版本信息
    print(f"Python 版本: {sys.version.split()[0]}")

    # 检查 ArcPy 是否正常导入并获取 ArcGIS Pro 版本
    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:
        # 创建点对象和几何体,用于验证空间处理功能是否可用
        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未充分学习、或AI参考了质量较低的开源代码等。

重点检查所使用的函数名称、参数是否符合官方文档规范,确保代码逻辑正确且适配当前运行环境。

在ArcGIS Pro中,找到你所使用的工具箱,点击其右上角的按钮:

问号

随后页面会跳转至官方网站,在该页面中你可以查看到对应工具的详细说明与功能描述:

函数名称
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:ARCGIS ARC GIS introduction Professional

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-5 17:53