arcgis api for js4.23 缓冲区的使用

已4.23版本为例,看一下官方文档中的示例如下:

arcgis api for js4.23 缓冲区的使用_第1张图片

 1、引用有两种方式,根据自己的项目选择要引入的方式。

arcgis api for js4.23 缓冲区的使用_第2张图片

2、引入需要的类

import SpatialReference from '@arcgis/core/geometry/SpatialReference';
import ProjectParameters from '@arcgis/core/rest/support/ProjectParameters';
import * as geometryService from '@arcgis/core/rest/geometryService';

import * as geometryEngine from '@arcgis/core/geometry/geometryEngine';


let geometry = null  //这里是需要缓冲的几何图形,这里可以是点、线、面。直接替换掉这里null即可

3、如果当前的坐标系不是4326,这里需要一步坐标系的转换,是4326可以跳过这一步骤。(我这里使用的坐标系是4490,并以4490为例。)

const  pGeometryServiceURL= "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Utilities/Geometry/GeometryServer"
const outSpatialReference = new SpatialReference({wkid: 4326}) //转化后的坐标系4326
const params = new ProjectParameters({
      geometries: [geometry],
      outSpatialReference: outSpatialReference,
      transformForward: true
})
geometryService.project(pGeometryServiceURL, params).then(geometrys => {
//这里的geometrys就是转换后的几何数组,传参有几个geometry这里返回就有几个
 this._bufferGeometry(geometrys[0])
})

4、用转换为4326的geometry进行缓冲

_bufferGeometry(geo){

const pthis = this
let bufferRadius = 500 //缓冲距离
let bufferUnit = "meters" //缓冲单位
let g2 = geometryEngine.geodesicBuffer(geo, bufferRadius, bufferUnit) 
//这里的g2就是缓冲后缓冲区,是个面!!!但是!!!现在坐标系是4326的,不是我们系统使用的4490,
//所以如果想把结果应用到项目中的话,需要把g2在进行一次坐标转换,把4326转换成4490


//使用和上边步骤一样,只不过是把4326换成4490,,,这里不在写一遍了。所以最好是把上边步骤封装成方法



}

这里的g2就是缓冲后缓冲区,是个面!!!但是!!!现在坐标系是4326的,不是我们系统使用的4490,所以如果想把结果应用到项目中的话,需要把g2在进行一次坐标转换,把4326转换成4490。使用和上边步骤一样,只不过是把4326换成4490,,,这里不在写一遍了。所以最好是把上边步骤3封装成方法

你可能感兴趣的:(arcgis,api,for,js,vue,arcgis)