创建 Python 脚本工具(上)

0 阅读7分钟

^ 关注我,带你一起学GIS ^

前言

Python 脚本使自动化 ArcGIS Pro 中的工作流成为可能。Python 脚本可用于自动化 ArcGIS Pro 中的任务。可以将自己创建的脚本作为 Python .py 文件与其他人共享。 但是,使用其他人编写的脚本需要掌握一些 Python 知识,即使只是更改要处理的数据集的名称。为了以更易于使用的形式共享 Python 脚本,可以创建 Python 脚本工具。

本教程来源于ESRI官方示例如何创建 Python 脚本工具

文中以ArcGIS Pro3.5为例,默认你已经具备了Python的基础知识。本篇教程在之前一系列文章的基础上讲解。

如果你还没有看过,建议从以上内容开始。

1. 开发环境

本文使用如下开发环境,以供参考。

时间:2026年

系统:Windows 11

ArcGIS Pro:3.5

Python:3.11.11

2. 数据准备

俗话说巧妇难为无米之炊,数据就是软件开发的基石,没有数据,再美好的设想都是空中楼阁。因此,第一步需要下载GIS数据。

别急,GIS之路公众号都给你准备好了

在公众号后台回复关键字:vector,获取数据下载链接。

而本文示例数据来源于ESRI官方教程,在此感谢ESRI相关工作人员的辛勤付出与免费共享。

数据下载地址https://learn.arcgis.com/zh-cn/projects/create-a-python-script-tool/下载数据解压完成,将工程添加到地图,可在ArcGIS Pro目录窗口查看图层数据,存储在Transportation.gdb数据库中。

数据集是 GIS 工程的典型内容,包含不同格式的要素类和表格数据,以及组织这些数据的其他元素。 您将使用 Python 代码基于其类型和其他属性识别这些数据集。 请注意,这些分组意味着工程数据具有多级别嵌套结构。

对于ArcGIS Pro底图失效的同学,可查看以下文章进行解决。

ArcGIS Pro 添加底图的方式

3. 创建工具并添加参数

可在 ArcGIS Pro 中创建 Python 脚本工具。 这些工具存储在自定义工具箱中。

在 ArcGIS Pro 的目录窗格中,右键单击 PythonTool 文件夹,然后依次单击新建和工具箱 (.atbx)。

创建工具箱如下。

重命名工具箱名称为Clip_and_ZIP。

较早版本的 ArcGIS Pro 使用 .tbx 格式。 仍然可以使用此格式的较早工具箱,但在创建工具箱时,应自 ArcGIS Pro 3.0 起使用 .atbx 格式。

右键单击 Clip_and_ZIP 工具箱,指向新建,然后单击脚本

新建脚本窗口显示如下,此窗口用于设置工具的常规属性、配置工具参数、输入执行代码和添加验证代码。

在新建脚本窗口中,将名称项修改为ClipandZIP,工具名称是工具使用的内部唯一标识名称。名称只能包含字母和数字。 空格和特殊字符不允许使用。

将标注选项修改为ClipandZIP,工具标注是工具箱中,以及在工具对话框中打开工具时显示的简明易懂的工具名称。 标注可以包含空格和特殊字符。

下一个框是工具箱,包含脚本工具。 工具箱的路径和名称根据 .atbx 文件所在的位置显示,无法在窗口中更改。 需要注意的是,脚本工具并非单独的文件,而是 .atbx 文件的一部分。

描述框中,输入 This script tool allows you to select multiple feature layers or feature classes and clip them using one or more polygon features. The results are stored in a new geodatabase and a ZIP archive of this new geodatabase is created for easy sharing or backup.。

然后点击确定,可以在项目目录窗格中看到ClipandZIP工具箱。

双击打开该脚本工具。其包含地理处理工具的框架基础,但大部分内容仍为空。

4. 查看工具属性

仔细配置工具参数是创建 Python 脚本工具的关键部分。工具参数用于定义工具的用户界面,工具的用户可在其中输入数据和其他值,这些内容将由脚本处理。

右键单击 Clip and ZIP 工具,然后单击属性

单击参数选项卡,在此处配置工具参数

将使用此表格来创建以下参数:

  • 输入要素图层  - 用户可以选择活动地图中的任何要素图层,或浏览到磁盘上的任何要素类。
  • 裁剪面  - 用户可以选择面要素图层,浏览到磁盘上的面要素类,或在活动地图中创建由面组成的要素集。
  • 输出地理数据库  - 用户可以指定新地理数据库的路径和文件名,以存储结果。
  • 输出 ZIP 存档 - 用户可以指定要使用地理数据库内容创建的 ZIP 存档的路径和文件名。

5. 添加输入要素图层参数

标注列中,输入 Input feature Layers。

参数标注是参数的可读标注,在工具窗格中显示。参数名称会根据标注自动填充,其空格将由下划线代替。 参数名称由脚本工具内部使用,在 Python 脚本中设置工具参数时,您也可以使用参数名称。

数据类型列中,单击更改数据类型按钮。参数数据类型窗口随即显示,可以选中多个值

双击打开工具,已经显示输入参数。

6. 添加“裁剪面”参数

与添加输入图层要素方式一致,现在添加裁剪面参数。

参数选项卡上表格第二行中,单击标注列,输入 Clip Polygons,然后按 Enter 键。其中数据类型选择要素集。

向右滚动并单击过滤器列。

单击过滤器下拉列表,并选择要素类型

在要素类型过滤器中选择面。

7. 添加输出地理数据库参数

参数选项卡上表格第三行中,单击标注列,输入 Output geodatabase,在数据类型列中,单击更改数据类型按钮。对于数据类型,单击下拉列表,然后依次单击工作空间确定

单击方向列,并在下拉列表中选择输出

对于过滤器列。单击过滤器下拉列表,并选择工作空间

工作空间过滤器窗口中,选中本地数据库

将过滤器设置为本地数据库意味着,用户只能将文件地理数据库而非企业地理数据库或文件夹指定为输出。

8. 添加输出 zip 存档参数

本节将配置输出 zip 存档参数。在参数选项卡上表格第四行中,单击标注列,输入 Output ZIP archive,然后按 Enter 键。

对于数据类型,单击下拉列表,然后依次单击文件确定

单击方向列,并在下拉列表中选择输出。单击过滤器下拉列表,并选择文件

文件过滤器窗口的扩展名框中,输入 zip。

文件扩展名应仅为扩展名的字母部分,不包括文件扩展名分隔符“.”。 请勿输入  .zip。文件扩展名不区分大小写。

现在,已经添加该工具的所有参数。

参考资料

  • 创建 Python 脚本工具:https://learn.arcgis.com/zh-cn/projects/create-a-python-script-tool
  • Describe函数参考地址:https://pro.arcgis.com/zh-cn/pro-app/latest/arcpy/data-access/what-is-the-data-access-module-.htm

GIS之路-开发示例数据下载,请在公众号后台回复:vector

全国信息化工程师-GIS 应用水平考试资料,请在公众号后台回复:GIS考试

GIS之路 公众号已经接入了智能 助手,可以在对话框进行提问,也可以直接搜索历史文章进行查看。

都看到这了,不要忘记点赞、收藏 + 关注

本号不定时更新有关 GIS开发 相关内容,欢迎关注 


    

GeoTools 开发合集(全)

OpenLayers 开发合集(全)

GDAL 开发合集(全)

GIS 影像数据源介绍

GeoJSON 数据源介绍

GIS 名词解释

ArcPy,一个基于 Python 的 GIS 开发库简介

GIS 开发库 Turf 介绍

GIS 开发库 GeoTools 介绍

GIS 开发库 GDAL 介绍

地图网站大全

从微信指数看当前GIS框架的趋势

Landsat 卫星数据介绍

OGC:开放地理空间联盟简介

中国地图 GeoJSON 数据集网站介绍

高校停招GIS专业背后,隐藏着怎样的逻辑?