arcgis js 4.x 缓冲区分析
时间: 2023-09-16 17:11:54 浏览: 171
在ArcGIS API for JavaScript 4.x中,可以使用BufferViewModel模块进行缓冲区分析。以下是一个基本的缓冲区分析示例:
```javascript
require([
"esri/Map",
"esri/views/MapView",
"esri/layers/GraphicsLayer",
"esri/Graphic",
"esri/widgets/Sketch/SketchViewModel",
"esri/widgets/Buffer/BufferViewModel",
"dojo/domReady!"
], function(Map, MapView, GraphicsLayer, Graphic, SketchViewModel, BufferViewModel) {
// 创建地图对象
var map = new Map({
basemap: "streets-navigation-vector"
});
// 创建地图视图
var view = new MapView({
container: "viewDiv",
map: map,
center: [-118.15, 33.80],
zoom: 13
});
// 创建一个图形图层
var graphicsLayer = new GraphicsLayer();
map.add(graphicsLayer);
// 创建一个 SketchViewModel 实例
var sketchViewModel = new SketchViewModel({
view: view,
layer: graphicsLayer,
pointSymbol: {
type: "simple-marker",
style: "circle",
size: 12,
color: [255, 255, 255],
outline: {
color: [0, 0, 0],
width: 1
}
},
polylineSymbol: {
type: "simple-line",
color: [0, 0, 0],
width: 2
},
polygonSymbol: {
type: "simple-fill",
color: [255, 255, 255, 0.8],
style: "solid",
outline: {
color: [0, 0, 0],
width: 1
}
}
});
// 创建一个 BufferViewModel 实例
var bufferViewModel = new BufferViewModel({
view: view,
spatialReference: view.spatialReference,
unit: "miles",
bufferDistance: 1,
geodesic: true,
graphic: null
});
// 监听 sketchViewModel 的 create 事件,当绘制完图形后,创建一个缓冲区
sketchViewModel.on("create", function(event) {
if (event.state === "complete") {
// 将绘制的图形添加到图形图层
graphicsLayer.add(event.graphic);
// 设置缓冲区的 graphic 属性
bufferViewModel.graphic = event.graphic;
// 创建缓冲区
bufferViewModel.createBuffer().then(function(bufferedGraphic) {
// 将缓冲区添加到图形图层
graphicsLayer.add(bufferedGraphic);
});
}
});
});
```
在这个示例中,我们首先创建了一个地图和一个地图视图。然后,我们创建了一个图形图层和一个 SketchViewModel 实例,用于允许用户在地图上绘制图形。我们还创建了一个 BufferViewModel 实例,其中包含了一些缓冲区分析的参数,例如缓冲区距离单位和是否使用大地线计算缓冲区。当用户完成绘制图形后,我们将绘制的图形传递给 BufferViewModel 实例,并使用 createBuffer() 方法创建缓冲区。最后,我们将缓冲区添加到图形图层中。
阅读全文