arcgis js 缓冲区分析(GP服务)

arcgis文档中的有提供缓冲区的接口 geometryService,但要4.19后版本才提供
在这里插入图片描述

案例中使用的版本为4.16,因此这里的缓冲区分析借助gp工具

新建服务

1、打开arcmap

选择工具将要存放的文件夹,右键=> new => Toolbox
对新建好的工具的model(右键工具 new => model)进行编辑,如图
工具编辑界面

2、打开ArcToolbox

通过工具按钮打开ArcToolbox
工具按钮
Buffer所在位置,如图
工具所在位置

3、编辑服务工具

将Buffer工具拉入工具编辑界面,如图
添加图片注释,不超过 140 字(可选)
其中矩形为工具,椭圆为参数,参数可以是传参也可以是固定参数。

4、设置参数

右键矩形框 =>make Variable =>选择参数 可以选择所需要的传参,如图
在这里插入图片描述
缓冲区分析需要的参数有 Input Features和Distance
右键,选择Model Parameter将其设置参数,以Input Features为例,Distance同理,出现P即为需要传参,如图
Input Features

5、设置需要传参的参数的数据

选择数据将要存放的文件夹,右键,选择Shapefile,如图
新建shp
以线条为例,将Feature Type设置为Polyline
添加图片注释,不超过 140 字(可选)

若使用4490的坐标系,通过Edit,搜索4490,如图
添加图片注释,不超过 140 字(可选)

选择新建的shp数据,即InputLine进行编辑,选择Editor => Start Editing,如图
添加图片注释,不超过 140 字(可选)

Start Editing后选择InputLine,选择工具栏的Create Features,如图
在这里插入图片描述
出现绘制工具,选择line,即可进行绘制(绘制通过双击结束)
在这里插入图片描述
选择Editor => Save Editing 对绘制的shp进行保存
最后,双击椭圆形框(InputLine),选择保存好的shp文件,无色椭圆形框变为蓝色,如图
在这里插入图片描述

Distance同理,如图
在这里插入图片描述
如图,工具即创建成功
缓冲区分析工具

6、运行工具

双击新建的工具model运行,选择输出文件(重新创建不存在的name),如图
在这里插入图片描述
没有错误提示,选择OK,如图
在这里插入图片描述

发布服务

1、Geoprocessing => results =>选中工具下的model,如图
在这里插入图片描述

2、根据Output Feature即输出结果的shp选择对应的model进行发布,如图
在这里插入图片描述
右键model => share as => Geoprocessing service,如图,点击下一步
在这里插入图片描述

3、可修改服务名,如图
在这里插入图片描述

4、选择发布的路径,如图
在这里插入图片描述

5、设置发布的服务参数,优先选择同步服务,如图
在这里插入图片描述
可对Model中的参数,进行描述
在这里插入图片描述

7、设置完成后点击Analyze分析,分析如果没有错误,使用Publish发布GP服务

添加图片注释,不超过 140 字(可选)

代码部分

绘制线条

 const graphic = new self.Graphic({
            geometry: new self.Polyline({
              paths: polygon2,
              spatialReference: self.map.spatialReference
            }),
            symbol: {
              type: 'simple-line',
              color: [255, 255, 255],
              style: 'solid',
              width: 2
            }
          })

通过Geoprocessor请求GP服务,url即为gp服务的url,graphic即为上文中定义的graphic

drawBuffer (graphic) {
      const self = this
      const featureSet = new this.FeatureSet()
      featureSet.features = [graphic]
      const geop = new self.Geoprocessor(url)
      let params = {}
      params['InputHCQ'] = featureSet
      params['Distance'] = {
        distance: self.bufferDistance,
        units: 'esriMeters'
      }
      geop.outSpatialReference = {
        wkid: this.map.spatialReference.wkid
      }
      geop.execute(params).then(data => {
        console.log('测试', data)
        if (data.results.length > 0) {
          const graphic1 = new self.Graphic({
            geometry: data.results[0].value.features[0].geometry,
            symbol: {
              type: 'simple-fill',
              color: [0, 0, 255, 0.1],
              style: 'solid',
              outline: {
                color: 'white',
                width: 2
              }
            }
          })
          self.map.graphics.add(graphic1)
        }
      })
    },

效果如下

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值