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