为地理处理服务创建模型

创建适合发布到 ArcGIS Server 的模型时,必须遵守某些规则:

要查看一些创建完成的模型和服务,请参阅地理处理服务示例指南

数据类型

模型仅可使用特定的输入和输出参数数据类型,详情请参阅地理处理服务的重要概念输入和输出数据类型

对于现有模型,所需做出的最常见修改即为将 ArcGIS Server 不支持的输入要素类变量更改为 ArcGIS Server 支持的要素集变量

某些数据类型(如 TIN)不能用作参数,并且即使予以使用,模型也无法发布这些参数。发布时您将收到一条错误消息,如下所示。

有关无效数据类型的错误消息对话框

其他参数数据类型可以发布,但会转换为字符串数据类型。例如,面积单位数据类型在发布后的任务中将变为字符串数据类型。如果模型的某个输入参数属于经过转换的数据类型,则需要先将该类型更改为字符串,然后再将其转换为模型中所需的数据类型。

了解有关与字符串数据类型相互转换的详细信息

中间数据和输出数据

任务执行过程中,ArcGIS Server 会创建一个作业目录,在该目录中可写入模型的中间数据和输出数据,如下图所示。您必须将中间数据和输出数据写入到 scratch 文件夹或 scratch 地理数据库。

中间数据和输出数据的位置

中间数据的相关规则

  • 在“模型构建器”中,右键单击任意中间数据变量,然后选择“托管”。
    警告警告:

    请不要将输出变量设置为“托管”,仅设置中间变量即可。

  • 为路径使用变量替换 (%scratchworkspace%)。例如:
     %scratchworkspace%/templines.shp
     %scratchworkspace%/scratch.gdb/outWatershed
  • 将数据写入内存。例如:
    in_memory/tempdata
    请确保您在使用该位置之前已了解 in_memory 的使用限制。

    了解有关 in_memory 工作空间的详细信息

输出数据的相关规则

输出数据必须写入到下列位置中的某一位置:

  • %scratchworkspace%/<数据集>
  • %scratchworkspace%/scratch.gdb/<数据集>
  • in_memory/<数据集> 当且仅当地理处理服务不存在结果地图服务时使用

    使用结果地图服务时,意识到存在地理处理服务和结果地图服务这两种服务很重要。这两种服务在执行时彼此相互独立。任务执行过程中,ArcGIS Server 会首先执行地理处理任务,然后再执行结果地图服务从而绘制地理处理服务的输出。由于这样的执行顺序,结果地图服务需要使用地理处理服务在磁盘中生成的数据集。这表示地理处理服务中各项任务的输出必须是磁盘上实际存在的数据集,而非图层或内存中的数据集。

注注:
  • 请不要将输出数据设置为托管。
  • 如果存在结果地图服务,请不要将输出数据写入到 in_memory。请确保您在将数据写入到该位置之前已经了解 in_memory 的使用限制。
  • 请不要为任何建模流程设置临时工作空间。请不要为模型设置临时工作空间。

使用“工具共享”文件夹结构

开发要发布的工具和地图文档时,应采用“工具共享”文件夹结构将工具箱、地图文档、数据和文档等资源聚集到一起。该文件夹结构包含一个带有临时文件地理数据库的临时文件夹,如同 ArcGIS Server 为任务创建的地理处理服务作业目录一样,如下图所示。通过使用“工具共享”文件夹结构以及将工作空间设置为临时文件夹,您便得以仿效 ArcGIS Server 使工具测试和调试变得更加轻松。

在 ToolShare 文件夹结构中设置临时工作空间

相关主题


7/10/2012