UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

3 lines (2 loc) 4.18 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{ArcadeDate as t}from"../ArcadeDate.js";import{toSymbolId as n}from"../arcadeEnvironment.js";import{ArcadeExecutionError as r}from"../executionError.js";import{B as e,r as o,s as a}from"../../chunks/languageUtils.js";let c;async function s(){null==c&&(c=await import("../../geometry/operators/geodeticDistanceOperator.js"),await c.load())}function i(t){const n=t.track;if(null==n)throw new r(t,"InvalidParameter",null);return n}function u(t,n,r,e){const o=Math.max(0,f(t,n)),a=Math.max(0,f(t,r));return t.observations.slice(o,a).map((t,n)=>e(t,n+o))}function f(t,n){return t.currentObservationIndex+n}function l(t,n){const e=f(t,n);if(e<0||e>=t.observations.length)throw new r(null,"InvalidParameter",null);return e}function d(t,n){const{stats:r}=t.observations[n];if(null!=r.totalDistance)return r.totalDistance;if(0===n)return r.totalDistance=0;let e,o=0;for(e=n-1;e>0;e--){const n=t.observations[e].stats;if(null!=n.totalDistance){o=n.totalDistance;break}}for(let a=e+1;a<=n;a++){const n=t.observations[a];o+=m(t,a),n.stats.totalDistance=o}return o}function m(t,n){const r=t.observations[n],e=r.stats;if(null!=e.distance)return e.distance;if(0===n)return e.distance=0;const o=t.observations[n-1];return e.distance=c.execute(o.feature.geometry(),r.feature.geometry())}function T(t,n){const r=t.observations[n],e=r.stats;if(null!=e.speed)return e.speed;if(0===n)return e.speed=0;const o=t.observations[n-1],a=r.endTime-o.startTime;if(a<=0)return e.speed=0;const c=m(t,n);return e.speed=c/(a/1e3)}function v(t,n){const r=t.observations[n],e=r.stats;if(null!=e.acceleration)return e.acceleration;if(0===n)return e.acceleration=0;const o=t.observations[n-1],a=r.endTime-o.startTime;if(a<=0)return e.acceleration=0;const c=T(t,n),s=T(t,n-1);return e.acceleration=(c-s)/(a/1e3)}function b(r,c){r[n("TrackIndex")]=function(t,n){return c(t,n,(t,n,r)=>(e(r,0,0,t,n),i(t).currentObservationIndex))},r[n("TrackWindow")]=function(t,n){return c(t,n,(t,n,r)=>{e(r,2,2,t,n);const a=o(r[0]),c=o(r[1]);return u(i(t),a,c,t=>t.feature)})},r[n("TrackFieldWindow")]=function(t,n){return c(t,n,(t,n,r)=>{e(r,3,3,t,n);const c=a(r[0]),s=o(r[1]),f=o(r[2]);return u(i(t),s,f,t=>t.feature.field(c))})},r[n("TrackGeometryWindow")]=function(t,n){return c(t,n,(t,n,r)=>{e(r,2,2,t,n);const a=o(r[0]),c=o(r[1]);return u(i(t),a,c,t=>t.feature.geometry())})},r[n("TrackStartTime")]=function(n,r){return c(n,r,(n,r,o)=>(e(o,0,0,n,r),t.epochToArcadeDate(i(n).observations[0].startTime,n.timeZone??"system")))},r[n("TrackCurrentTime")]=function(n,r){return c(n,r,(n,r,o)=>{e(o,0,0,n,r);const a=i(n);return t.epochToArcadeDate(a.observations[a.currentObservationIndex].startTime,n.timeZone??"system")})},r[n("TrackDuration")]=function(t,n){return c(t,n,(t,n,r)=>{e(r,0,0,t,n);const o=i(t);return o.observations[o.currentObservationIndex].startTime-o.observations[0].startTime})},r[n("TrackCurrentDistance")]=function(t,n){return c(t,n,(t,n,r)=>{e(r,0,0,t,n);const o=i(t);return d(o,o.currentObservationIndex)})},r[n("TrackDistanceAt")]=function(t,n){return c(t,n,(t,n,r)=>{e(r,1,1,t,n);const a=o(r[0]),c=i(t);return d(c,l(c,a))})},r[n("TrackDistanceWindow")]=function(t,n){return c(t,n,(t,n,r)=>{e(r,2,2,t,n);const a=o(r[0]),c=o(r[1]),s=i(t);return u(s,a,c,(t,n)=>d(s,n))})},r[n("TrackCurrentSpeed")]=function(t,n){return c(t,n,(t,n,r)=>{e(r,0,0,t,n);const o=i(t);return T(o,o.currentObservationIndex)})},r[n("TrackSpeedAt")]=function(t,n){return c(t,n,(t,n,r)=>{e(r,1,1,t,n);const a=o(r[0]),c=i(t);return T(c,l(c,a))})},r[n("TrackSpeedWindow")]=function(t,n){return c(t,n,(t,n,r)=>{e(r,2,2,t,n);const a=o(r[0]),c=o(r[1]),s=i(t);return u(s,a,c,(t,n)=>T(s,n))})},r[n("TrackCurrentAcceleration")]=function(t,n){return c(t,n,(t,n,r)=>{e(r,0,0,t,n);const o=i(t);return v(o,o.currentObservationIndex)})},r[n("TrackAccelerationAt")]=function(t,n){return c(t,n,(t,n,r)=>{e(r,1,1,t,n);const a=o(r[0]),c=i(t);return v(c,l(c,a))})},r[n("TrackAccelerationWindow")]=function(t,n){return c(t,n,(t,n,r)=>{e(r,2,2,t,n);const a=o(r[0]),c=o(r[1]),s=i(t);return u(s,a,c,(t,n)=>v(s,n))})}}export{c as geodeticDistance,s as loadOperators,b as registerFunctions};