前言:从 ArcGIS desktop 版本(10.X),更新至 ArcGIS Pro,这里我们不说 ArcGIS 的差异,只讲讲自己使用在 ArcGIS Pro 中使用 ArcPy 的感受。
新增的包管理工具
差别不明显但是对使用体验提升巨大的改变:自带的 Python 包管理工具。
打开 ArcGIS Pro,点击左下角的 setting(设置),点击 Python,最后再点击 Manage Enviroments 即可打开 Python 包管理工具。
包管理工具自带的包管理工具 ArcGIS Pro 区别原有 ArcGIS 特有的功能,可以很方便克隆环境,进一步扩展 Python 包的多功能性和实用性,单个工作站上可同时存在多个 Python 环境且彼此之间相互独立。
让我非常喜欢的一点就是 arcpy 以及一众默认安装的库,比如万年不变但永远好用的 numpy 和 scipy 等,都被放在 conda 创建的虚拟环境中,原生环境下只有 pip 下载器,我觉得特别好,这样就不怕乱折腾把原生环境搞坏,然后发生不得不重新安装 ArcGIS Pro的故事,这种故事早在 ArcGIS desktop 时期就经常发生。
当然了,这个默认的虚拟环境也是一种原生环境,其中配套了包括 arcpy 在内的大量第三方库,官方强烈建议不要对其做任何修改,你可以在克隆的环境中任意修改、安装第三方库。
自带的包管理工具本质上是 conda,外面加了层壳,习惯用 conda 的话,可以在 Python Command Prompt (随着 ArcGIS Pro 一同安装)中输入命令行使用。如果不了解 conda,也没有关系,使用带有图形界面的包管理工具即可。
conda(ArcGIS Pro 2.5)常用的简单命令:
克隆一个名为 GISP 的新环境:conda create --clone arcgispro-py3 -n gisp
删除环境:conda remove -n gisp --all
激活(进入)新环境:activate gisp
退出环境:deactivate
安装 xxx 库:conda install xxx
查看库当前的 Python 版本:python -V
新创建的独立环境会完全复制默认环境中的所有库,新环境默认存放在:
C:\Users\用户名\AppData\Local\ESRI\conda\envs
Note:
原生 conda 的激活/退出命令有些许的不同,使用时请注意:
激活(进入)新环境:conda activate gisp
退出:conda deactivate gisp
如果是使用包管理工具的话点击 Clone Default 可以克隆新增一个环境。
Python版本更新
从 Python2 升级到 Python3 应该是最明显的变化。
简直无法忍受 python2 中字符串同时存在 Unicode 和 str 的情况,所以我是很乐意使用 Python3 的,同时在多年的积极开发后,社区已经达成了新进行的开发工作使用 Python3 的共识。
由于 Python2 和 Python3 的不互相兼容,所以升级工作需要对原有的代码进行修改以满足 Python3,可以使用 2to3 命令行实用程序自动执行大部分的过程。
2to3 命令:
https://docs.python.org/3/library/2to3.html
不过手动修改也是挺快的,对我来说基本只有 print 语句和 xrange 要修改。
这个就不用多说了,使用 Python 的同学应该都清楚。
ArcPy/自定义工具箱的更新
arcpy
既然 python 版本从2变成了3,那么理所当然的 arcpy 也需要更新。
除了基本的语法改变(因为 python3)外,更重要的是 arcpy 的部分类、方法进行了重组、修改和增减。
比如使用频繁的 arcpy.mapping 模块已被移除,替换成了 arcpy.mp 模块,以支持在 ArcGIS Pro 中的制图工作流。
arcpy.na 模块同样包含更改,多个更改与从 arcpy.mapping 到 arcpy.mp 的更改相关联。
关于 ArcGIS Pro 中 ArcPy 类/模块的概览:
https://pro.arcgis.com/zh-cn/pro-app/latest/arcpy/classes/alphabetical-list-of-arcpy-classes.htm
从 10.x 到 ArcGIS Pro 的 Python 迁移
https://pro.arcgis.com/zh-cn/pro-app/latest/arcpy/get-started/python-migration-for-arcgis-pro.htm
ArcGIS Pro 中的不可用工具:
https://pro.arcgis.com/zh-cn/pro-app/latest/tool-reference/appendices/unavailable-tools.htm
自定义工具箱
至于自定义工具箱 Toolbox,只在参数设置界面新增了几个无关痛痒的参数,比如类型(Category),用于将多个同类型的参数放进同一个选项卡中。其它没有什么变化。
ArcGIS Pro 和 ArcGIS 10.x 之间存在差异,也意味着需对某些自定义工具和脚本进行更改,以使其在 ArcGIS Pro 中能够成功运行,对于代码已经导入进工具箱的工具箱来说,使用 2to3 工具就需要把代码再导出来,为了省去这一步骤,Pro 自带一个可以分析自定义工具箱的工具,点击 数据管理工具箱->常规工具集->针对 Pro 分析工具 即可打开工具。
主要参数就是自定义工具箱,然后运行工具可以生成一个分析文档,其中详细列出了需要修改的语法位置以及是否使用了已经删除或者修改后的方法或者类。
分析文档针对 Pro 分析工具:
https://pro.arcgis.com/zh-cn/pro-app/latest/tool-reference/data-management/analyzetoolsforpro.htm
内置Python解释器的位置变动
如果你是使用 Pycharm 或者其它 IDE,需要在解释器的设置界面填上正确的路径,这样程序/脚本在运行时才能被正确运行。
1.ArcGIS
这个大家就很熟悉了,一般默认安装在 c 盘:C:\python27。
2.ArcGIS Pro
在 ArcGIS Pro 的设置界面中点击 Python,即可看到其内置的 Python 解释器位置。
Python 解释器位置不支持的数据类型
目前,ArcGIS Pro 不支持以下几种数据格式:栅格目录、几何网络、逻辑示意图数据集、地理数据库服务器、ArcMap 文档模板、ArcReader 文档、图表、切片地图包以及个人地理数据库。
其中 栅格目录、个人地理数据库(MDB)、切片地图包 这三项的改动值得注意,在个人以往的农业、国土项目中使用接触较多。
最后
参考官方文档再结合个人的使用体验,个人归纳了一下,方便后面查询。
荟GIS精粹,关注公众号:GIS荟纯粹分享,只因热爱,你的转发是对我最大的鼓励!
不然点个赞和在看也好啊!老环节,随机推荐以往文章:
《
什么样的投影你没见过?》——千奇百怪,总有你没看过的投影。