zoukankan      html  css  js  c++  java
  • ArcGIS API for javascript开发笔记(四)——GP服务调用之GP模型的规范化制作详解

    感谢一路走来默默陪伴和支持的你~~~

    -------------------欢迎来访,拒绝转载-------------------


    在之前的利用Python分析GP服务运行结果的输出路径 & 实现服务输出路径的本地化 这篇博客中一直留下了一个小小的伏笔,即GP模型的制作技巧,现在才得空整理出来。

    很多情况下gp模型的构建需要编写一定得python脚本,然而怎么编写python脚本呢?脚本又将怎么添加到ArcGIS中运行呢?以及怎么制作GP可以实现输出的结果不受ArcGIS Server路径的管理呢?下面以一个例子作为实验。

    该gp实现的是:将已给定的包含X、Y坐标的Excel风机属性信息,转化成Table表数据,再将Table表数据转化成机位的空间点位数据,并关联所有属性信息,创建机位点位的空间参照,最终将风机点位数据输出到指定的数据库中,而整个工作流是一体化实现的。

     -------------------欢迎来访,拒绝转载-------------------

    1.        模型创建的准备


     

    为了实现规范化的编写和模型与数据及脚本的统一管理,在Arccatalog中创建如图所示的文件夹结构,即在Mobile文件下创建Scratch、ToolData、SpatialReference、Script文件夹,以及名称为CreateGeoTurbine的工具箱,名称为CreateGeoTurbine的地图文档。

    其中,Scratch可以理解为临时存放数据的容器,用于存放模型运行过程中不必要输出的要素或文件,理论上这些要素或文件可以在模型完成时自动删除。

        ToolData文件夹用于存放输入数据,即Excel格式的风机属性数据。

              SpatialReference文件夹用于存放由ArcGIS导出的投影文件,这里所需的投影文件为Beijing 1954 3 Degree GK CM 102E投影。

              Script用于存放模型构建中编写的脚本文件。

              CreateGeoTurbine工具箱用于存放Model及添加可执行的脚本。

              CreateGeoTurbine地图文档用于存放输出的风机的点位要素,为后续生成移动数据库做准备。

    --------------------这是一条华丽丽的分割线---------------------

    2.        编写脚本

    1)导入脚本运行所需要的模块

    2)创建脚本执行时可由用户自定义的输入输出参数。

    3)在Mobile文件夹下创建一个新的文件夹,文件夹的路径与名称作为用户输入的参数,并将路径与名称连接在一起,以字符串的类型定义给OutFolder。

    4)在输出的文件夹OutFolder下生成新的文件地理数据库,其名称为“GeoTurbine.gdb”,并将输出路径与数据库名称连接在一起,以字符串的类型定义给wrkspc。

    5)在以wrkspc为路径的文件地理数据库下,将Excel格式的风机属性数据转换成Table格式的表数据TurbineAttribute(因为Excel不被识别,所以需要将Excel转换ArcGIS所识别的Table格式)。

    6)将Table中的Xcoord、Ycoord坐标转成点要素,名称给定为TurbinePoints,并输出至创建的文件数据库中。

    7)为生成的TurbinePoints要素定义投影坐标。

    8)以OBJECTID为连接字段,对生成的风机要素TurbinePoints和生成的Table表TurbineAttribute进行连接,以获取Table表中全部的字段。

    -------------------------这是一条华丽丽的分割线-------------------------

    3.        添加脚本

    1)对编写好的脚本文件,需要添加到ArcGIS中执行,添加脚本的方法,右键单击创建的Toolbox工具箱,点击添加Script。

    2)为添加的脚本命名,勾选作为相对路径存储。

    3)指定脚本文件存放的位置,这里存储在Mobile/Script目录下。

    4)设置脚本中可由用户设置的参数,参数的设置与脚本中定义的参数相对应。设置IputFolderLocation,注意确认其DataType为string,类型为Required,Direction为Input。在这里并没有以文件夹或路径的数据类型作为输入,是因为在后续发布服务的GP工具里,可以将这个路径暴露给用户,这一点很重要。

    5)与上一步相似,设置Iput Folder Name,注意确认其DataType为string,类型为Required,Direction为Input。

    6)设置输入参数Iput Excel File,注意确认其DataType为File,类型为Required,Direction为Input。

     

     

    7)设置参数OutputTable,注意确认其DataType为Table,注意类型为Derived,Direction为Output。类型中有三个选项,分别为:Optional、Requied、Derived,其中,Optional为可选参数用户不一定输出;Requied为必选参数,一定会输出结果。Derived意味着用户使用的工具不能手动为参数输入值,即路径不可选(参数类型为Derived时,Direction只能为Output,且输出的参数不会显示出来)。

    8)设置输出参数OutputFC,注意确认其DataType为Feature Class,类型为Derived,Direction为Output。

    9)设置输出参数Output Coordinate System,注意确认其DataType为coordinate system,类型为Required,Direction为Input,单击Finish完成脚本的添加。

    10)运行添加的脚本,各参数显示如下图所示,输出类型为Derived的参数不会被显示出来。

    ----------------------欢迎来访,拒绝转载----------------------

    4.        创建Model Builder。

    1)右键单击Toolbox工具箱,新建Model,并将已经添加好的CreateGeoTurbine脚本拖拽到模型中,释放参数,并将输入选项设置为模型参数P。

    2)给定模型的参数值,此时模型会变成如下图所示的颜色,单击验证分析模型的有效性,并在Model里运行此模型,运行成功并输出结果,则证明模型正确有效。

    3)模型已验证无误后,清除给定的参数值,目的是在后续发布的GP服务里,参数不会作为默认值出现在选项框里,保存模型。

    4)双击CreateGeoTurbine模型,输入参数:创建的文件夹路径、文件夹名称,输入的Excel路径,选定坐标系统,运行工具。

    5)运行成功,生成的结果目录如下图所示。


    关于这个GP模型的发布,Rest API调用,Javascript调用问题,后续将更新,欢迎探讨。

    -------------------------欢迎来访,拒绝转载---------------------------

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Exadata存储节点的CPU限制成功了没?
    如何减少Exadata计算节点CPU的Core数量
    如何选择适合你的HTAP数据库?
    小知识:Oracle中的层次查询
    小知识:使用MOS下载Oracle介质快速参考
    小知识:Flex ASM特性对集群资源显示的影响
    javaWeb request请求乱码、response响应中文乱码一站式解决方案
    java 文件File与byte[]数组相互转换的两种方式
    pr 如何调高导出视频的清晰度?
    pr 剪辑视频之剃刀用法
  • 原文地址:https://www.cnblogs.com/gishh/p/4969908.html
Copyright © 2011-2022 走看看