ArcGIS Server GP服务发布与测试(基础版)
版本:ArcGIS Server 10.4 环境:win10
测试目标:创建一个GP服务,功能为根据要素属性信息(如FID)选择出输入内容的对应匹配要素。
注:这个测试非常基础,仅供新手发布GP服务练习。
如图所示,数据源为两个图层,分别是中国行政区全图(蓝色)与中部几个省份行政区(浅绿色)。
其中中部几个省份所在的ChinaCopy图层中,各要素信息如下。
新建Toolbox.tbx,在其中新建Model。
模型如下图所示,输入有:带选择图层 和 sql语句(如”FID” = 181)
模型构建过程
(根据上图将四个部分分别标记为①②③④,以下用数字标记来简称这四个部分)
首先将select 工具拖进 Model 编辑窗口:
接着在①上右键,添加变量,有两个选择,从Parameter或Environment,从下图可知Parameter即select工具需要输入的内容。选中Input Features。
同理将Expresssion也选择。
此时各部分内容都是白色,表明模型还不能顺利运行。需要设置默认参数。分别双击②、③、④,将默认参数输入。
此时模型各部分变为彩色。点击上方图标运行模型。若成功表示模型没问题。
此时还需一步设置,如下图:右键③并设置为Model Parameter使其作为模型输入参数,否则之后运行模型时会使用刚才设置的默认参数,输入参数无法修改。同理设置②、④。
最终结果:
关闭模型编辑窗口(选择保存)。
双击模型运行。
运行成功后,在Results窗口找到刚运行的结果,右键发布GP服务。
注:如果没有Results窗口,可以在ArcMap最上方,Geoprocessing→Results打开。如下图所示。
发布服务时需要注意几点:
①选中 以地图服务查看结果,这样之后在rest路径下测试运行GP服务时,可以以地图服务的形式查看运行结果。设置如下图所示:
②模型相关的参数:输入要素、输入查询条件、输出要素,都需要进行描述,否则分析时会报错。
另外如上图所示,此时模型输入要素是ArcMap中加载的三个图层,发布的GP工具也只能以它们作为输入。(应该)也可以使用用户自己输入,不过还没测试(2016年11月28日,已测试,见文末)。
之后点分析、发布。发布成功后在server
manager中查看GP服务。
如上图所示,会有两个同名服务,一个GP服务,一个地图服务(GP服务默认运行结果)。
Rest路径下,可以看到tasks和相关信息。
点击上图tasks下的Model。可以看到(如下图所示)输入参数的可选项,表达式的默认值等信息。
这里复制Choice List中的“ChinaCopy”方便下一步测试时填写“输入要素”。
点击上图中的Submit Job(位置在页面最下方)。这里我们选择ChinaCopy作为输入,利用GP工具选择出其中FID为3861的要素。点击
Submit Job
Job Status 为运行结果。
Check Job Details Again 查看具体信息。等到出现如下结果,即运行成功,点击Results下的结果图层查看。
如下图所示,陕西区域已被查询出来。
关于输入要素设置为用户自定义的方式(以下测试略基础,对于未能实现的功能不代表sever不支持,很可能是笔者还不知道该部分内容,以下仅供参考)。
若不选择设置为用户自定义,则GP工具的通用性大大降低。设置用户自定义后,主要问题在于,怎样输入用户自定义的要素?
如下图(上文使用的GP服务删掉了,这里界面和上文略有差异)所示GP服务(名称为 Model),输入部分为json格式的字符串。
名为Model的GP服务所使用数据源如下图所示:
因为这里的目的是测试用户自定义的数据源是否可以使用该GP服务,即该GP服务中包含的数据源不可以再使用。
为了获取该GP服务中所需输入的这种格式的字符串,这里使用不同数据源(仅文档名称、要素形状与上面GP服务所使用数据源不同,属性表、空间参考等都相同)、相同模型,另外发布第二个GP服务,这样就有了与上图相同格式(而数据源不包含在上图GP服务中)的新GP服务。新GP服务数据源如下图所示。
打开新的GP服务(新服务名称为 Model2)到如下位置:拷贝输入要素后面的字符串。
将字符串粘贴到名为Model的第一个GP服务对应位置,执行GP服务。(即 GP服务 + 输入要素为未包含在该GP服务数据源的要素(用户自定义要素) )
运行结果如下所示,显然该要素并非Model GP服务所包含的数据源,即可以使用用户自定义要素作为GP服务的输入(不过格式写起来比较麻烦)。
那么会不会是因为输入要素为在线的服务才可以使用呢~
为了验证,将新发布的Model2 GP服务删除,再执行一次上述查询,结果相同,即是否在线的服务并不影响。
那么自己写一个格式相符的可以吗?
这里我们修改一下复制粘贴的输入要素字符串(具体修改见下图后)。之后执行查询,可以顺利执行。
虽然只修改了一个坐标点位置,不过足以证明自己写一个格式相符的字符串,可以作为GP服务的输入要素。
输入要素的描述字符串 原内容如下: 上图测试修改了其中 45.669056117345974 将5修改为2 变为 42.669056117345974
{
"displayFieldName": "",
"geometryType": "esriGeometryPolygon",
"spatialReference": {"wkt": "GEOGCS[\"GCS_User_Defined\",DATUM[\"D_User_Defined\",SPHEROID[\"User_Defined_Spheroid\",6378140.0,298.2569978029123]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]]"},
"fields": [
{
"name": "FID",
"type": "esriFieldTypeOID",
"alias": "FID"
},
{
"name": "test",
"type": "esriFieldTypeInteger",
"alias": "test"
},
{
"name": "Shape_Length",
"type": "esriFieldTypeDouble",
"alias": "Shape_Length"
},
{
"name": "Shape_Area",
"type": "esriFieldTypeDouble",
"alias": "Shape_Area"
}
],
"features": [
{
"attributes": {
"FID": 2,
"test": 0,
"Shape_Length": 15.104826430687684,
"Shape_Area": 13.532019237916634
},
"geometry": {"rings": [[
[
92.37279530645827,
44.18050407480325
],
[
95.79808090900679,
42.857533865595485
],
[
95.89439759507303,
41.13479398735268
],
[
92.37279530645827,
41.13479398735268
],
[
92.37279530645827,
44.18050407480325
]
]]}
},
{
"attributes": {
"FID": 1,
"test": 0,
"Shape_Length": 12.598930062798257,
"Shape_Area": 5.718694943441873
},
"geometry": {"rings": [[
[
99.2482993672221,
45.669056117345974
],
[
101.62889861977555,
43.97824988942091
],
[
101.62889861977555,
41.503610443367336
],
[
96.86997660813404,
41.503610443367336
],
[
99.2482993672221,
42.669056117345974
]
]]}
},
{
"attributes": {
"FID": 0,
"test": 0,
"Shape_Length": 14.035782149398706,
"Shape_Area": 12.17378909335935
},
"geometry": {"rings": [[
[
96.84618199740135,
47.39277643288614
],
[
99.89189208485192,
47.39277643288614
],
[
100.69977058054792,
44.21570577180398
],
[
96.84618199740135,
43.58563882357288
],
[
96.84618199740135,
47.39277643288614
]
]]}
}
],
"exceededTransferLimit": false
}
可以看出,字符串是对数据源中三个多边形的描述, 每个多边形有四个点,描述中从左上角点开始顺时针,最后返回左上角点,共五个坐标。
在ArcMap中对比查看修改前后:
GP服务 输入自定义要素如此麻烦,共享GP服务,不如直接拷贝模型?
首先,笔者对GP服务仅刚做了基础测试,很可能有更方便的使用方法还不知道,有待学习一个。
另外,这里需要提及GP服务在ArcMap中的使用。
如下图所示,在ArcMap中连接Server,找到GP服务,可以直接运行模型。这也就意味着如下场景:甲制作模型M,发布为GP服务,任意机器上安装的ArcMap连接上该服务,就可以使用模型M。
ArcGIS Server GP服务发布与测试(基础版)的更多相关文章
- arcgis之gp服务发布
arcgis之gp服务发布 注意: 1.arcgis服务可以直接通过arcmap来发布,gp服务就是将arcmap中的工具发布为服务,达到线上处理数据的能力 2.以文件为参数时不要以文件直接为参数,可 ...
- ArcGIS Server GP服务使用常见错误总结
ArcGIS GP服务问题列表 输入参数错误 在使用GP服务时,从创建模型到发布服务,再到调用服务,整个过程都需要注意输入参数和输出参数的问题.GP服务支持的输入和输出参数可详见 http://hel ...
- ArcGIS Server 10.1发布GP服务
ArcGIS Server 10.1发布GP服务 ArcGIS Server 10.1发布GP服务确实更简单了,只是刚使用不怎么习惯.ArcGIS Server 10.1发布GP服务需要先在ArcCa ...
- ArcGIS Server 动态图层发布调用图解
目录 1 前言 1.1 简介 1.2 适用场景 2 动态图层 2.1 共享地图服务 2.2 动态工作空间添加 2.2.1 企业级数据库 2.2.2 shapefile文件夹 2.2.3 栅格文件夹 2 ...
- ArcGIS Server 缓存服务切图范围
win10 + Server 10.4 + ArcMap 10.4 ArcGIS Server 缓存服务分为创建服务后手动建立缓存和创建服务时同时自动建立缓存两种. 10.2帮助文档:http:/ ...
- ArcMap AddIn之下载ArcGIS Server地图服务中的数据
涉及到开发知识点1.ArcGIS Server地图服务 2.C# web请求获取数据 3.AddIN开发技术 工具界面: 具体涉及到的代码之后有空贴出来.先上工具 AddIn插件下载地址:点击这里下载 ...
- 从零开始发布一个ArcGIS Server地图服务
@ 目录 一.软件环境搭建 1.数据库安装 1.1.Oracle(可选) 1.1.1.安装Oracle服务端 1.1.2.安装Oracle客户端 1.2.PostgreSQL(可选) 1.2.1.安装 ...
- arcgis server 10.1 发布动态图层展示海量及频繁更新的数据步骤
Arcgis server 发布动态图层及调用动态图层 做这个动态图层功能的原由是 有一个30万的数据需要通过arcgis GP工具转成shp然后渲染加载进地图,原来的做法是遍历生成shp面要素,读 ...
- ArcGIS Server 10.1发布数据源为ArcSDE(直连)的MXD【转】
因为ArcSDE10.1基本默认直连,所以我们在发布直连的MXD仍然需要注意相关的事宜. 1:保证两台机器都能够访问共享存储的信息 2:确保已UNC路径保存ArcCatalog的文件夹连接,而且直连的 ...
随机推荐
- SpringMVC中向服务器传递时间参数时出现的问题
1. 问题描述: 今天在SpringMVC应用中上传参数的时候遇到如下问题: The request sent by the client was syntactically incorrect 这说 ...
- Hadoop2.0(HDFS2)以及YARN设计的亮点
YARN总体上仍然是Master/Slave结构,在整个资源管理框架中,ResourceManager为Master,NodeManager为Slave,ResouceManager负责对各个Node ...
- EF框架step by step(3)—Code-First
CodeFirst是EF框架的第三种方式,也是最为复杂一种方式,本文将以EF4.1版本为基础,简要讲解一下用法,同时,也介绍DbContext的用法. 本文采用的示例仍然是前两篇采用的博客用户的示例. ...
- 关于在C#中构造函数中调用虚函数的问题
在C#中如果存在类的继承关系,应避免在构造函数中调用虚函数.这是由于C#的运行机制造成的,原因如下: 新建一个类实例时,C#会先初始化该类(对类变量赋值,并将函数记在函数表中),然后再初始化父类.构造 ...
- Zookeeper 3.4.6 Client端流程粗略梳理
首先从Zookeeper入手,Zookeeper-->ClientCnxn-->sendThread/eventThread public ZooKeeper(String connect ...
- Angular JS中的依赖注入
依赖注入DI angularjs中与DI相关有angular.module().angular.injector(). $injector.$provide. DI 容器3要素:服务的注册.依赖关系的 ...
- SCOI 2013 密码 & 乱搞
题意: Fish 是一条生活在海里的鱼.有一天他很无聊,就到处去寻宝.他找到了位于海底深处的宫殿,但是一扇带有密码锁的大门却阻止了他的前进.通过翻阅古籍,Fish 得知了这个密码的相关信息:1. 该密 ...
- CUDA程序设计(三)
算法设计:基数排序 CUDA程序里应当尽量避免递归,因而在迭代排序算法里,基数排序通常作为首选. 1.1 串行算法实现 十进制位的基数排序需要考虑数位对齐问题,比较麻烦.通常实现的是二进制位的基数排序 ...
- KMP算法 hdu4686 Oulipo
Problem Description The French author Georges Perec (1936–1982) once wrote a book, La disparition, w ...
- 记忆用户设置-提升程序的体验VB/C#
有时候,设计的程序有很多的控件,甚至多达近百个,尤其是一些工控软件等,程序运行所需的各种参数都是由用户通过这些控件设置而来,那么记录用户的设置就显得十分必要.如果程序出现异常,起码重新打开可以不用再一 ...