当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JavaScript esri/layers/ElevationLayer.queryElevation用法及代码示例

基本信息

以下是所在类或对象的基本信息。

AMD: require(["esri/layers/ElevationLayer"], (ElevationLayer) => { /* code goes here */ });

ESM: import ElevationLayer from "@arcgis/core/layers/ElevationLayer";

类: esri/layers/ElevationLayer

继承: ElevationLayer > Layer > Accessor

自从:用于 JavaScript 4.0 的 ArcGIS API

用法说明

esri/layers/ElevationLayer.queryElevation函数(或属性)的定义如下:

queryElevation (geometry, options) {Promise<ElevationQueryResult>}


查询服务图层以获取给定几何的高程值。返回的结果包含几何的副本,其中 z-values 从服务的高程数据中采样。可以使用demResolution 选项设置查询高程的分辨率。在许多情况下,auto demResolution 可用于获取高质量的高程样本,而无需知道服务中数据的确切位置。这对于组合来自多个来源的高程数据的服务(例如世界高程服务)特别有用。如果需要更多控制或更高质量的样本,请使用finest-contiguous 或固定的{number} 分辨率。

参数:

规格:
类型说明

用于对高程数据进行采样的几何图形。

options Object
可选的

其他查询选项。请参见下表。

规格:
demResolution

Number|String

可选的
默认值:汽车

控制水平分辨率(像元大小),以米为单位进行高程数据采样(默认为 auto )。有关不同设置的更多详细信息,请参见下表。

分辨率 说明
auto 自动为输入几何的每个坐标选择适当的分辨率。当前的实现将尝试使用最好的可用分辨率,因为所需的磁贴请求总数不超过某个最大数量(当前为 20)。请注意,这可能会导致从不同分辨率采样值。
finest-contiguous 从整个几何图形的最佳可用分辨率(像元大小)中采样高程。
{number} 从最接近指定分辨率的分辨率采样高程(以米为单位)。
returnSampleInfo

Boolean

可选的
默认值:错误的

指示是否返回每个坐标的附加样本信息。

noDataValue

Number

可选的
默认值: 0

没有可用数据时使用的值。

signal

AbortSignal

可选的

AbortSignal 用于中止请求。如果取消,promise 将被拒绝,并出现名为 AbortError 的错误。另见AbortController

返回:

类型 说明
Promise<ElevationQueryResult> 解析为具有采样几何、分辨率信息且无数据值的对象。

例子:

require(["esri/layers/ElevationLayer", "esri/geometry/Multipoint"], function (
 ElevationLayer,
 Multipoint
) {
 const url =
   "//elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer/";
 const layer = new ElevationLayer(url);

 // Various points across a ridge of the mount everest
 const points = [
   [86.9252, 27.9883],
   [86.9265, 27.9894],
   [86.9292, 27.9923],
   [86.9324, 27.996],
   [86.9359, 27.9992]
 ];

 // Uses "auto" resolution by default
 layer
   .queryElevation(new Multipoint({ points }), {
     returnSampleInfo: true
   })

   // Successfully sampled all points
   .then(function (result) {
     // Print result of each sampled point to the console
     result.geometry.points.forEach(function (point, index) {
       const elevation = Math.round(point[2]);
       const resolution = result.sampleInfo[index].demResolution;

       const coordinateText = "(" + point[0] + ", " + point[1] + ")";
       const resolutionText = Math.round(resolution) + " meter resolution";

       console.log("Sampled " + coordinateText + ": " + elevation + " at " + resolutionText);
     });
   })

   // Failed to sample (e.g. service unavailable)
   .catch(function (error) {
     console.error("Failed to query elevation:", error);
   });
});

相关用法

注:本文由堆栈答案筛选整理自arcgis.com大神的英文原创作品 esri/layers/ElevationLayer.queryElevation。非经特殊声明,原始代码版权归原作者所有,本译文的传播和使用请遵循“署名-相同方式共享 4.0 国际 (CC BY-SA 4.0)”协议。