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

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

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

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封装成方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值