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