ArcGIS Pro 中的 Python 入门

,欢迎也在微信公众号查看。

Python脚本使ArcGIS Pro中的工作流自动化成为可能。ArcGIS pro中采用的是Python3。在本例中,将首先介绍Python 语法的一些基础知识,然后编写代码来确定工作空间中的所有矢量图层的记录数量,最后可以将代码导出到 Python 脚本,该脚本可以在 ArcGIS Pro 外部打开、修改和运行。

一、设置工程和查看数据集

1.下载数据,并解压。

https://www.arcgis.com/home/item.html?id=b2a7ac0eba3344cc9d143e08bd9299f4

2.创建一个新工程,名为PythonStart,点击Map选项卡下的Add Data, 加载解压后的数据。

3. 右键单击 ambulances图层,单击属性表,在打开的表下面可看到有48 条记录。关闭属性表。

4.在Geoprocessing窗格中搜索并打开Get Count工具,设置参数。Input Rows: ambulances。该功能返回图层记录数量。

ArcGIS Pro 中的 Python 入门_第1张图片

5.利用Python实现计数功能。在view选项卡下单击Python window. 在出现的窗口中输入以下代码,并按Enter键。

arcpy.management.GetCount("ambulances")

ArcPy 是 Python 包,它具有 Python 中的大部分可用 ArcGIS Pro 功能。GetCount() 是 ArcPy 的功能,可运行数据管理工具工具箱中的获取计数地理处理工具。

6.鼠标定位在有代码的任意位置,右键单击清除脚本。

ArcGIS Pro 中的 Python 入门_第2张图片

二、在 Python 窗口中运行代码

1.在Python窗口中输入以下语句print("GIS is cool"),并按下enter键。需要注意Python 使用单引号和双引号来标识字符串,两者用法相同。print("GIS is cool") 和 print('GISis cool') 均正确,但是 print("GIS is cool') 会导致错误。Python 中的引号始终是直引号(而不是弯引号)。当您在 Python 窗口或其他编码环境输入编码时,其将被自动格式化。有时,如果您复制已在文字处理软件中格式化或编写的代码,则直引号可能被会替换为弯引号。例如,print(“GIS is cool”) 会导致错误。:

ArcGIS Pro 中的 Python 入门_第3张图片

2. 输入以下代码行:

x = 37,然后按 Enter 键y = 73x * y

在代码行中,x 是一个变量。变量就像用于存储值的容器。在此示例中,该值为整数 37,但它也可以是其他数字、文本或数据集名称。由于该变量被分配了一个值,因此代码行被称为赋值。在变量赋值中使用单个等号表示变量被设置为等于该值。已分配变量,稍后这些变量可以用于代码。

Python 区分大小写,因此 X 与 x 不同。

当在 Python 窗口中继续运行代码行时,先前运行的所有代码及其结果将显示在脚本中。可以清除脚本,但这不会清除已分配的任何变量的值,重新启动您的 ArcGIS Pro 会话可将其清除。

3. 右键单击脚本,然后单击清除脚本。

4.编写华氏温度 (F) 和摄氏温度 (C) 之间的转换代码。公式为:F = 9/5 * C + 32。

Python window中输入:

temp_c = 17temp_f = temp_c * 9 / 5 + 32print(temp_f)

代码的第一行将数字值分配给变量 temp_c。第二行使用变量 temp_c 执行计算,并将结果分配给新变量 temp_f。第三行打印变量 temp_f 的值。第三行也可以写成 temp_f,但通常会使用 print() 函数,因为它提供了更好的格式化选项。

5.清除脚本。

三、获取在 Python 窗口中编写代码的帮助

1.在英文输入状态下,在python窗口中输入pri,会出现带有字母 F 的蓝色图标,这称为自动完成或代码完成。将光标悬停在 print() 弹出窗口上方,将显示该函数的语法帮助。单击 print() 弹出窗口。在 print() 函数的括号中输入一个引号,将自动添加第二个引号。

2.输入arc, 随即显示包含 ArcPy 包的弹出窗口,使用带有字母 P 的红色图标表示。单击 arcpy 弹出窗口。在 arcpy. 后,输入get. 在选项列表中单击 GetCount()management。GetCount() 后的单词 management表示 GetCount() 为 management 工具组的一部分。

arcpy.management.GetCount()

3. 将光标放在括号之间时,将显示两个弹出窗口。下方的弹出窗口显示“获取计数”工具的语法。语法显示唯一参数名为 in_rows,它由输入表视图或栅格图层组成。上方的弹出窗口显示活动地图中ambulances 图层的名称。这是“获取计数”工具 in_rows 参数的代码完成提示。换句话说,Python 窗口可以识别出活动地图中的图层是工具的有效参数。您可以选择使用此图层或输入其他内容。单击 ambulances 弹出窗口。

ArcGIS Pro 中的 Python 入门_第4张图片

四、使用 for 循环进行迭代

接下来,将尝试迭代,即多次重复相同的步骤。您将创建一个值列表,并对列表的每个元素执行相同的计算。

1. 清除脚本。

2. 输入以下代码行并按 Enter 键:

templist_c = [17, 19, 24, 21, 16]

此代码将创建一个 Python 列表,其中包含五个相同类型的元素。在本例中,它们是摄氏温度值。列表是Python 中非常常见的数据类型。列表由一系列由括号 [] 包围的元素组成,这些括号有时称为方括号,并且这些元素之间使用逗号分隔。

3. 输入以下代码行并按 Enter 键:

for temp_c in templist_c:

请注意,当在代码行末尾按 Enter 键时,该代码不会运行,但提示符将移至下一行。代码行以冒号结尾,这表示将要跟随更多代码,并且代码行本身不能单独运行。

代码行是for 循环的起点,具有以下一般结构:

for in :

for 循环允许您遍历现有列表的元素,并对每个元素重复相同的步骤。包含 for 关键字的代码行以冒号结尾。下一行代码将缩进,并且后续同样缩进的所有代码行将在每次迭代中运行。重复的代码块可以通过缩进来识别。由于使用冒号,Python 窗口可以识别 for 循环,因此下一代码行将缩进。

4.输入以下代码行并按 Enter 键:

temp_f= temp_c * 9 / 5 + 32

此代码应缩进。如果不慎删除了缩进,则可以在开始出添加四个空格来缩进此行。四个空格是代码块的默认缩进级别。

5. 输入以下代码行并按 Enter 键:

print(temp_f)

图片

6. 将光标停留在代码的空行上,按 Enter 键。结果将会被打印出来。

7. 清除脚本。

五、创建并遍历要素类列表

1. 运行以下代码行:

count = arcpy.management.GetCount("ambulances")print(count)

2. 运行以下代码行:

count =arcpy.management.GetCount("F:/ArcGIS/data/PythonStart/ambulances.shp")print(count)

步骤1和2的结果是相同的。关于路径的使用,有一些注意事项。首先,如果将数据提取到另一个文件夹,则需要修改此路径。其次,由于该路径为字符串,将在两侧使用引号。另请注意,路径中使用正斜杠 (/) 代替常规反斜杠 (\)。Python中的反斜杠用作转义字符,这可能会改变其后的字符含义。在字符串中使用反斜杠时,可能会导致意外的结果。第三,由于.shp 文件扩展名为名称的一部分,因此要素类名为 ambulances.shp。仅使用 ambulances 会返回错误,因为文件夹中没有名为 ambulances 的要素类。可以设置工作空间,而不是指定完整路径。工作空间是影响地理处理操作的几种环境设置之一。除了工作空间之外,环境还包括默认的输出坐标系、用于栅格数据处理的默认像元大小等。

3. 运行以下代码行:

arcpy.env.workspace = "F:/ArcGIS/data/PythonStart"count = arcpy.management.GetCount("ambulances.shp")print(count)

打印相同的结果。

尽管设置工作空间需要一个额外的代码行,但是使用工作空间通常是有效的,因为所有随后的 ArcPy 代码行都会自动使用它。第二行代码不再需要完整路径。如果代码中未设置工作控件,则将使用工程的默认工作控件。

完成确定文件夹中每个要素类的要素数量的原始任务的最后一步是:添加代码以在工作空间中创建 shapefile 列表,然后在该列表的每个元素上运行“获取计数”工具。设置工作空间后,您可以使用 ArcPy 函数在此工作空间中创建要素类列表。

4. 输入以下代码行并按 Enter 键:

fc_list = arcpy.ListFeatureClasses()

ListFeatureClasses() 函数将创建要素类列表。通过将其分配给变量,可以在其他任务中使用该列表。要检查列表的内容,可以打印其值。

运行以下代码行:

print(fc_list)

5. 输入以下代码行并按 Enter 键

for fc in fc_list:    count =arcpy.management.GetCount(fc)    print(count)

结果将打印工作空间中每个 shapefile 的要素数量。

6. 右键单击 Python 窗口脚本中的代码,然后单击保存脚本,名为count_features.py。

六、在 Python 编辑器中运行脚本

在ArcGIS Pro 外部运行 Python 代码需要Python 代码编辑器,也称为集成开发环境 (IDE)。在本部分中,将使用一个名为 IDLE 的 IDE,它代表 IntegratedDeveLopment Environment(请注意大写 L)。IDLE 将随 Python一起安装,因此如果你的计算机装有 Python,则它也具有 IDLE。还有许多其他 Python IDE(包括 PyCharm 和 Spyder),但是 IDLE 是一个不错的起点。类似 PyCharm 和 Spyder 的IDE 需要通过其他步骤进行下载、安装和配置,而 IDLE 是任何 Python 安装的一部分并可以使用。

1.找到刚才保存的count_features.py 文件并单击Edit with IDLE (ArcGIS Pro)。

2.在 IDLE 的顶部菜单中,单击run,然后单击 Python Shell。可在里面进行代码输入。

3.返回到 count_features.py 脚本的脚本窗口。删除代码,只留下如下代码,并保存。

ArcGIS Pro 中的 Python 入门_第5张图片

4. 单击运行,然后单击run model。出现以下错误:NameError: name 'arcpy' is not defined。发生错误的原因是您使用的是 ArcPy 包,但是正在 ArcGIS Pro 外部运行代码。要使用包,需要将其导入脚本的顶部。

5.在顶部插入一行代码import arcpy,保存并重新运行。结果与在 ArcGIS Pro 中运行代码的结果相同,但是 ArcGIS Pro 无需打开即可运行脚本

ArcGIS Pro 中的 Python 入门_第6张图片

七、运行 Python 代码的方法比较

方法

优点

缺点

ArcGIS Pro 中的 Python 窗口

  • 容易入门

  • 与 ArcGIS Pro 内部的数据和地图进行交互

  • 提供直观的代码完成帮助

  • 仅限于较短的代码段

  • 缺少 Python 编辑器中常见的许多功能

  • 并非旨在保存和组织脚本

  • 仅能用于ArcGIS Pro

Python 编辑器 (IDE)

  • 无需打开ArcGIS Pro,即可运行代码

  • 包括许多功能,可帮助编写和测试更复杂的代码

  • 作业另存为 .py 文件来组织更复杂的代码工程

  • 不同 IDE 可以满足不同的用户类型和技能水平

  • 某些 IDE 可以用于多种编程语言

  • 功能因所使用的特定 IDE 而有所不同

  • 根据 IDE,可能缺少代码完成提示

  • 一些 IDE 需要先进行自定义配置,然后才能与 ArcGIS Pro 配合使用

  • 对于初学者而言,某些 IDE 可能会很复杂

你可能感兴趣的:(python,gis,arcgis)