修改时间:2023年12月16日

本教程使用的是ArcGIS Pro而不是ArcMap,关于两者的区别可以看看这篇文章:4.2.2-ArcGIS Pro和ArcMap的区别.md

想象一下,通过几行Python代码,您可以轻松地遍历大量的地理数据集,快速制作地图,甚至进行大量的空间数据分析,帮助论文写作。这不仅是提高效率的工具,更是创新和探索的平台。

在这篇文章中,我将介绍什么是Arcpy,以及如何安装和配置它,开始吧。

如果让我用一句话说明Arcpy是什么,我想说:"Arcpy是一个功能强大的Python库,专门用于执行地理数据分析、数据转换、数据管理,以及在ArcGIS Pro中实现地图自动化,它允许用户调用几乎所有ArcGIS工具,并可与其他Python工具结合,打造个性化的工作流程。”

Python代码文件被称为脚本,Python脚本可以在ArcGIS Pro中的应用可实现自动执行复杂的任务,避免繁琐的软件操作界面。举例来说,假设你需要收集不同渠道的 shapefile,然后要检查和匹配所有shp的坐标系,如果是在GIS软件中手动操作,那么你一定会感到崩溃。利用Arcpy,我们可以编写Python脚本来检查并统一多个数据集的坐标系:

python代码演示

图中实现了读取多个文件中所有的栅格文件,并且根据其原有坐标批量统一到同一个坐标系,具体会在看完基础课程之后的案例部分讲到:利用ArcGIS Python批量处理地理数据的坐标系

一、ArcPy的环境配置

ArcPy是默认 Python 存在于ArcGIS Pro环境中的,而且需要搭配软件使用。所以安装好ArcGIS Pro就完成了第一步。

1、ArcGIS Pro的安装

对于刚入门的GIS学习者,可以选择先试用21天,说不定“从入门到放弃”😂。

2、ArcPy环境管理

Arcpy采用conda管理环境,可以自定义环境,添加或删除库,但是不建议修改默认的arcgispro-py3环境,因为自定义环境会使其在某些情况下不可用,会导致ArcGIS Pro 应用程序(使用 arcgispro-py3 环境)中的功能也可能处于错误状态。一旦出现错误,可能需要完全卸载并重新安装 ArcGIS Pro。

我们需要克隆环境,官方使用的是anaconda管理Python软件包,但是因为我们在国内,使用官方教程中通过软件设置界面进行克隆环境操作时会出错或者超时,几个小时都无法克隆环境。经过查找,我找到了两种方法来克隆环境,下面来介绍一下我是如何克隆环境的:

自定义环境中添加和删除包非常容易导致环境出错,建议不要大量修改环境中的库。

(1)快速克隆环境

方法一:使用conda进行环境克隆

适合国内环境,配置conda镜像之后,通过程序自带的conda包管理器进行克隆,同样支持使用Pycharm:

  1. 找到 ArcGIS Pro 环境的conda镜像源文件.condarc,文件一般在:“C:\Program Files\ArcGIS\Pro\bin\Python.condarc”。
  2. 右键.condarc修改文件的权限,保证登录的用户可以修改。如图勾选“Users”的修改权限。

  1. 修改文件,将以下文本覆盖粘贴进此文件:
channels:
  - esri
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  deepmodeling: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/
  1. 打开命令提示符输入proenv(或者找到并打开"C:\Program Files\ArcGIS\Pro\bin\Python\Scripts\proenv.bat"),如图所示则激活了arcgispro-py环境,:

image-20230823160526441

  1. 运行清除conda包索引的命令: conda clean -i ,提示输入y

  2. 管理员运行Arcgis Pro程序,进入包管理器,点击克隆环境,指向你自己安装的conda环境文件夹或者其他文件。(相当于在后台运行了conda克隆环境的命令)

    image-20230823160753831

  3. 管理员运行Pycharm或其他编辑器,添加解释器-使用现有conda环境-选择刚刚克隆的环境。

方法二:直接复制环境文件夹

下面说明如何快速克隆环境,简单来说就是直接复制arcgispro-py3文件夹:

  1. 找一个你认为合适的存放克隆文件夹的位置,我在此处将文件夹放在了conda环境文件夹下"C:\Users\用户名\conda\envs\arcgispro-py3-clone"

  2. 进入到Pro默认安装文件下,拷贝文件arcgispro - py3到上述地址中,改名,此处改名为arcgispro-py3-clone。

  3. 在Pro “管理环境”–“添加”, 然后指向到第二步中的文件夹。

  4. 点击确定即可。

(2)手动安装环境

从 ArcGIS Pro 2.7 开始,当 Arcpy 包版本不冲突时,可将其添加到现有 Python 3 环境中。 要添加 Arcpy,请使用 conda 从 Anaconda Cloud 上的 Esri 频道安装 Arcpy。 从 Python 命令提示符中,使用适当的版本号运行以下命令:

conda install arcpy=3.0 -c esri

具体留在如何配置机器学习的Arcpy环境中一起说明。

3.激活环境

除了使用proenv可以激活环境之外,还有另一种方式,proswap 命令:

proswap -n <your_env>

proswap 命令不是标准 conda 命令的,是arcgispro独有的。proswap 命令前面没有 condaproswap 会直接更改ArcGIS的默认环境,而proenv只是在对话框临时暂时激活环境。

4.测试ArcPy安装情况

我们可以直接打开ArcGIS Pro 中的Jupyter Notebook,打开方式:

要创建笔记本,请单击功能区上的插入选项卡,然后单击新建笔记本按钮 。 或者,可以打开目录窗格,浏览至工程目录,右键单击文件夹,然后选择新建 > 笔记本

已添加到工程中的 ArcGIS Notebooks 将在目录窗格的 Notebooks 文件夹下列出。 使用 ArcGIS Pro 创建的 Notebook 会自动添加到您的工程中。 要将现有的笔记本添加到工程中,请右键单击 Notebooks 文件夹,然后选择添加笔记本,或者单击插入功能区上添加笔记本按钮旁边的下拉箭头,然后选择添加笔记本

要在工程中打开现有笔记本,请浏览到目录窗格中的笔记本文件,然后双击笔记本,或者右键单击笔记本并选择打开笔记本

我们输入一下代码导入Arcpy,无报错则配置成功:

# 方式一导入随 ArcGIS 安装的标准工具箱中的所有地理处理工具
import arcpy
# 导入某个模块
import arcpy.mp

在很多情况下,用户可能不想使用整个模块或无需使用整个模块。

如果只导入某一模块的一部分,可以使用 from-import 语句。在下例中,将导入 env 类(env 类包含所有地理处理环境)。现在无需以 arcpy.env 的形式访问环境,而可以将其简化为 env。

from arcpy import env
env.workspace = 'c:/data' 

5.管理环境

conda install <package> # 推荐
pip install <package>

国内pip换源:

临时使用:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

设为默认:

升级 pip 到最新的版本 (>=10.0.0) 后进行配置:

Python -m pip install --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

conda与pip安装的区别:

  1. conda可以创建和管理独立的虚拟环境,每个环境可以有自己的Python解释器和包集合。这使得在不同项目之间隔离包依赖关系变得更加容易。pip也可以创建虚拟环境,但是通常需要借助其他工具(如virtualenv)来实现。
  2. 包源和依赖解析:conda可以从多个包源(如Anaconda仓库、conda-forge、arcgis的esri渠道等)中获取软件包,这些包源提供了广泛的软件包集合。conda还能够解决包之间的依赖关系,确保安装的软件包及其依赖项兼容。pip主要从Python Package Index(PyPI)获取软件包,但在解决依赖关系方面相对较弱,可能需要手动处理依赖项。

6.常用软件包还有:

  1. NumPy:一个用于科学计算的库,提供了高性能的多维数组对象和各种数学函数。
  2. Pandas:一个用于数据分析和处理的库,提供了高效的数据结构和数据操作工具。
  3. Geopandas:基于Python的开源地理数据处理库,它结合了Pandas的数据处理功能和Shapely的地理几何操作,提供了方便的地理数据分析和可视化工具。
  4. Shapely是一个基于Python的开源库,用于进行地理几何操作,包括点、线、面等地理对象的创建、编辑和分析。
  5. TensorFlow:一个用于机器学习和深度学习的开源库,提供了丰富的工具和功能。
  6. PyTorch:一个用于构建深度学习模型的开源机器学习库,提供了动态计算图的支持。
  7. Matplotlib:一个用于绘制数据可视化图表的库,提供了各种绘图选项和样式。
  8. OpenCV:一个用于计算机视觉和图像处理的开源库,提供了各种图像处理和计算机视觉算法。
  9. Arcpy:arcpy是ArcGIS软件的Python库,用于地理信息系统(GIS)数据处理和空间分析。它提供了许多功能和工具,用于读取、写入、处理和分析地理空间数据。arcpy可以用于自动化地理数据处理任务、地图制作、空间分析等。
  10. Scikit-learn:一个用于机器学习的库,提供了各种常用的机器学习算法和工具。
  11. Django:一个强大的Web应用框架,用于构建高效的、可扩展的Web应用程序。
  12. requests:requests是一个简洁而强大的Python库,用于发送HTTP请求和处理HTTP响应。它提供了简单易用的API,使得与Web服务进行通信变得简单。
  13. selenium:selenium是一个用于Web应用程序测试和自动化的Python库。它可以模拟用户与浏览器的交互,实现自动化操作,例如填写表单、点击按钮、抓取网页内容等。

更多:

【ArcGIS Python系列】系列笔记为学习ArcGIS Pro和Arcpy过程中的总结,记下来方便回看,最新版本会优先发布在我的博客GITHUB

【ArcGIS Python系列】教程部分:

【ArcGIS Python系列】jupyter notebook:


如果你觉得本系列文章有用,欢迎关注博客,点赞和收藏,也欢迎在评论区讨论:

更多账号