arcgis.features
模块允许在要素图层上执行空间分析任务,这些任务被组织在几个子模块中。这个组织方式类似于ArcGIS Pro中的地理处理工具如何组织成工具箱和工具集。然而,ArcGIS API for Python中的函数与ArcGIS Pro中的地理处理工具之间没有直接的对应关系。回想一下,ArcGIS中的每个地理处理工具都是ArcPy中的一个函数,但Python的ArcGIS API却不是这样。另一方面,ArcGIS Pro中的许多地理处理工具在ArcGIS API for Python中具有类似的功能,但它们被组织到不同的模块中,可能有稍微不同的名称,并且它们的语法通常也有所不同。这里通过一个关于缓冲的例子说明了这些相似之处和不同之处。
缓冲是空间分析中使用最广泛的例子之一,用于说明Python的ArcGIS API中空间分析函数的性质。在ArcGIS Pro中,“Buffer”工具使用输入要素类根据缓冲区距离创建输出多边形要素类。使用ArcGIS API for Python 和ArcGIS.features.use_proxity
子模块的create_buffers()
函数可以完成相同的过程。此函数的一般语法如下:
use_proximity.create_buffers(input_layer, distances[], field=None, units='Meters', dissolve_type='None', ring_type='Disks', side_type='Full', end_type='Round', output_name=None, context=None, gis=None, estimate=False, future=False)
用于Python的ArcGIS API中的语法与ArcPy中使用的语法不同。在create_buffer()
的语法示例中,input_layer
参数是必需的,因为没有指定默认值。另一方面,field
参数是可选的,因为语法中显示了默认值。有时默认值为“None”。回想一下,ArcPy中函数的语法表示法使用大括号来表示可选参数,并且语法本身没有显示默认值。这些差异主要是在创建文档时所做选择的结果,而不是函数所做工作的差异。
如果仔细比较create_buffer()
函数和ArcPy的buffer()
函数的语法,会注意到create_buffers()
函数有几个额外的参数。这些参数包括用于指定运行函数的gis的gis
参数和用于返回运行操作的点数的estimate
参数。除了函数名称、语法符号和几个参数的差异外,这两个函数都完成了相同的任务,即在输入特性周围创建缓冲区多边形。
对于下一个示例,即使结果是在内存中创建的,并且没有发布,也必须登录ArcGIS Online或门户网站,因为运行分析需要积分。
示例 notebook使用create_buffer()
函数围绕点特征创建多边形特征,输入是ArcGIS Online中托管的一个要素图层。代码从创建一个GIS对象开始。使用ContentManager
类的get()
方法可以获得一个功能层集合。get()
方法的参数是一个唯一的项目ID。相同的项目也可以通过搜索“USA Airports”和更改结果来获得。
这个项目由多层组成,因此使用索引来获得仅代表主要机场的第一层。URL被打印出来用于确认运行结果。接下来,将从arcgis.features
模块导入use_proximity
子模块。create_buffers()
函数创建缓冲多边形,函数使用三个参数:输入层、作为列表的距离值和单位,将函数的输出分配给一个变量,并打印该变量的类型以进行配置。
运行结果是内存中的功能集合,不会作为项发布。如果希望将输出存储为要素图层,要指定函数的output_name
参数。分析步骤是创建地图显示,并添加机场和缓冲多边形。
地图显示设置为佛罗里达州,以显示缓冲区的特写,而不是显示数据的完整范围。
use_proximity
子模块包括几个用于执行邻近度分析的附加功能,包括create_drive_time_areas()
和find_nearest()
。arcgis.features
模块包括其他几个用于分析的子模块:analyze_patterns
、elevation
、enrich_data
、find_locations
、hydrology
、manage_data
和summarize_data
。为了方便起见,这些子模块中的所有功能也都组织在analysis
子模块下。由于函数名称与ArcGIS Pro中标准工具的名称不完全匹配,识别感兴趣的特定函数有些复杂。此外,将功能组织为模块和子模块与工具箱和工具集中的地理处理工具的组织不匹配,查看所有可用功能的最简单方法是滚动浏览GitHub上托管的ArcGIS API for Python的文档。
尽管ArcGIS API for Python中的分析函数数量很大,但ArcGIS Pro中有许多地质处理工具在API中没有等效的函数。另一方面,用于Python的ArcGIS API中有一些函数在ArcGIS Pro中没有等效函数。例如,arcgis.learn
模块包括几个支持基于人工智能(AI)的深度学习工具的工具,包括使用计算机视觉工具进行对象识别和像素分类。
Python的ArcGIS API相对较新,预计在未来的版本中将添加更多的模块和功能。
到目前为止,示例已经说明了ArcGIS API for Python如何允许自动化web GIS的任务,类似于ArcPy如何在ArcGIS Pro中自动化工作流。Jupyter Notebook很适合去编写ArcGIS API for Python,因为它能够与本地和在线资源交互,并可视化表格数据、地图、图形和其他元素,而无需使用单独的应用程序进行显示。另一方面,使用ArcPy的Python脚本通常是在更传统的IDE中编写的,如Spyder或PyCharm,ArcGIS Pro用于可视化结果或通过工具对话框获得用户输入。
重要的是要认识到arcpy和arcgis都是由Esri创建的Python包,并且都是作为默认arcgispro-py3环境的一部分安装的。两者都可以在任何被配置为使用此环境的IDE中使用(或具有相同包的另一个conda环境)。例如,可以在arcgis Pro或IDLE、Spyder或PyCharm的Python窗口中导入arcgis包。
本章前面示例中的所有代码都可以在Python窗口或Python IDE中正确运行,但可视化不同。考虑导入arcgis包、创建GIS对象,然后创建地图显示的示例代码。
调用地图显示时,结果是对MapView
对象的引用,而不是地图的图形显示,结果信息较少,但代码有效,并且创建MapView对象去确认结果。考虑前面的示例,将CSV 添加为ArcGIS Online中的项目,并将其发布为要素图层。当代码从交互式地图显示元素中剥离时,代码如下:
这个脚本可以使用常规Python IDE运行,并以相同的结果执行相同的任务。能够在笔记本中显示中间步骤和结果是很有帮助的,尤其是在对代码进行故障排除时,但无论是作为独立脚本运行还是在笔记本中运行,代码都能工作。同样,可以在Jupyter笔记本中使用ArcPy,而无需使用ArcGIS API for Python。考虑一个地理处理脚本的例子来运行Clip工具。导入ArcPy,设置本地工作区,并使用Clip()函数来执行任务。
在Jupyter笔记本中运行此代码会产生与在另一个IDE中运行脚本相同的结果<.最后一行代码通常不是独立脚本的部分,而是添加到笔记本中,以确认创建输出文件,类似于将消息打印到IDE的交互式窗口。
总之,arcpy和arcgis包都可以在任何Python IDE中使用,该IDE运行安装了两个包的conda环境,包括arcgispro-py3默认环境。对于使用ArcPy的脚本来说,更传统的IDE是更自然更适合的,而Jupyter Notebook则与ArcGIS API for Python的功能非常匹配。有些任务可能需要同一脚本或笔记本中的两个包,然后选择使用哪种IDE在很大程度上是一个偏好问题。
JupyterLab开发始于2017,亦希望最终替代 jupyter notebook。
JupyterLab是下一代基于web的用户界面,用于处理文档、编写代码和开发交互式计算的工作流。新界面保留了Jupyter Notebook的大部分功能,但增加了典型IDE中的许多其他功能。要启动JupyterLab,在运行conda环境时,在Python命令提示符下输入以下命令。请注意,命令中有一个空格,即使接口名称没有空格:
jupyter lab
这个命令启动一个浏览器窗口,就像经典的Jupyter笔记本一样。 URL通常为http://localhost:8888/lab。界面由一个主工作区、一个可折叠的左侧边栏和顶部的菜单栏组成,主要工作区域用于安排文件和执行其他活动。
当界面第一次打开时,左侧栏显示“文件浏览器”选项卡,该选项卡允许您探索当前工作区内的文件。在图中的示例中,显示了几个示例.ipynb Ale 。地理数据库被识别为文件夹。
Launcher面板允许您启动一个新的活动,例如笔记本或Python脚本。您也可以通过双击“文件浏览器”窗口中的文件来打开现有笔记本。笔记本打开后,许多控件和显示器都像经典的Jupyter笔记本。您可以以大致相同的方式编写代码并与代码交互。
注意:尽管JupyterLab是通过简单地运行jupyter实验室来启动的,但最新版本的ArcGIS API for Python(在撰写本文时为1.7.0)中使用的地图小部件需要一些额外的配置。这些步骤包含在ArcGIS API for Python的文档页面上,位于“Guite”>“Get Started”>“Using JupyterLab environment”>“Installation”下,这里不包括具体步骤,因为它们可能会在即将发布的版本中发生变化。
官方帮助文件:https://developers.arcgis.com/python/
完整的文档被称为“API参考”,托管在GitHub上的URL如下:https://developers.arcgis.com/python/api-reference/.
在这里,将看到所有模块、类和函数的完整列表,以及它们的语法。
在使用ArcGIS API for Python时,通常需要参考两组资源:一般解释指南和完整功能和语法的API参考。通常,当您刚开始使用ArcGIS API for Python时,您可能会更多地依赖该指南来了解可能的想法。一旦您获得了一些经验,当您需要查找特定类和函数的语法时,API引用将变得更加重要。
最后,在以下URL中有一个不断增长的示例笔记本库:https://developers.arcgis.com/python/sample-notebooks您可以在线预览笔记本,也可以下载笔记本在本地计算机上使用。与任何Python代码一样,您可以为自己的脚本和笔记本重用一些代码。
Arcgis Notebooks 最新的补充在以下链接:
https://www.esri.com/en-us/arcgis/products/arcgis-notebooks/overview?adumkts=product&adupro=ArcGIS_Notebooks&aduc=pr&adum=press_release&utm_Source=pr&aduca=arcgis_notebooks_aware&aduco=pythoninprobook&adupt=lead_gen&sf_id=7015x000000iPfrAAE
ArcGIS notebook 使用与Jupyter notebook相同的方法,但笔记本文件由ArcGIS Enterprise托管。ArcGIS笔记本的宿主与门户中的其他项目(如地图、工具和要素图层)一样,用户可以被分配角色来创建和编辑笔记本。
ArcGIS笔记本托管在使用ArcGIS笔记本服务器的ArcGIS企业门户中。托管笔记本电脑是使用Docker容器实现的,它提供了一个虚拟化的操作系统来运行笔记本电脑。运行笔记本电脑所需的所有资源都可用,无需在本地安装任何东西。
当使用ArcGIS笔记本时,您不需要在本地安装ArcGIS Pro或Python,但您仍然可以在笔记本中使用Python的所有功能,包括ArcPy和用于Python的ArcGIS API
Docker是一家软件公司,该公司开发了一种行业标准,用于以称为容器的包交付软件。Docker容器被广泛用于将具有复杂依赖关系的应用程序分发给组织中的许多用户。Docker软件不是由Esri创建的,但ArcGIS Notebook Server使用Docker软件为每个用户创建并提供一个单独的容器。
除了ArcPy和ArcGIS API for Python之外,还有数百个Python包可用,这些包与ArcGIS Pro的Python发行版中的包基本重叠。可以在笔记本会话期间安装其他程序包。
https://enterprise.arcgis.com/en/notebook/