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

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

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

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

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

  1. ArcGIS API for javascript开发笔记(二)——解决ArcGIS Service中的服务在内网环境下无法进行javascript预览问题

    感谢一路走来默默支持和陪伴的你~~~ ----------------------------拒绝转载-------------------------------- 1.问题说明 在使用ArcGIS ...

  2. ArcGIS API for javascript开发笔记(六)——REST详解及如何使用REST API调用GP服务

    感谢一路走来默默支持和陪伴的你~~~ -------------------欢迎来访,拒绝转载-------------------- 一.Rest API基础 ArcGIS 平台提供了丰富的REST ...

  3. ArcGIS API for javascript开发笔记(五)——GP服务调用之GP模型的发布及使用详解

    感谢一路走来默默陪伴和支持的你~~~ ----------------欢迎来访,拒绝转载---------------- 关于GP模型的制作请点我! 一.GP发布 ArcGIS Desktop可以作为 ...

  4. ArcGIS API for javascript开发笔记(三)——解决打印输出的中文为乱码问题

    感谢一路走来默默支持和陪伴的你~~~ ----------------------欢迎来访,拒绝转载---------------------- 1.      调用ArcGIS API的Print实 ...

  5. ArcGIS API for JavaScript开发笔记(一)——ArcGIS for Javascript API 3.14本地部署

    堪称史上最详细的< ArcGIS forJavascript API 3.14本地部署>文档,有图有真相~~~ ---------环境:Windows server 2012R2,IIS ...

  6. ArcGIS API for JavaScript开发环境搭建及第一个实例demo

    原文:ArcGIS API for JavaScript开发环境搭建及第一个实例demo ESRI公司截止到目前已经发布了最新的ArcGIS Server for JavaScript API v3. ...

  7. ArcGIS API for JavaScript开发初探——HelloMap

    1.前言 在开始ArcGIS API for JavaScript开发之前我们需要了解一些基本的知识: 1.开发工具选什么? 前端技术的开发工具选择是一个仁者见仁智者见智的问题,有人喜欢Hbuilde ...

  8. ArcGIS API for JavaScript开发初探——基础知识

    1.前言 在ArcGIS Web API开发体系中一共有四大类,分别为: ArcGIS API for Flex ArcGIS API for JavaScript ArcGIS API for RE ...

  9. ArcGIS API For JavaScript 开发(二)基础地图

    有了开发环境,接下来的就是实践了,实践是检验真理的唯一标准! 多多练习,不要觉得自己能够想的出来就万事大吉了,还是得动手做才是最好的检验自己的能力. 基础地图,本节将通过arcgis api for ...

随机推荐

  1. 对象克隆技术Object.clone()

    Java中对象的创建 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象. 所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象. ...

  2. 给自己的android扫盲文 - 1

    1. 你得知道,android开发打一开始就是java的事,没其它语言什么事情,就是说google提供的android sdk中的api都是java的api2. 至于强大的跨平台语言,你懂的,非c/c ...

  3. 【NLP】HanLP环境

    1.参考:https://github.com/hankcs/pyhanlp 2.问题: C:\Users\ADMINI~1\AppData\Local\Temp\pip-install-u617cf ...

  4. Bypass D盾_IIS防火墙SQL注入防御(多姿势)

    0X01 前言 D盾_IIS防火墙,目前只支持Win2003服务器,前阵子看见官方博客说D盾新版将近期推出,相信功能会更强大,这边分享一下之前的SQL注入防御的测试情况.D盾_IIS防火墙注入防御策略 ...

  5. iOS开发-VFL初窥

    VFL是苹果为了简化Autolayout的编码而推出的抽象语言,在上一篇博客中我们发现如果使用NSLayoutConstraint来添加约束是非常繁琐的. 一个简单的Frame需要添加四个NSLayo ...

  6. Specified VM install not found: type Standard VM, name Java

    Specified VM install not found: type Standard VM, name Java 下了一个新项目,使用SpringSource中执行ant脚本时,莫名提示以下错误 ...

  7. VS2015编译提示无法运行“rc.exe”

    使用VSx64命令行编译项目,提示无法运行“rc.exe” 想办法搜索rc.exe和rcdll.dll这两个文件,然后拷贝到C:\Program Files (x86)\Microsoft Visua ...

  8. x64免签名驱动程序

    DSEFix GitHub https://github.com/hfiref0x/DSEFix

  9. No.1 PyQt学习

    由于项目的原因,要学PyQt了.以下是第一天的学习成果 # -*- coding: utf-8 -*- import sys from PyQt4 import QtGui, QtCore class ...

  10. 关于PHP中的 serialize () 和 unserialize () 的使用(即关于PHP中的值与已存储的表示的相互转换)

    有时,我们会碰到这样的数据(字符串) 1 a:3:{i:0;s:44:"/Uploads/images/2017-07-21/5971a9a08ad57.png";i:1;s:44 ...