地理处理 - 视域分析

尝试一下在线预览

此示例演示如何使用地理处理器计算视域。单击地图上的任意点可查看 5 英里半径内可见的所有区域。模型可能需要几秒钟才能运行并发回结果。

视域计算通过 GeoScene Server 地理处理服务完成。该服务提供对服务器上包含视域工具的模型的访问。地理处理器方法需要服务的 URL。您可以使用服务目录来发现您自己的地理处理服务的 URL 及其中的方法。

工作原理

单击地图时,事件侦听器将调用函数 computeViewshed(),该函数在单击位置添加一个 SimpleMarkerSymbol。该函数还设置了该方法所需的两个参数。第一个参数是单击的点,第二个参数是视域的半径。

下一步是将参数传递给地理处理器和 execute() 以同步执行方法。请注意,也可以调用 submitJob() 以异步运行方法。execute 方法返回一个 promise,该承诺可与 .then() 方法一起使用以定义回调,在本例中为 drawResultData。 

          
1
2
3
4
5
6
7
8
9
10
const params = {
  Input_Observation_Point: featureSet,
  Viewshed_Distance: vsDistance
};
const options = {
  outSpatialReference: {
    wkid: 102100
  }
};
geoprocessor.execute(gpUrl, params, options).then(drawResultData);

drawResultData 回调函数获取存储在结果对象中的要素,循环访问这些要素,并对每个图形应用一个符号。然后,视图将动画化为生成的图形数组。

               
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const resultFeatures = result.results[0].value.features;

// Assign each resulting graphic a symbol
const viewshedGraphics = resultFeatures.map((feature) => {
  feature.symbol = fillSymbol;
  return feature;
});

// Add the resulting graphics to the graphics layer
graphicsLayer.addMany(viewshedGraphics);

view.goTo({
  target: viewshedGraphics,
  tilt: 0
});

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.