GeometryEngine使用
缓冲区分析,面积计算
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>与你共享一颗行星是我的荣幸</title>
<!-- 引用在线arcgis api -->
<link rel="stylesheet" href="https://js.arcgis.com/4.16/esri/themes/light/main.css" />
<script src="https://js.arcgis.com/4.16/"></script>
<!-- 引入jquery -->
<script src="js/jquery-2.0.3.min.js"></script>
<style>
html,
body,
#viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>
<script>
require([
"esri/Map",
"esri/Basemap",
"esri/views/MapView",
"esri/views/SceneView",
"esri/geometry/Extent",
"esri/geometry/SpatialReference",
"esri/geometry/Point",
"esri/geometry/Polyline",
"esri/geometry/Polygon",
"esri/Graphic",
"esri/widgets/Sketch",
"esri/Color",
"esri/layers/support/TileInfo",
"esri/layers/WebTileLayer",
"esri/views/layers/LayerView",
"esri/layers/TileLayer",
"esri/layers/MapImageLayer",
"esri/layers/FeatureLayer",
"esri/layers/GraphicsLayer",
"esri/symbols/SimpleMarkerSymbol",
"esri/symbols/SimpleFillSymbol",
"esri/symbols/SimpleLineSymbol",
"esri/tasks/support/BufferParameters",
"esri/tasks/GeometryService",
"esri/core/urlUtils",
"esri/tasks/FindTask",
"esri/tasks/support/FindParameters",
"esri/tasks/QueryTask",
"esri/tasks/support/Query",
"esri/tasks/IdentifyTask",
"esri/geometry/geometryEngine",
"dojo/dom",
"dojo/on",
"dojo/domReady!"
], function(
Map,
Basemap,
MapView,
SceneView,
Extent,
SpatialReference,
Point,
Polyline,
Polygon,
Graphic,
Sketch,
Color,
TileInfo,
WebTileLayer,
LayerView,
TileLayer,
MapImageLayer,
FeatureLayer,
GraphicsLayer,
SimpleMarkerSymbol,
SimpleFillSymbol,
SimpleLineSymbol,
BufferParameters,
GeometryService,
urlUtils,
FindTask,
FindParameters,
QueryTask,
Query,
IdentifyTask,
geometryEngine,
dom,
on) {
//创建一个地图Map实例
var layer = new MapImageLayer({
url: "http://localhost:6080/arcgis/rest/services/Qingdao1/MapServer"
});
var map = new Map({ //属性:allLayers、ground、layers
basemap: "topo",
layers: [layer]
});
var view = new MapView({
container: "viewDiv",
map: map,
zoom: 12,
center: [120.362562, 36.093745] // longitude, latitude 青岛市
});
var queryTask = new QueryTask({
url: "http://localhost:6080/arcgis/rest/services/Qingdao1/MapServer/4"
});
var query = new Query();
query.where = "Name = '行政区C'";
//返回所有字段
query.outFields = ["*"];
//返回几何信息。
query.returnGeometry = true;
queryTask.execute(query).then(function(results) {
var v = results.features[0].geometry;
bufferAnalysis(v);
var s = geometryEngine.planarArea(v, "square-meters");
console.log(s);
});
//缓冲区分析
function bufferAnalysis(geometry) {
var buffer = geometryEngine.buffer(geometry, 0.1, "kilometers", false);
var polySym = {
type: "simple-fill",
color: [51, 102, 255],
outline: {
color: [0, 255, 0],
width: 2
}
};
view.graphics.add((new Graphic({
geometry: buffer,
symbol: polySym
})));
};
});
</script>
</head>
<body>
<div id="viewDiv"></div>
</body>
</html>