感谢一路走来默默陪伴和支持的你~~~
-------------------欢迎来访,拒绝转载-------------------
在之前的利用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)运行成功,生成的结果目录如下图所示。
版权声明:本文为博主原创文章,未经博主允许不得转载。