ArcGIS GP服务的发布及调用(以buffer为例)

Geoprocessor是用py写的脚本,它简单语法,并可以调用大部分ArcGISToolBox里的现有工具,十分强大。Geoprocessing被称之为地理处理,实际上就是ToolBox里的各种tools用py连接起立,连续处理而不用反复操作单个工具,流程化了。ArcGIS还提供了一个可视化的构建Geoprocessor工具,叫ModelBuilder:如图

发布

ArcGIS GP服务的发布及调用(以buffer为例)_第1张图片
Paste_Image.png

缓冲区分析只用到一个工具,在工具箱的Analysis Tools->Proximity->Buffer。下面就是制作一个GP包。

一:准备工作
新建一个文件夹:里面用来存放数据和新建工具箱

ArcGIS GP服务的发布及调用(以buffer为例)_第2张图片
Paste_Image.png

使用buffer 工具需要两个参数 输入要输和距离 ,把buffer工具拖入模型工具箱

设定好参数:

ArcGIS GP服务的发布及调用(以buffer为例)_第3张图片
Paste_Image.png

验证运行!最后最重要一点一定要在 工具箱里面通过GUI交互运行一次GP才能发布!!!,最开始一直以为点run之后 就能在result ->current session 发布了,否则current session 里面不会有模型出现,搞得半天不知道哪里出错...结果才知道还要这个地方在运行一次,不知道为啥要这样设计,验证运行之后,双击模型弹出对话框,手动填入参数,再运行一次才能发布!!!。如图

ArcGIS GP服务的发布及调用(以buffer为例)_第4张图片
Paste_Image.png

框框上面的P,代表了这个参数可以手动设置,没有则说明这个参数是死的,不能动...

发布在Geoprocessing->result->current sesseion 里面发布


ArcGIS GP服务的发布及调用(以buffer为例)_第5张图片
Paste_Image.png
ArcGIS GP服务的发布及调用(以buffer为例)_第6张图片
Paste_Image.png

在current session里面找到模型邮件share as ->geoprocessing service 然后下一次下一步到这个地方

ArcGIS GP服务的发布及调用(以buffer为例)_第7张图片
Paste_Image.png

一定要点击分析,然后根据提醒去掉高风险和错误的提示....一为:数据源和数据库注册问题,这个数据库注册问题至今没搞懂....复杂的抠..肯定要把新建的那个文件夹注册,
而是参数的描述是一定要填的 在错误里面右键点击弹出来的菜单进入相应页面添加参数描述
注册你又会遇到arcgis账户权限的问题,找到那个文件,右键属性->共享 添加arcgis server 账户的读取权限...

在分析一下就可以发布了.....

这个input mode 要注意 根据字面意思去理解吧! 后面调用会提到....


ArcGIS GP服务的发布及调用(以buffer为例)_第8张图片
Paste_Image.png

调用:buffer 调用讲两种情况input mode 是choice list 和user define value

choice list ,此时的输入类型为GPString , 只能在choice list 里面选 当前的list 只有ply 一个选项,就只能填ply 了.....

ArcGIS GP服务的发布及调用(以buffer为例)_第9张图片
Paste_Image.png
ArcGIS GP服务的发布及调用(以buffer为例)_第10张图片
Paste_Image.png

就可以点提交了,当这里还可以设置缓冲区距离....
终于特么成功返回了....


ArcGIS GP服务的发布及调用(以buffer为例)_第11张图片
Paste_Image.png

点击out_buffer_ply 即可返回缓冲区的json 数据,其实还可以返回成地图服务显示的....


ArcGIS GP服务的发布及调用(以buffer为例)_第12张图片
Paste_Image.png
ArcGIS GP服务的发布及调用(以buffer为例)_第13张图片
Paste_Image.png

user define value:其实就相当于填入正确的json 数据.....,,填入格式参考第一次形式返回的json数据格式..


ArcGIS GP服务的发布及调用(以buffer为例)_第14张图片
Paste_Image.png

关于GP服务的JS调用参考 arcgis api for js 官网的示例 https://developers.arcgis.com/javascript/3/jssamples/

'''
{
"displayFieldName": " ",
"geometryType": "esriGeometryPolygon",
"spatialReference": {
"wkid": 4326,
"latestWkid": 4326
},
"fields": [
{
"name": "FID",
"type": "esriFieldTypeOID",
"alias": "FID"
},
{
"name": "Id",
"type": "esriFieldTypeInteger",
"alias": "Id"
},
{
"name": "Shape_Length",
"type": "esriFieldTypeDouble",
"alias": "Shape_Length"
},
{
"name": "Shape_Area",
"type": "esriFieldTypeDouble",
"alias": "Shape_Area"
}
],
"features": [{
"attributes": {
"FID": 1,
"Id": 0,
"BUFF_DIST": 111194.872222,
"Shape_Length": 874480.2891168715,
"Shape_Area": 6.036879017204234E10
},
"geometry": {"rings": [[
[
100.389,
30.9917
],
[
100.959,
30.9344
],
[
100.816,
30.3582
],
[
100.25,
30.4163
],
[
100.389,
30.9917
]

]]}
}],
"exceededTransferLimit": false
}
'''

下面给出一些GP服务发布调用参考博客
使用ArcGIS GP服务之一框架介绍
使用ArcGIS GP服务之二手工建模
使用ArcGIS GP服务之三发布前的准备
使用ArcGIS GP服务之四GP服务发布
使用ArcGIS GP服务之五 JavaScript的调用

【ArcGIS for Server】制作并发布GP服务--缓冲分析为例
ArcGIS Server之发布结果地图服务(七)
ArcGIS Server 10.1发布要素服务时遇到的数据库注册问题总结(一)
ArcGIS 官网帮助

你可能感兴趣的:(ArcGIS GP服务的发布及调用(以buffer为例))