所有成功的工具都具有输入和输出参数。 如果没有输入参数,工具每次运行时将会执行相同的处理。 更改输入参数的值即会产生不同的结果。 输出参数使工具可以返回结果。 用于驱动 web 工具的地理处理服务已明确定义有关输入和输出参数的规则。 这些规则(具体说明如下)用于确保将适用于 web 的工具发布到客户端将按预期方式与其进行交互的目标位置。
输入参数
创建地理处理工具时,可以使用许多参数数据类型为工具提供输入。 对比选择数据类型有助于那些使用工具的用户向工具提供预期输入。 某些数据类型是专用的,在地理处理服务中不受支持。 构造要用作地理处理服务的工具时,最好使用支持的数据类型来构造工具。 您所创建并与同事共享的工具可能和您所创建的、最终将发布为 web 工具的工具在设置上略有不同。
ArcGIS Pro 中支持的输入数据类型可以为下表左列中的以下任意数据类型。 进行发布后,它们将转换为 ArcGIS Enterprise 中的对应数据类型。
ArcGIS Pro 中的数据类型 | ArcGIS Enterprise 中的数据类型 |
---|---|
要素集、要素图层 | |
栅格数据集、栅格图层 | |
记录集、表视图 | |
文件 | |
布尔型、双精度、长整型、字符串(文本) | |
日期 | |
线性单位 | |
字段 | |
值表 |
除了值表之外,所有上述类型都支持多值。 请参阅 ArcGIS Enterprise 中适用于该数据类型的 GPMultivalue。
字段数据类型
要使用字段数据类型,您需要 ArcGIS Pro 2.3 或更高版本以及 ArcGIS Enterprise 10.7 或更高版本。 不支持多值字段参数。
制作
对于具有输入字段参数的工具,请确保该字段参数与要素图层或表等参数具有依赖项。
如果要使用 ArcGIS Pro 2.3 至 ArcGIS Pro 2.9,仅支持将要素集和要素图层输入用作依赖项。 如果要从 ArcGIS Pro 3.0 或更高版本发布到 ArcGIS Enterprise 11.0 或更高版本,字段数据类型可以依赖于所有支持的要素和表输入数据类型。
运行工具
如果在 ArcGIS Pro 2.3 和 ArcGIS Pro 2.9 之间发布之前运行该工具,请从磁盘中为这些字段参数所依赖的要素图层选择要素类。 不要使用要素图层作为输入。
在 ArcGIS Pro 3.0 或更高版本中发布至 ArcGIS Enterprise 11.0 或更高版本时,对如何选择输入数据没有限制。 可以使用要素图层、磁盘中的要素类、表或字段参数依赖于的图层的表视图。
发布
配置工具属性时,字段参数的输入模式将为默认选项选择列表。 确保字段参数的输入模式设置为用户定义的值选项。 要了解有关共享 web 工具时输入模式的更多信息,请参阅内容。
使用
在 ArcGIS Pro 中使用 Web 工具时,选择输入后,将自动在下拉列表中填充所有适用的字段。
注:
在 ArcGIS Web AppBuilder 中创建的应用程序或 Portal for ArcGIS 中的 Map Viewer 经典版 不支持字段数据类型。
值表数据类型
值表是一个灵活的类表对象,由包含各种值的行和列组成。 要使用值表数据类型,您需要 ArcGIS Pro 3.0 或更高版本以及 ArcGIS Enterprise 11.0 或更高版本。 有关值表的详细信息,请参阅 ValueTable。 valuetable 不支持多值。
制作
尽管值表参数的列名称可以为空或复制,但是建议在设计工具参数时使用唯一的非空列名称。 Web 工具用户可以根据唯一的非空列名称在使用 Web 工具时区分不同的列,尤其当存在多个数据类型相同的列时。
发布
可以在 Python 脚本中发布具有输入或输出值表参数的 Web 工具。 如果值表参数中的列具有过滤器,则发布过程将包含过滤器。
使用
可以在 ArcGIS Pro 3.0 中或 Python 中使用具有值表参数的 Web 工具。 在 ArcGIS Web AppBuilder 中创建的应用程序或 Portal for ArcGIS 中的 Map Viewer 经典版 不支持值表数据类型。
不支持的输入
如果您用于构造工具的参数不在以上所列参数内,则说明其不受地理处理服务支持。 共享 web 工具时,不支持的参数会被硬编码到服务中或转换为支持的类型。 了解这两点后,您便可创建工具,并可让工具继续采用您希望的交互方式。 如何转换不支持的参数类型取决于参数。 共享 web 工具时,可通过内容部分下的配置工具属性 检查参数转换情况。 以下示例介绍了一些较为常见的参数,以及如何对其进行修改才可在地理处理服务中使用。
例如,要素类参数同时支持 shapefile 和磁盘上的要素类。 然而,您的工具可以使用要素图层或要素集参数。 要素图层参数支持从图层列表中进行选择。 此图层列表就是您发布地图时其中的相同图层。 您也可以使用要素集参数。 此参数允许交互式输入要素。 使用地理处理服务和输入要素集的 web 应用程序允许用户创建与服务进行交互的要素。 这些概念同样适用于表和记录集。 这些方法都允许用户提供要素输入,但在发布时会产生极为不同的服务。 您的工作流将帮您确定最适合的数据类型。
应用广泛且在发布时会变为硬编码形式的两个参数类型是工作空间和文件夹类型。 工作流可能会取用 .sde 连接文件或文件夹,并对在文件夹内的项目执行某项操作。 无法将工作空间从客户端传输到地理处理服务。 相反,它将在已发布的服务中变为硬编码形式。 此硬编码参考指向引用或复制(具体取决于数据存储设置)了这些项目的某一位置。 已发布服务将以其发布之前的方式继续使用工作空间及其内容。 唯一的区别是服务的用户无法更改工作空间。
输出参数
在典型工作流中,Web 工具都会具有至少一个输出参数。 Web 工具正是通过输出参数来向客户端返回结果。 如果没有此参数,服务将无法返回任何内容。 与输入参数非常类似,地理处理服务支持一些可用于输出参数的数据类型。
提示:
如果您确定您所创建的工具不需要输出参数,原因是工具的用途是按规定的时间执行更新或操作,那么您可能并不需要地理处理服务。 在这种情况下,计划任务工作流可能更为合适。ArcGIS Pro 中支持的输出数据类型可以具有派生或必需参数类型,并且可以为下表左列中的以下任意数据类型。 进行发布后,它们将转换为 ArcGIS Enterprise 的右列中的对应数据类型。
ArcGIS Pro 中的数据类型 | ArcGIS Enterprise 中的数据类型 |
---|---|
要素类 | |
栅格数据集 | |
表格 | |
文件 | |
布尔型、双精度、长整型、字符串(文本) | |
日期 | |
线性单位 | |
字段 | |
值表 |
以上所有输出数据类型(ValueTable 除外)都支持多值。 请参阅 ArcGIS Enterprise 中适用于该数据类型的 GPMultiValue。
硬编码输出
所有输出对于服务用户都会变为静态。 当在桌面或 web 应用程序中使用地理处理服务时,不会为输出参数提供任何值。 在您首次尝试运行服务时可能会感到惊讶,因为您并没有机会设置要素类的输出名称。 共享 web 工具时,发布地理处理服务的流程会处理输出。 在 ArcGIS Pro 中运行工具时的输出名称会变为服务中输出结果的名称。 服务会处理将输出写入内存或临时位置,例如临时文件夹、临时 GDB 或临时工作空间环境。 在服务成功运行后,服务会将输出返回到客户端。
不支持的输出
部分参数类型在地理处理服务中不受支持,因为无法将其返回到客户端。 例如,网络数据集和几何网络等工作空间和复杂类型。 例如,工作空间可以是文件夹、要素数据集或 .sde 连接文件。 服务无法传回文件夹或项目容器。 如果您的工作流需要传回多个项目或由若干项目组成的复杂项目,则可能需要对这些项目进行压缩并返回 .zip 文件。 或者,如果工作流允许,您可以使用复制要素工具返回简化的要素类结果。