美文网首页
ArcGIS GP服务的发布及调用(以buffer为例)

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

作者: fangxu622 | 来源:发表于2017-03-07 23:04 被阅读2792次

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

    发布

    Paste_Image.png

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

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

    Paste_Image.png

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

    设定好参数:

    Paste_Image.png

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

    Paste_Image.png

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

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


    Paste_Image.png Paste_Image.png

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

    Paste_Image.png

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

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

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


    Paste_Image.png

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

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

    Paste_Image.png Paste_Image.png

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


    Paste_Image.png

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


    Paste_Image.png Paste_Image.png

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


    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为例)

          本文链接:https://www.haomeiwen.com/subject/ttuvgttx.html