与 ArcGIS Pro 结合使用 Python 的方式与包括 ArcGIS Desktop、ArcGIS Server 以及 ArcGIS Engine 在内的其他 ArcGIS 产品不同。

地理处理工具针对 Pro 分析工具可用于突出显示任何妨碍 Python 代码或基于 Python 的地理处理工具运行的问题。针对 Pro 分析工具使用 Python 2to3 实用程序来报告潜在迁移问题以及识别没有迁移到 ArcGIS Pro 的工具和功能。

对 arcpy 中的功能所做的更改

大多数地理处理工具将继续在 ArcGIS Pro 中可用,然而,有一些将无法使用。不包含 Coverage (arcpy.arc)、Parcel Fabric (arcpy.fabric)、Schematics (arcpy.schematics),以及 Tracking Analyst (arcpy.ta) 工具箱中所含的工具。其他工具箱中的其他工具也不可用。有关完整列表,请参阅 ArcGIS Pro 中不支持的工具列表

arcpy.mapping 模块已被移除,并且已经在 ArcGIS Pro 中替换为 arcpy.mp 模块,以支持在 ArcGIS Pro 中的制图工作流。

arcpy.na 模块同样包含更改,多个更改与从 arcpy.mapping 到 arcpy.mp 的更改相关联。

升级到 Python 3

ArcGIS Pro 使用 Python 3。这是源自其他 ArcGIS 产品的重大变动,这些产品包括 ArcGIS Desktop、ArcGIS Server 和 ArcGIS Engine(已在 Python 2 产品线中应用并会继续应用各版本)。Python 3 产品线版本与 Python 2 产品线不兼容。虽然在本质上很多语言是相同的,但很多重要的详细信息已发生较大变化,包括字符串与字典的工作方式以及标准库的组织方式。

我们使用了五年的时间积极开发 Python 3,随着 Python 在线社区的移植,Python 3 与 Python 2 同时存在。此时,已经在 Python 3 中移植了大部分重要的第三方库,并且在 Python 在线社区中,达成了这样的共识,即所有新的开发工程都将在 Python 3 中完成。

如何才能在 ArcGIS Pro 和 Python 3 中使用我的脚本

重要的决策点在于您是否将更新 Python 代码以同时用在 10.x 和 ArcGIS Pro 中,或只用在 ArcGIS Pro中。如果您正在对代码执行从 Python 2 到 Python 3 的单向转换,可以使用 2to3 命令行实用程序自动执行大部分的过程。该实用程序对于 Python 2 和 3 均可用。要特别注意的是,2to3 虽然是极佳的工具,但是它并不是完整的解决方案(有时估计为 95% 有效的解决方案),并且可能有必要对其进行其他更改。如果您需要支持 Python 2 和 Python 3,有关同时支持这两个版本的策略,请参阅如下内容。

请记住,更简单的 Python 脚本可能完全不需要任何更改,也可以良好地运行。

下面各部分讨论您容易遇到的 Python 2 和 3 之间较为常见的一些差异。此外,关于移植到 Python 3 和迁移策略,可参考 http://python3porting.com/ 网站上 Lennart Regebro 的移植到 Python 3。请记住,编写能够在 Python 2 和 Python 3 中运行的脚本是完全有可能的。

标准库重组

如 Python PEP 3108 中所述,Python 3 包含对 Python 2 标准库的重要重组。这些更改中的大部分更改将涉及已移至不同位置或者作为某个已重命名模块一部分的功能。要编写同时在 Python 2 和 Python 3 中使用的代码,可以通过使用灵活导入(例如 urllib2 等模块的以下内容)处理这些差异。

try:
import urllib2 # Python 2
except ImportError:
import urllib.request as urllib2 # Python 3

print 语句和函数

在 Python 2 中,较为常见的语法错误原因之一是 print 语句到 print 函数的转换。幸运的是,已将 print 函数移植回 Python 2 并且可安全用于 Python 2 和 Python 3 中。

print('This will print safely in Python 2 and 3')
# print statements will only work in Python 2
# print 'Print statements will only print safely in Python 2'

__future__

在脚本顶部,导入 __future__ 标记以在一些新的 Python 3 规则中限制 Python 2 代码。在您的脚本使用这一产品线正确进行解析后,您就可以顺利实现 Python 3 兼容性。

from __future__ import print_function, unicode_literals, absolute_import

字典

从使用 dictionary.iteritems() 切换到 dictionary.items()(如果适用)。已经将 iteritems 从 Python 3 中移除,并且 items 的行为与 iteritems 过去的行为相似。上述操作同样适用于 range 和 xrange:已将 xrange 从 Python 3 中移除,并且 range 现在的行为与 xrange 相似。

字符串和编码

在 Python 3 中,当前引号中的内容都暗指 Unicode 字符串。字节数组取代了旧的 str 类型:http://docs.python.org/3/library/stdtypes.html#binaryseq。unicode_literals 导入会隐式地将 Python 2 中引号的内容转换为 Unicode。

Python 3 在处理字符编码方面更加严格。如果您尚未将脚本显式保存为 UTF-8,则请执行这一操作。在您脚本的顶部添加 # coding: utf-8 这样的代码行,以便告知 Python 脚本采用 UTF-8 编码格式。

io 模块

考虑查看 io 模块。该模块已引入 Python 2.6 并且随附于 Python 3 中;它以一种文本编码感知的方式提供用于处理众多输入和输出任务的简便方法。

不支持的数据格式

目前,ArcGIS Pro 不支持以下几种数据格式:栅格目录、几何网络、逻辑示意图数据集、地理数据库服务器、ArcMap 文档模板、ArcReader 文档、图表、切片地图包以及个人地理数据库。

从 10.x 到 ArcGIS Pro 的 Python 迁移的更多相关文章

  1. ArcGIS Pro 简明教程(4)工具和模型构建器

    ArcGIS Pro 简明教程(4)工具和模型构建器 by 李远祥 工具箱中的工具 ArcGIS Pro 在1.3版本基本上已经继承了ArcMap的所有工具,而且会不断加入一些它自身才有的工具,例如适 ...

  2. ArcGIS Pro 简明教程(3)数据编辑

    ArcGIS Pro 简明教程(3)数据编辑 by 李远祥 数据编辑是GIS中最常用的功能之一,ArcGIS Pro在GIS数据编辑上使用习惯有一定的改变,因此,本章可以重点看看一些编辑工具的使用和使 ...

  3. ArcGIS Pro 简明教程(1)Pro简介

    ArcGIS Pro 简明教程(1)Pro简介 ArcGIS Pro已经发布了相当的一段时间了,截至笔者写这系列文章的时候已经是1.3版本了,已经是相当完善的一个版本,基本上已经完成了原来ArcGIS ...

  4. 10 Project 1: Erste Schritte in Python

    10 Project 1: Erste Schritte in PythonAnimationIn den Projekten werden sie nicht nur statische Objek ...

  5. ArcGIS Pro开发Web3D应用(1)——环境搭建与初始实例

    1.搭建环境 1.1 ArcGIS Web3D软件环境 ArcGIS Pro 2.0(必须) ArcGIS for Enterprise 10.5.1 (从10.5开始称呼为Enterprise)包括 ...

  6. ArcGIS Pro 中不可用的工具

    有些可用于 ArcMap 之类的其他 ArcGIS Desktop 应用程序的地理处理工具在 ArcGIS Pro 中不可用.用于处理 ArcGIS Pro 所不支持的数据格式的地理处理工具已被移除, ...

  7. ArcGIS Pro体验04——菜单栏

    对菜单栏进行熟悉一下: 1.地图菜单 剪切板(Clipboard):剪切(Cut).复制(Copy).粘贴(Paste),这些不用说了,在ArcMap中是放在"编辑"菜单下面的.当 ...

  8. ArcGIS Pro 自定义坐标系地图矢量切片制作

    ArcGIS Pro从1.4版本起就支持自定义坐标系统地图的矢量切片制作了. 步骤: 1. 将地图有全图范围缩小到屏幕像素大约10*10像素的范围,然后记录下地图的比例尺.这一步十分关键,不然系统要经 ...

  9. 使用Arcgis Pro 发布矢量切片

    ArcGIS Pro 中的任何地图或底图都可以创建矢量切片,但是有一些局限性和特殊注意事项.为创建矢量切片制作地图的重点是构建一个有效的地图,以快速绘制生成的切片. 软件环境 操作系统:Windows ...

随机推荐

  1. 数据库之sqlite

    数据创建数据 CREATE TABLE IF NOT EXISTS ArpAudit (ID INTEGER PRIMARY KEY autoincrement NOT NULL, UserName ...

  2. idou老师教你学Istio 26:如何使用Grafana进行可视化监控

    使用Grafana插件进行监控是Istio提供的监控能力之一.Istio提供丰富的监控能力,Grafana插件在Istio对Prometheus支持的基础上,为用户提供基于网页仪表面板的可视化监控效果 ...

  3. Hadoop添加LZO压缩支持

    启用lzo的压缩方式对于小规模集群是很有用处,压缩比率大概能降到原始日志大小的1/3.同时解压缩的速度也比较快. 安装 准备jar包 1)先下载lzo的jar项目https://github.com/ ...

  4. Java基础- TreeMap<Person,Integer> 实现的定制排序(Comparator 接口)

    测试内容: TreeMap<Person,Integer> 的两级排序 1.先按Person.id 从小到大 (需要把int类型转换成包装类 Integer, 才可以使用p1.getId( ...

  5. vue 项目中使用postMessage问题总结

    问题描述: 由于目前做的项目分成两个项目,通过iframe嵌套,所以用到了 postMessage 当监听传过来的值的时候  出现了接受多次的问题 产生原因: 我的监听事件是放在home页 mount ...

  6. Spring Bean装配(上)

    Bean:在spring的IOC里面,把配置到IOC容器里面的实体或者是对象都称为Bean Bean配置项 Bean的作用域 Bean的生命周期 Bean的自动装配 Resources&Res ...

  7. 怎么在vscode里搜索函数

    怎么在vscode里搜索函数?在vsCode编辑器中如何跨文件查找函数的定义? 问题: 比如: 在 a.js中使用 var res = window.unique(arr); 在未知的js文件定义了u ...

  8. groovy基本语法--JSON

    1.groovy提供了对JSON解析的方法       ①JsonSlurper   JsonSlurper是一个将JSON文本或阅读器内容解析为Groovy数据的类结构,例如map,列表和原始类型, ...

  9. 洛谷P1197 星球大战【并查集】

    题目:https://www.luogu.org/problemnew/show/P1197 题意:有n个结点m条无向边,k次操作每次摧毁一个结点并询问此时有多少连通块. 思路:平时在线的搞多了都没想 ...

  10. C# List<T> 集合使用

    1.初始化集合 , ); , ); , ); ) { graham, emerson, mario }; 2. 添加元素 racers.Add(, )); racers.Add(, )); racer ...