您的位置:首页 > Web前端 > JavaScript

ArcGIS API for javascript开发笔记(四)——GP服务调用之GP模型的规范化制作详解

2015-11-16 16:05 771 查看
感谢一路走来默默陪伴和支持的你~~~

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

在之前的利用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调用问题,后续将更新,欢迎探讨。

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

版权声明:本文为博主原创文章,未经博主允许不得转载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: