@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 2.41 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import{__decorate as e}from"tslib";import{dedupeResult as t}from"../../../core/dedupeResult.js";import{equalsShallow as o}from"../../../core/lang.js";import{equalsMaybe as i}from"../../../core/maybe.js";import{watch as r,sync as n}from"../../../core/reactiveUtils.js";import{property as s,subclass as a}from"../../../core/accessorSupport/decorators.js";import{GeometryDescriptor as l}from"../../../layers/support/GeometryDescriptor.js";import{getVisibleLayerIds as c}from"./elevationProfileLayerUtils.js";import{ElevationProfileLineComputation as p}from"./ElevationProfileLineComputation.js";let u=class extends p{constructor(){super(...arguments),this.type="input",this.numSamplesForPreview=50,this.numSamplesPerChunk=500,this._getStableElevationDependencies=t(()=>{const{view:e}=this.controller;if(!e)return null;const t=this._getStableElevationInfo();return{view:e,stationary:!this._requiresElevationAlignment||e.stationary,elevationInfo:t,visibleLayerIds:this._getStableLayerIds(),spatialReference:this._getStableSpatialReference()}},o),this._getStableElevationInfo=t(()=>this.controller.elevationInfo,i),this._getStableSpatialReference=t(()=>this.controller.view?.spatialReference,i),this._getStableLayerIds=t(()=>{const{view:e}=this.controller;return"3d"!==e.type?[]:c(e)},o)}initialize(){const e=()=>this.onInvalidate(this);this.addHandles([r(()=>this._queryElevationDependencies,e,n),this.controller.onElevationChange(e)])}async queryElevation(e,{noDataValue:t,signal:o}){const i=this._queryElevationDependencies;if(null==i)throw new Error(`${this.declaredClass}: no dependencies`);const{view:r,spatialReference:n}=i;if(this._requiresElevationAlignment&&"3d"===r.type&&n){const i=await l.fromGeometry(e).project(n,o);if(!i)return{geometry:e,noDataValue:t};const s=r.elevationProvider;return i.coordinates.forEach(e=>{e.z=s.getElevation(e.x,e.y,0,n,"ground")??0}),{geometry:i.export(),noDataValue:t}}return{geometry:e,noDataValue:t}}get _requiresElevationAlignment(){return"on-the-ground"===this.controller.elevationInfo?.mode&&"3d"===this.controller.view.type}get _queryElevationDependencies(){return this._getStableElevationDependencies()}};e([s()],u.prototype,"_queryElevationDependencies",null),u=e([a("esri.views.analysis.ElevationProfile.ElevationProfileLineInputComputation")],u);export{u as ElevationProfileLineInputComputation};