GP 服务示例:所需数据

复杂程度: 入门级 数据要求: ArcGIS 教程数据安装程序

文件夹

DataOnDemand

目的

使用一个由用户进行数字化的面来裁剪文件地理数据库中的数据集,从而输出 shapefile,然后创建一个以电子邮件形式发送给用户的 .zip 文件。

服务

PortlandDataMapService(地图服务),DataOnDemand(地理处理服务)。

地理处理任务

ClipZipAndEmail

输入

感兴趣区域(面要素集)和用于发送数据的电子邮件地址。

输出

aoizip.zip,一个包含该数据的压缩文件。

数据

本示例使用俄勒冈州波特兰市的小数据集。

扩展模块

无。

注释

本服务保存在 ESRI 的 sampleserver 中 - 请参阅以下注释。这是一个裁剪与发送服务,如裁剪与发送示例中所述。

关于本示例

对应的文件夹

C:\arcgis\ArcTutor\GP Service Examples\DataOnDemand 包含工具和数据。

关于本示例

此 DataOnDemand 服务是裁剪与发送服务的另一个示例。在探讨此服务之前,请首先阅读裁剪与发送示例,因为将会对这两种服务的特点和功能进行对比,如下表所述。如果正在构建裁剪与发送服务,您可能需要将这两种服务的特点和功能都合并到您的服务中。

裁剪与发送示例

本示例

用户选择要下载的图层。

下载一组固定的数据。

可以指定输出数据的空间参考。

无法指定空间参考 - 已被设置为正在裁剪的数据集的空间参考。

可以指定输出格式。

仅输出 shapefile。

使用模型、脚本和工具图层。使用地图文档发布服务。

不使用模型,而仅使用脚本。发布工具箱而不是地图文档。

裁剪地图文档中的图层。

裁剪数据集。(因为不存在包含图层的源地图文档,所以无法使用图层,只能使用数据集。)

不下载感兴趣区域(用户进行数字化的裁剪多边形)。

下载感兴趣区域。

无法以电子邮件形式发送输出。

可通过在 ClipZipAndEmail 脚本(源文件是 DataOnDemand/Scripts/zipandemail.py)中指定电子邮件服务器名称来以电子邮件形式发送输出。

“裁剪与发送”示例与此“所需数据”示例之间的比较

此服务的其他特点包括

此服务由 ESRI 提供

此服务保存在 ESRI 的 ArcGIS Online 服务器中。可按照以下方式试用此服务:

  1. http://sampleserver1.arcgisonline.com/arcgis/services 作为 ArcGIS 服务器添加。
  2. http://sampleserver2.arcgisonline.com/arcgis/services 作为 ArcGIS 服务器添加。
  3. 在 ArcMap 中,从 sampleserver1 添加 Portland/Portland_ESRI_LandBase_AGO 地图服务。
  4. 从 sampleserver2 将 Portland/ESRI_CadastralData_Portland 地理处理服务添加到 ArcToolbox。
  5. 展开 ESRI_CadastralData_Portland 工具箱,然后执行 ClipAndShip 任务。

DataOnDemand 文件夹中的脚本和工具与 ESRI_CadastralData_Portland 地理处理服务中 ClipAndShip 任务使用的脚本和工具相同。本示例中使用的数据存储在 DataOnDemand/ToolData/Portland.gdb 中,并且是 Portland_Portland_ESRI_LandBase_AGO 地图服务中所用数据的小子集。

注注:

sampleserver1 和 sampleserver2 中存放的地图服务和地理处理服务将来可能会更改。我们无法保证上述服务始终可用。

数据

本示例中使用的数据是俄勒冈州波特兰市内一小片区域的数据,该数据存放在 C:\arcgis\ArcTutor\GP Service Examples\DataOnDemand\ToolData\Portland.gdb 中。

ClipZipAndEmail 工具使用“要素集”变量,而该变量又需要一个用来定义要素类型和字段的方案。此方案存放在 C:\arcgis\ArcTutor\GP Service Examples\DataOnDemand\ToolData\Templates.gdb 中。

ToolData 文件夹也包括 Mapofzip.mxd,此文件包含在 ZIP 文件中并且显示已裁剪与发送的数据。

脚本

DataOnDemandTools 工具箱包含一个脚本工具 ClipZipAndEmail。此脚本工具的源是 DataOnDemand/Scripts/zipandemail.py

使用 ClipZipAndEmail 工具之前,必须编辑代码并提供电子邮件服务器的名称。(可在 PythonWin 等应用程序中直接编辑 Python 源,也可右键单击脚本工具,然后单击“编辑”。)系统管理员应该能够为您提供电子邮件服务器的名称。

下面介绍此脚本的一些重要属性和特点:

发布

PortlandDataMapService 作为地图服务发布。

DataOnDemandTools 工具箱作为地理处理服务发布。

配置服务

要为数据配置此服务,需要编辑 ClipZipAndEmail 脚本工具。此脚本工具的源是 DataOnDemand/Scripts/zipandemail.py。可在 PythonWin 等应用程序中直接编辑 Python 源,也可右键单击脚本工具,然后单击编辑

将需要更改数据位置和数据集列表。在主例程中,

if __name__ == '__main__':

查找 dataloc 变量的定义并对其进行更改:

 global dataloc; dataloc = os.path.dirname(sys.path[0]) + g + "tooldata" + g + "portland.gdb" + g

该数据的位置与脚本的位置有关。

了解有关使用脚本位置构建路径的详细信息

接着,更改要裁剪的数据集列表,该列表位于以下代码片段中:

    ds = ["Streets" + g + "streets", \
            "Water" + g + "StreamRoute", "Water" + g + "floodplain", "Water" + g + "riv_fill", \
            "Transit" + g + "railroad", \
            "Census" + g + "blockgrp", \
            "Develop" + g + "Buildings", \
            "Land" + g + "zoning", "Land" + g + "Parks", \
            "Places" + g + "schools", "Places" + g + "hospital"]

最后,需要在 sendemail.py 脚本中提供电子邮件服务器的名称。需要修改的代码位于接近脚本顶部的位置:

def send_mail(send_from, send_to, subject, text, f=""):
    assert type(send_to)==list

    # Provide the name of your email server below
    #
    server = "ouremailserver.somewhere.com"

相关主题


7/10/2012