缓冲区分析—ArcGIS API for JavaScript

本文详细介绍了如何使用ArcGIS API for JavaScript进行缓冲区分析,包括GeometryService的介绍,创建缓冲区的步骤,配置BufferParameters以及生成缓冲区的代码示例,展示了在地图上实现缓冲区效果的方法。
摘要由CSDN通过智能技术生成

缓冲区分析是地理信息系统中的空间分析基本功能之一,是众多空间分析方法的基础。缓冲区分析是指为了识别某地理实体或空间物体对其周围的邻近性或影响度而在其周围建立的一定宽度的带状区。

缓冲区介绍

缓冲区分析是地理信息系统最重要和最基本的空间操作功能之一。缓冲区指的是以点、线、面实体基础,在其周边建立一定范围的面状区域。缓冲区在空间分析中是十分常见的,例如:
- 点缓冲区分析:噪音污染源所影响的一定空间范围、爆炸影响范围等;
- 线缓冲区分析:道路两侧绿化面积、江景楼盘面积等;
- 面缓冲区分析:公共设施(商场、邮局、银行、医院等)的服务半径,大型水库建设引起的搬迁等

本文主要介绍如何使用ArcGIS API for JavaScript建立点线面的缓冲区。

GeometryService介绍

GeometryService是一个可以用来调用ArcGIS Server的几何服务的工具类,通过GeometryService,我们可以很简便的做一些基本的几何操作,比如联合、剪切、简化以及缓冲区等,本文主要介绍缓冲区操作。
GeometryService的构造函数只有一个参数,一个有效的符合ArcGIS REST风格的GeometryServer服务地址:

var geometryService=new GeometryService("https://utility.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer");

我们可以使用ArcGIS公开的服务地址:https://utility.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer。但是该服务毕竟在国外的服务器,稳定性不强,如果大家有自己的ArcGIS Server,可以直接使用ArcGIS server中自带的几何服务,获取方法如下:
1、登入ArcGIS Server Manager,在【utilities】文件夹下找到几何服务

2、点击【功能】REST URL即我们需要的地址

创建缓冲区

获得需要绘制缓冲区的几何图形

在创建缓冲区前我们要先指定要绘制缓冲区的图形,我们的需求一般分两种:
- 给已有图层的图形绘制缓冲区;
- 动态绘制图形,然后自动创建缓冲区;

如果是我们要给图层的图形创建缓冲区,我们可以调用FeatureLayer.graphics获得一个Graphic数组,然后再分别获得Graphic.geometry获得一个图形数组:

var featureLayer=new FeatureLayer(...)
featureLayer.on("load",function(){
    for(var i=0;i<featureLayer.graphics.length;i++){
        var geometries=featureLayer.graphics[i].geometry
    }
})

这个图形数组也可以是通过查询获得,具体做法请参考空间查询—ArcGIS API for JavaScript

我们也可以直接添加图形,然后自动给这个图形创建缓冲区:

var points=[new Point(116.026,28.6826),new Point(116.05,28.66),new Point(116.11,28.70),new Point(115.95,28.65)];
var polylines=[new Polyline([[115.88,28.70],[115.88,28.67]]),new Polyline([[115.82,28.64],[115.89,28.59]])];
var polygons=[new Polygon([[115.798499,28.783553],[115.75998,28.895433],[115.900834,28.821535],[115.785276,28.759237],[115.713987,28.733902]])];
map.on("load",function(){
   

    var lineSymbol=new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,new Color([255,0,0]), 4)

    var markerSymbol=new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 10,
                new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,new Color([100,100,100,0.1]), 1),
                new Color([255,0,0]));

    var fillSymbol=new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, 
                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值