16-1-第三章 ArcGIS Pro创建 python 脚本工具(一)

原文链接

3.1 介绍

第三章节描述了将 Python 脚本转换为脚本工具的过程。脚本工具可以将脚本集成到工作流中并扩展 ArcGIS Pro 的功能。脚本工具可以使用它们的工具对话框作为独立工具运行,但它们也可以在模型中使用或由其他脚本调用。脚本工具有一个工具对话框,其中包含传递给脚本的参数。开发脚本工具相对容易,大大提升了使用脚本的体验。工具对话框减少了用户错误,因为可以使用下拉列表、复选框、组合框和其他机制指定参数。 使用工具对话框提供了对用户输入的大量控制,大大减少了编写大量错误检查代码的需要。
创建脚本工具还可以更轻松地与他人共享脚本。

3.2 脚本工具与 Python 工具箱

在了解如何创建脚本工具之前,重要的是要区分可以使用 Python 开发以在 ArcGIS Pro 中使用的两种类型的工具。这一章的重点是如何创建脚本工具,有时也称为“Python 脚本工具”。这些工具的代码被编写为 Python 脚本,并且在工具运行时调用此脚本。 脚本工具的工具对话框是在 ArcGIS Pro 中创建的。使用 ArcGIS Pro 应用程序的内置选项手动创建工具属性和参数。这个方法提供了一种直观且易于学习的方法来创建和测试脚本工具。

尽管大多数脚本工具使用 Python,但也可以使用其他接受参数的脚本语言。例如,您可以使用 .com、.bat、.exe 或 .r 文件代替 .py 文件。脚本工具调用单个脚本文件,尽管在运行该工具时可以从主脚本调用其他脚本。

第二种方法是使用 Python 工具箱创建工具。在这种方法中,整个工具对话框都是用 Python 编写的,脚本保存为 .pyt 文件,在 ArcGIS Pro 中被识别为 Python 工具箱。
创建 Python 工具箱不使用 ArcGIS Pro 中的任何界面选项,并且工具箱完全在 Python 编辑器中创建。 Python 工具箱只能用 Python 编写,一个 Python 工具箱可以包含多个工具,所有工具都用同一个脚本文件 编写。第 4 章详细介绍了如何创建 Python 工具箱。
在 第一次 学习如何使用 Python 为 ArcGIS Pro 创建工具时,建议您从脚本工具开始,因为该过程更直观。一旦您获得了一些创建脚本工具的经验,您也可以开始使用 Python 工具箱。 使用这两种方法可以完成相同的任务,选择主要取决于偏好和经验。

在第 4 章的结尾重新审视了脚本工具和 Python 工具箱的一些优缺点。

3.3 为什么要创建自己的工具?

许多 ArcGIS Pro 工作流由一系列操作组成,其中一个工具的输出成为另一个工具的输入。模型构建器和脚本可用于按顺序自动运行这些工具。使用 ModelBuilder 创建和保存的任何模型都是工具,因为它位于工具箱 (.tbx 文件) 或地理数据库中。因此,模型通常在 ArcGIS Pro 中运行。但是,可以通过两种方式运行 Python 脚本 (.py 文件):

选项 1:作为独立脚本。脚本从操作系统或 Python 编辑器中运行。要使用 ArcPy 的脚本,必须安装 ArcGIS Pro 并获得许可,但无需打开 ArcGIS Pro 即可运行脚本。例如,您可以直接从操作系统安排脚本在规定的时间运行。

选项 2:作为 ArcGIS Pro 中的工具。 脚本变成了可在 ArcGIS Pro 中运行的工具。这样的工具与任何其他工具一样:它位于工具箱中,可以从工具对话框中运行,并且可以从其他脚本、模型和工具中调用。

使用工具而不是独立脚本有几个优点。这些好处适用于脚本工具和 Python 工具箱。
一个工具包括一个工具对话框,它使用户可以更容易地使用内置的验证和错误检查来输入参数。
工具成为地理处理不可或缺的一部分。因此,可以从 ArcGIS Pro 中访问该工具。也可以在模型构建器和 Python 窗口中使用该工具,并从另一个脚本中调用它。
工具与调用它的应用程序完全集成。因此,任何环境设置都会从 ArcGIS Pro 传递到该工具。
工具的使用使得编写工具消息成为可能。
可以为工具提供文档,可以像系统工具的文档一样访问这些文档。
共享工具可以更轻松地与他人共享脚本的功能。
精心设计的工具意味着用户不需要 Python 知识即可使用该工具。

尽管有很多好处,但开发一个强大的工具需要付出努力。如果脚本的主要目的是自动化仅由脚本作者执行的任务,那么开发脚本工具的额外努力可能没有必要。另一方面,将与其他人共享的脚本通常受益于作为工具提供。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,让我来为你详细解答。 首先,在ArcGIS Pro创建一个Python工具箱。可以按照以下步骤操作: 1. 在Catalog面板中右键单击文件夹,选择“New” > “Python Toolbox”。 2. 在“New Python Toolbox”对话框中,输入工具箱的名称和存储位置,然后单击“OK”。 接下来,在新创建工具箱中创建一个工具。可以按照以下步骤操作: 1. 右键单击工具箱,选择“Add” > “Tool”。 2. 在“Add Tool”对话框中,输入工具的名称和标签,然后单击“Next”。 3. 在“Parameters”页面中,单击“Add Parameter”按钮来添加输入和输出参数。 4. 对于每个参数,设置名称、数据类型、方向和描述。 5. 在“Validation”页面中,可以添加自定义的参数验证逻辑。 6. 单击“Finish”来创建工具。 现在,我们可以在工具的“Source”选项卡中编写Python脚本来实现相交分析。以下是一个简单的示例代码: ```python import arcpy class IntersectTool(object): def __init__(self): self.label = "Intersect Tool" self.description = "Performs intersection analysis on two input features" def getParameterInfo(self): input_feature1 = arcpy.Parameter( name="Input Feature 1", displayName="Input Feature 1", datatype="GPFeatureLayer", parameterType="Required", direction="Input") input_feature2 = arcpy.Parameter( name="Input Feature 2", displayName="Input Feature 2", datatype="GPFeatureLayer", parameterType="Required", direction="Input") output_feature = arcpy.Parameter( name="Output Feature", displayName="Output Feature", datatype="GPFeatureLayer", parameterType="Required", direction="Output") return [input_feature1, input_feature2, output_feature] def execute(self, parameters, messages): input_feature1 = parameters[0].valueAsText input_feature2 = parameters[1].valueAsText output_feature = parameters[2].valueAsText arcpy.Intersect_analysis([input_feature1, input_feature2], output_feature) messages.addMessage("Intersection analysis completed successfully.") return ``` 在这个脚本中,我们创建了一个名为`IntersectTool`的类,其中包含了工具的名称和描述,以及`getParameterInfo`和`execute`方法。 `getParameterInfo`方法用于设置工具的输入和输出参数,我们在这里添加了三个参数:两个输入要素和一个输出要素。 `execute`方法用于执行工具的逻辑。在这个方法中,我们获取输入参数的值,并使用`arcpy.Intersect_analysis`函数执行相交分析,并将结果保存到输出要素中。最后,我们使用`messages.addMessage`函数向用户发送一条成功消息。 在完成代码编写后,保存脚本并切换到工具箱界面。在工具的“Source”选项卡中,单击“Validate”按钮来验证代码是否正确。如果没有错误,就可以单击“Save”按钮来保存工具。 现在,我们就可以在ArcGIS Pro中使用这个工具箱来执行相交分析了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值