ArcGIS Pro 中的 Python 入门

设置工程并查看数据集

在开始编写 Python 代码前,您将下载数据集、创建新工程,并查看要使用的数据集。

  1. 下载本教程数据,并将内容提取到 C:\ 盘文件夹。

    .zip 文件包含名为 PythonStart 的文件夹。

    注:

    可以使用其他文件夹名称,但是在以下步骤中创建工程时需要使用该文件夹。

  2. 启动 ArcGIS Pro。 如果收到系统提示,请使用您获得许可的 ArcGIS 组织帐户登录。
    注:

    如果您没有 ArcGIS Pro 的访问权限或者 ArcGIS 组织帐户,请参阅软件访问权限选项

  3. 新建工程下,单击地图

    地图模板

  4. 新建工程窗口中,对于名称,键入 Python Getting Started。 对于位置,浏览至 C:\PythonStart 文件夹。
  5. 取消选中为此工程创建新文件夹复选框。

    “新建工程”窗口中“为此工程创建新文件夹”选项已取消选中

  6. 单击确定

    该工程将打开一个空白地图。

  7. 如果目录窗格尚未显示,请单击视图选项卡,然后单击目录窗格。
  8. 目录窗格停靠在 ArcGIS Pro 界面的右侧。
  9. 目录窗格中,展开文件夹,然后展开 PythonStart

    具有六个 shapefile 的 PythonStart 文件夹的目录视图

    该文件夹包含六个 shapefile。 在本教程中,您将仅使用少数几个数据集,但是相同代码可用于远大于这个数量的数据集。

    您将首先手动确定单个要素类的要素数量,然后运行工具以获取相同的结果。 在本教程的剩余部分中,您将使用 Python 确定所有 shapefile 的要素数。

  10. 右键单击 ambulances.shp shapefile,然后选择添加至当前地图

    地图缩放至加拿大多伦多,ambulances 图层的点所在的位置。

  11. 内容窗格中,右键单击 ambulances 图层,然后选择属性表

    属性表随即出现。 在表格底部,将显示记录数。

    ambulance shapefile 中要素数量的计数。

    shapefile 包含 48 条记录,这意味着有 48 个唯一要素。 接下来,您将使用工具确定相同的计数。

  12. 关闭属性表。

使用 Python 运行工具

接下来,您将在 ArcGIS Pro 中运行地理处理工具,然后使用 Python 代码运行同一工具。

  1. 在功能区分析选项卡的地理处理组中,单击工具

    “工具”按钮

    将出现地理处理窗格。

  2. 地理处理窗格的搜索栏中,输入 count 然后按 Enter 键。
  3. 单击获取计数工具。
  4. 获取计数工具窗格中,对于输入行参数,选择 ambulances

    获取计数工具窗格

  5. 单击运行

    工具完成运行后,窗格底部将显示一条消息。

    “获取计数”工具的完成消息

  6. 单击查看详细信息

    获取计数(数据管理工具)窗口随即显示并打开消息选项卡。

    运行“获取计数”工具时生成的消息

    消息为 Row Count = 48,这与您通过打开属性表手动确定的计数相同。 您可以重复这些步骤来确定所有 shapefile 的计数,但是如果您有许多数据集,则此操作将非常耗时。 相反,您将开发一个 Python 脚本来完成此任务。

  7. 关闭获取计数窗口。

    接下来,您将使用 Python 运行同一工具。

  8. 在功能区分析选项卡的地理处理组中,单击历史记录

    “分析”选项卡上“地理处理”组中的“历史记录”

    历史记录窗格随即显示,其中将列出已运行的工具。 唯一条目是刚刚运行的获取计数工具。

    具有一个工具条目的“历史记录”窗格

  9. 分析选项卡的地理处理组中,单击 Python 按钮的下拉菜单,然后选择 Python 窗口

    在“分析”选项卡上选择 Python 窗口

    随即显示 Python 窗口。

    带有空脚本和提示符部分的 Python 窗口

    Python 窗口的顶部被称为脚本,底部被称为提示符。 脚本最初为空白的。 脚本提供先前输入的代码记录及其结果。

    提示符是您输入代码的地方。 当 Python 窗口第一次打开时,提示符中的消息显示为正在初始化 Python 解释程序,这表示该窗口正在准备接收代码。 几秒钟后,消息将被替换为在此处输入 Python 代码,这表示您可以开始输入代码。 首次打开 Python 窗口后,这些消息不会在当前会话中再次显示。

  10. Python 窗口中,键入 arcpy.management.GetCount("ambulances")

    带有源自“历史记录”窗格的代码的 Python 窗口

    ArcPy 是 Python 包,使得 ArcGIS Pro 大多数功能可通过 Python 使用。GetCount() 是 ArcPy 的函数,可运行数据管理工具工具箱中的获取计数地理处理工具。

    注:

    如果您访问获取计数帮助主题,在参数下,单击 Python,您将看到该主题包含一个代码示例。 地理处理工具的所有帮助主题均包括 Python 示例。

  11. Enter

    代码随即运行,结果为 <Result '48'>

    运行“获取计数”工具的结果将打印为脚本部分

    尽管格式略有不同,但这与您先前确定的记录数相同。 在 Python 窗口中运行代码行,将产生与使用工具窗格运行工具时所得结果相同的结果。 在 Python 窗口中运行代码将在历史记录窗格中创建一个新条目。

    具有两个工具条目的“历史记录”窗格

    除了时间戳,这两个条目是相同的,并且使用工具对话框运行工具和使用 Python 之间没有区别。 但是,在使用 Python 时,您可以使用代码来控制工具的运行方式,包括在不同的要素类上多次运行同一工具。

  12. Python 窗口中,右键单击代码,然后选择清除脚本

    Python 窗口中的“清除脚本”

    在之前代码中运行的所有内容都保留在内存中。 在下一部分中,您将从已清空的 Python 窗口开始操作。

在 Python 窗口中运行代码

Python 窗口是练习编写 Python 代码的合适位置。 您已经看到可以从历史记录窗格发送代码,但是通常情况下,您会打开 Python 窗口并编写自己的代码。

  1. Python 窗口中,单击提示符并输入以下代码行:

    print("GIS is cool")

    在 Python 窗口提示符处输入的代码行。

    在此代码行中,print() 是一个函数。 Python 中的函数用于执行特定的任务。 在这种情况下,该函数用于打印文本。 Python 中的大多数函数具有参数,参数将在函数后的括号中提供。 在本例中,参数为字符串。 Python 中的字符串由一系列字符组成。 通过将字符括在一对引号中来创建字符串。

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

  2. 单击代码行的末尾,然后按 Enter 键。

    运行代码行并将其复制到脚本,然后将获取结果。

    打印到脚本的文本字符串

    提示符再次为空,准备接收下一代码行。

    这个示例很简单,但是可以说明以此方式运行 Python 代码的关键方面。 您编写了单行代码,其中包含要执行的特定指令。 当您按 Enter 键时,将运行代码行,并执行指令。 在此示例中,指令包括屏幕上的打印文本,但是指令还可以包括很多其他任务,如您在上一部分中运行获取计数工具时所看到的。

    接下来,您将继续练习几个代码行。

  3. 在提示符处,输入以下代码行:

    x = 37

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

  4. 在代码行的末尾,按 Enter 键。

    赋值已移至脚本,而非打印输出

    代码行已运行,但未打印结果。 该变量被分配了一个值,但是没有其他指令可以执行。

  5. 在提示符处,输入以下代码行并按 Enter 键:

    y = 73

    此行是另一个赋值语句。

  6. 在提示符处,输入以下代码行并按 Enter 键:

    x * y

    此行将执行计算,在此情况下,会将 xy 的值相乘。 结果打印如下。

    计算结果打印到脚本

    到目前为止,您已输入代码行,而并未因为每行的确切编写方式而过于担心。 使用赋值语句时,空格为可选项。 因此,x = 37x=37 相同。 通常情况下,会添加空格以提高可读性。

  7. 在提示符处,输入以下代码行并按 Enter 键:

    X * y

    此结果为错误:

    NameError: name 'X' is not defined.

    使用大写 X 导致的错误

    Python 区分大小写,因此 Xx 不同。 通过分配值 37,您已定义 x,但是大写 X 并未被分配值,因此出错。

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

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

    接下来,考虑一个更实用的示例:华氏温度 (F) 和摄氏温度 (C) 之间的转换。 通用公式为:

    F = 9/5 * C + 32

    其可以在 Python 中编写为简单计算。

  9. 在提示符处,输入以下代码行并在行末尾处按 Enter 键:

    temp_c = 17

    temp_f = temp_c * 9 / 5 + 32

    print(temp_f)

    将打印结算结果。

    打印温度的计算值。

    将对此脚本进行详细分析。

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

    不使用变量也可以获得相同的结果。

  10. 在提示符处,输入以下代码行并按 Enter 键:

    17 * 9 / 5 + 32

    结果也为 62.6。

    有一些使用变量的充分理由。 首先,在很多情况下,您不想对单个值执行计算,而是需要对多个值执行计算。 其次,通常您需要编写代码来执行计算,但是您事先并不知道要使用的值。 将计算写为两个变量之间的关系时,可以重用计算,并且它不依赖于单个值。

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

Python 窗口包含多个功能,可帮助您编写代码。 请考虑先前使用 print() 函数的示例。

  1. 清除脚本。
  2. 在提示符处,输入以下代码:

    pri

    即使在您完成输入打印之前,仍会显示一个包含 print() 函数的弹出窗口。 带有字母 F 的蓝色图标表示此功能。 这称为自动完成或代码完成。

    print() 函数的弹出窗口

  3. 指向 print() 弹出窗口。

    这将显示该函数的语法帮助。

    print() 函数的语法

    print() 函数的帮助提供了有关其所用参数及其排序的信息。

    您可以继续输入,也可以单击弹出窗口来自动完成此代码段。

  4. 单击 print() 弹出窗口。

    现在,print() 函数将显示在提示符中。 请注意,已自动添加一对括号。 如果您没有单击弹出窗口,而是继续输入,请在键入 print( 后,会自动添加一个右括号。 这是代码完成的另一个示例,可帮助您编写正确的语法。

    当光标位于括号内时,该函数的语法帮助将再次显示。

  5. print() 函数的括号中输入一个引号。

    将自动添加第二个引号。

    print() 函数参数的引号

    Python 窗口提供自动完成弹出窗口、语法帮助的交互式显示以及与语法错误相关的提示。

  6. 在提示符处删除代码。
  7. 确保活动地图仍包含名为 ambulances 的要素图层。
  8. 在提示符处,输入以下代码:

    arc

    随即显示包含 ArcPy 包的弹出窗口,使用带有字母 P 的红色图标表示。

    包是一种扩展 Python 代码核心组的方法。 ArcPy 包用于将 ArcGIS 功能添加到 Python

  9. 单击 arcpy 弹出窗口。

    现在,arcpy 软件包将显示在提示符处,后跟一个点。 对于非常短的代码段(例如本示例),可以很快地输入所有字符,因此单击弹出窗口不会节省太多时间。 但是,对于较长的代码元素,使用代码完成功能可以节省时间、避免输入错误并提供语法帮助。

  10. arcpy. 后,按以下方式输入 Get

    arcpy.Get

    将显示在 arcpy 后以 Get 开头的代码元素列表。

    以 arcpy.Get 开头的代码元素的弹出窗口

    代码完成是上下文相关的。 例如,如果您在代码行开始位置开始输入 Get(而非 arcpy.),则显示的选项与 arcpy.Get 会非常不同。

  11. 在选项列表中单击 GetCount()management
    注:

    GetCount() 后的单词 management 表示 GetCount()管理工具的一部分。

    将使用以下代码填充提示符:

    arcpy.management.GetCount()

    这与在本教程前面部分中使用的代码相同,其中 management 表示数据管理工具工具箱,而 GetCount() 表示获取计数工具。

    将光标放在括号之间时,将显示两个弹出窗口。

    GetCount 语法

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

  12. 单击 ambulances 弹出窗口。

    将使用以下代码填充提示符:

    arcpy.management.GetCount('ambulances')

    在本情况中,代码完成功能会在图层名称的周围自动添加一对引号。 Python 窗口中的代码完成是学习正确语法的好方法。 虽然代码完成会添加单引号,但您也可以在此处使用双引号。

    无需运行此代码,因为它与您之前运行的代码相同。

  13. 在提示符处删除代码。

使用 for 循环进行迭代

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

  1. 在提示符处,输入以下代码行并按 Enter 键:

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

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

  2. 在提示符处,输入以下代码行并按 Enter 键:

    for temp_c in templist_c:

    在 Python 窗口中输入 for 循环代码后的提示符。

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

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

    for <element> in <list>:

    <execute one or more lines of code>

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

    由于使用冒号,Python 窗口可以识别 for 循环,因此下一代码行将缩进。

  3. 在提示符处,输入以下代码行并按 Enter 键:

    temp_f = temp_c * 9 / 5 + 32

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

  4. 在提示符处,输入以下代码行并按 Enter 键:

    print(temp_f)

    此处无需使用 print(),但是在许多情况下,它可以改善格式。

    现在,Python 窗口的外观如下:

    执行前在提示符部分中的 for 循环

    for 循环已完成并可以执行。

  5. 将光标停留在代码的空行上,按 Enter 键。

    结果打印:

    打印计算所得温度值。

    for 循环遍历列表中的所有元素并执行相同的计算。 这是编程中十分强大的功能,因为无论列表包含 5 个元素还是 5000 个元素,编写代码的工作量都是相同的。

创建并遍历要素类列表

Python 窗口中练习编写和运行代码后,您将返回到确定感兴趣文件夹中每个要素类的要素数量的原始任务。

您将再次使用获取计数工具。 确保活动地图仍包含名为 ambulances 的要素图层。

  1. 清除脚本。
  2. 运行以下代码行:

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

    print(count)

    结果是值 48。 该代码与您在本教程前面部分中运行的代码几乎相同,但是现在获取计数工具的结果已分配给变量。 即使目前唯一要做的就是打印其值,但这仍使处理结果变得更加容易。

    到目前为止,该代码使用了在活动地图中打开的要素图层的名称。 尽管这很方便,但是必须将所有 shapefile 添加到地图并为每个要素图层手动运行代码并不实际。 相反,您可以通过指定完整路径来指向磁盘上的要素类。

  3. 运行以下代码行:

    count = arcpy.management.GetCount("C:/PythonStart/ambulances.shp")

    print(count)

    打印相同的结果。

    注:

    如果您将 PythonStart 文件夹保存至计算机上的另一个位置,则需要相应地更新路径。

    关于路径的使用,有一些注意事项。 首先,如果将数据提取到另一个文件夹,则需要修改此路径。 其次,由于该路径为字符串,将在两侧使用引号。 另请注意,路径中使用正斜杠 (/) 代替常规反斜杠 (\)。 Python 中的反斜杠用作转义字符,这可能会改变其后的字符含义。 在字符串中使用反斜杠时,可能会导致意外的结果。 第三,由于 .shp 文件扩展名为名称的一部分,因此要素类名为 ambulances.shp。 仅使用 ambulances 会返回错误,因为文件夹中没有名为 ambulances 的要素类。

    您可以设置工作空间,而不是指定完整路径。 工作空间是影响地理处理操作的几种环境设置之一。 除了工作空间之外,环境还包括默认的输出坐标系、用于栅格数据处理的默认像元大小等。

  4. 运行以下代码行:

    arcpy.env.workspace = "C:/PythonStart"

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

    print(count)

    打印相同的结果。

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

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

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

    fc_list = arcpy.ListFeatureClasses()

    ListFeatureClasses() 函数将创建要素类列表。 通过将其分配给变量,您可以在其他任务中使用该列表。

    要检查列表的内容,可以打印其值。

  6. 运行以下代码行:

    print(fc_list)

    结果为:

    ['ambulances.shp', 'boundary.shp', 'fire_stations.shp', 'fire_zones.shp', 'voting_divisions.shp', 'voting_sites.shp']

    接下来,您将创建一个 for 循环以遍历列表中的元素。

  7. 输入以下代码行并按 Enter 键,以开始一个代码块:

    for fc in fc_list:

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

    count = arcpy.management.GetCount(fc)

    此代码行使用与您之前相同的获取计数工具,但是现在它使用的是变量 fc,而非特定要素类的名称。 由于 fc 更新为在要素类列表中包含每个要素类名称,并且每次迭代都使用下一个要素类。

  9. 输入以下代码行并按两次 Enter 键:

    print(count)

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

    结果将打印每个 shapefile 的要素数量。

    您开发的代码完成了对每个 shapefile 中的要素进行计数的任务。 该代码不是很完善,因为对于许多 shapefile 来说,读取打印输出很麻烦。 您可以添加代码以创建更有意义的输出,例如在每次计数后包括要素类名称、将结果写入文本文件、计算工作空间中要素的总数或确定要素类最多的一个或多个要素类。

    Python 窗口中所用的相同的代码也可以用于 ArcGIS Pro 中的 ArcGIS Notebooks(或在 ArcGIS Pro 外部的 Jupyter Notebook 中)。 这些步骤不在此处介绍,但是您可以从 Python 窗口复制代码并将其粘贴到 Notebooks 中的单元格中。

    您也可以在 ArcGIS Pro 外部的 Python 编辑器中使用代码,下一步将执行此操作。 您可以从 Python 窗口将代码复制到 Python 脚本文件以在 Python 编辑器中开始工作。

  10. 右键单击 Python 窗口脚本中的代码,然后单击保存脚本
  11. 保存脚本窗口中,浏览至 C:\PythonStart 文件夹并将您的作业另存为 count_features.py
  12. 保存工程并关闭 ArcGIS Pro

    现在,您可以在 Python 编辑器中打开脚本。

在 Python 编辑器中运行脚本

ArcGIS Pro 中使用 Python 窗口或在 Notebook 中运行 Python 代码时,有时您需要在 ArcGIS Pro 外部运行代码。 典型示例是当您计划在预先确定的时间运行脚本时,但同时也存在其他情况。 例如,更复杂的工程通常需要多个可配合运行的代码元素,通常这意味着需要在多个单独 .py 文件中组织您的代码。 您可以将脚本用作创建自定义工具的一部分,这也需要 .py 文件。

ArcGIS Pro 外部运行 Python 代码需要 Python 代码编辑器,也称为集成开发环境 (IDE)。 在本部分中,您将使用一个名为 IDLE 的 IDE,它代表 Integrated DeveLopment Environment(请注意大写 L)。 IDLE 将随 Python 的每次安装一起提供,因此如果您的计算机装有 Python,则它也具有 IDLE。

还有许多其他 Python IDE(包括 PyCharm 和 Spyder),但是 IDLE 是一个不错的起点。 类似 PyCharm 和 Spyder 的 IDE 需要通过其他步骤进行下载、安装和配置,而 IDLE 是任何 Python 安装的一部分并可供使用。

  1. 启动文件资源管理器。
  2. 浏览至 C:\PythonStart 文件夹。
  3. 右键点击 count_features.py 文件并单击使用 IDLE 编辑 (ArcGIS Pro)

    在文件资源管理器中使用 IDLE 选项进行编辑

    这将在 IDLE 的脚本窗口中打开 Python 脚本。 如果您已安装 ArcGIS Desktop选项。 您应该借助使用 IDLE 编辑 (ArcGIS Pro),因为这会使用随 ArcGIS Pro 安装的 Python 版本打开脚本。ArcGIS Desktop 10.x 使用旧版 Python

    注:

    如果使用 IDLE 编辑 (ArcGIS Pro) 在快捷菜单中不可见,单击开始,展开 ArcGIS,然后打开 Python 命令提示符。 在 Python 命令提示符窗口中,输入 idle 并按 Enter 键。 IDLE (Python 3.9 Shell) 随即显示。 单击文件,然后选择打开。 浏览并打开 count_features.py 文件。

    具有导出代码的 IDLE 中的脚本窗口

    脚本窗口的顶部显示用于 Python 的 IDLE 版本。 这是与 ArcGIS Pro 应用程序安装的 Python 版本。 使用 Python 3.7 编写的脚本可能无法在旧版本 (2.x) 的 Python 中使用。

    该代码包含 Python 窗口脚本的全部内容,包括所有结果。 结果前面带有 # 符号或井号,表示其为注释。 Python 会跳过注释中的所有内容,但是它们可能是记录代码不同部分功能的一种非常有用的方法。

    在使用此代码之前,您将快速了解 IDLE 中 Python Shell 的工作原理。

  4. 在 IDLE 的顶部菜单中,单击运行,然后单击 Python Shell

    这将打开 Python Shell 或交互式解释程序。 符号 >>> 被称为提示符。 在使用交互式解释程序时,可以使脚本窗口的 count_features.py 文件保持打开状态,因为随后将继续使用它。

  5. 将光标放在提示符处(>>> 之后),然后输入以下代码:

    print("GIS is cool")

    Python Shell 窗口中的打印代码

  6. Enter 键。

    结果将打印到下一行,并将显示新提示符。

    在 Python Shell 中打印结果

    在交互式解释程序中运行代码与在 Python 窗口中逐行运行代码类似。 每次按 Enter 键,代码行均将运行,并且结果(如果有)将打印到下一行。 主要区别是 Python Shell 不具有用于脚本和提示符的单独部分,但是在其他方面,两种方法几乎相同。

    接下来,您将清除脚本并运行代码。

  7. 关闭 IDLE 3.9.18 Shell 窗口,然后返回到 count_features.py 脚本的脚本窗口。
  8. 清理代码,方法是移除 arcpy.env.workspace 开头的所有行,并删除所有 # 符号标识的结果行,此符号表示其为注释代码。
  9. 删除这两个连续行:

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

    print(count)

  10. 删除此行:

    print(fc_list)

    其余代码为:

    
    arcpy.env.workspace = "C:/PythonStart"
    fc_list = arcpy.ListFeatureClasses()
    for fc in fc_list:
        count = arcpy.management.GetCount(fc)
        print(count)

    IDLE 中的计数要素脚本

  11. 确保最后一行缩进四个空格以匹配上面的行。
  12. 单击文件,然后单击保存以保存脚本。
  13. 单击运行,然后单击运行模块以运行脚本。

    结果将打印到交互式窗口。

    具有错误消息的 Python Shell

    交互式窗口未打印要素计数,而是打印了以下错误:

    NameError: name 'arcpy' is not defined

    发生错误的原因是您使用的是 ArcPy 包,但是正在 ArcGIS Pro 外部运行代码。 要使用包,需要将其导入脚本的顶部。

  14. 关闭 IDLE 3.9.18 Shell 窗口。
  15. 将光标置于脚本第一行的第一个字符位置。 按 Enter 键。

    随即在脚本的开头添加空白行。

  16. 在脚本的第一行添加以下代码:

    import arcpy

    具有最终脚本的 IDLE 中的脚本窗口

  17. 保存并运行脚本。

    结果计数将打印到交互式窗口。

    已打印要素数量的

    首次在脚本中使用 ArcPy 时,可能要花一些时间才能显示结果,因为 Python 需要花费几秒钟的时间导入 ArcPy。

    结果与在 ArcGIS Pro 中运行代码的结果相同,但是 ArcGIS Pro 无需打开即可运行脚本(尽管确实需要在所用计算机上安装并获得许可)。

    使用 Python 编辑器处理代码存在诸多益处。 主要优势是您可以编写更长的脚本并将代码另存为 .py 文件。 将代码另存为文件还可以使代码更易于调试和重用。

运行 Python 代码的方法比较

您已经了解两种编写和运行 Python 代码的方法。 每种方法的优缺点汇总如下。 在本教程中,并未深入介绍所有元素,但是当您继续学习 Python 时,记住这些要点将非常有用。

方法优点缺点

ArcGIS Pro 中的 Python 窗口

  • 容易入门
  • ArcGIS Pro 内部的数据和地图进行交互
  • 提供直观的代码完成帮助
  • 仅限于较短的代码段
  • 缺少 Python 编辑器中的许多常见功能
  • 并非旨在保存和组织脚本
  • 只能在 ArcGIS Pro 中使用

Python 编辑器 (IDE)

  • 无需打开 ArcGIS Pro,即可运行代码
  • 包括许多功能,可帮助编写和测试更复杂的代码
  • 作业另存为 .py 文件来组织更复杂的代码工程
  • 不同 IDE 可以满足不同的用户类型和技能水平
  • 某些 IDE 可以用于多种编程语言
  • 功能因所使用的特定 IDE 而有所不同
  • 根据 IDE,可能缺少代码完成提示
  • 一些 IDE 需要先进行自定义配置,然后才能与 ArcGIS Pro 配合使用
  • 对于初学者而言,某些 IDE 可能会很复杂

注:

对于在 ArcGIS Pro 中运行的代码(包括 Python 窗口),不需要使用导入 arcpy。 对于在 ArcGIS Pro 外部运行的代码(例如在 Python 编辑器中),必须先使用导入 arcpy,然后才能使用 ArcPy 包的功能。

还有其他几种运行 Python 代码的方法。 这包括在 Notebook 中运行代码、使用命令行运行脚本或计划从操作系统运行脚本。 其他教程中介绍了这些内容。

您已经了解了如何在 Python 窗口和 IDLE 中编写和运行 Python 代码。 您了解了变量和循环,这是 Python 中两个非常重要的概念。 您还学习了如何在 Python 中设置环境,以及如何在 Python 中使用标准 ArcGIS 地理处理工具。 这是有关如何在 ArcGIS Pro 中使用 Python 的系列教程的第一部分 - 敬请期待!

您也可能对由 Esri Press 出版的 Paul A.Zandbergen 博士的 适用于ArcGIS ProPython 脚本适用于 ArcGIS Pro 的高级 Python 脚本感兴趣。

您可以在教程库中找到更多教程。