UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 3.21 kB
import{isNone as t,isSome as n}from"../../core/maybe.js";import{createLength as r}from"../../core/quantityUtils.js";import{lengthUnitFromSpatialReference as e,verticalLengthUnitFromSpatialReference as i}from"../../core/unitUtils.js";import{i as o,s as c}from"../../chunks/vec3.js";import{c as u}from"../../chunks/vec3f64.js";import{projectVectorToVector as l}from"../../geometry/projection.js";import{equals as a}from"../../geometry/support/spatialReferenceUtils.js";import{computeEuclideanMeasurementSR as s}from"./measurementUtils.js";var f;function p(t){return m(t,f.Direct)}function h(t){return m(t,f.Horizontal)}function m(n,i){const{hasZ:o,spatialReference:c}=n,u=s(c);let l=0;const a=e(u);if(t(a))return null;const p=i===f.Direct?j:d;for(const r of n.paths){if(r.length<2)continue;const n=r.length-1;for(let e=0;e<n;++e){const n=r[e];U[0]=n[0],U[1]=n[1],U[2]=o?n[2]:0;const i=r[e+1];b[0]=i[0],b[1]=i[1],b[2]=o?i[2]:0;const u=p(U,b,c);if(t(u))return null;l+=u.value}}return r(l,a)}function z(t,n){const{spatialReference:r}=t;return a(r,n.spatialReference)?(U[0]=t.x,U[1]=t.y,U[2]=t.hasZ?t.z:0,b[0]=n.x,b[1]=n.y,b[2]=n.hasZ?n.z:0,Z(U,b,r)):null}function y(t,n){const{spatialReference:r}=t;return a(r,n.spatialReference)?(U[0]=t.x,U[1]=t.y,U[2]=t.hasZ?t.z:0,b[0]=n.x,b[1]=n.y,b[2]=n.hasZ?n.z:0,j(U,b,r)):null}function R(t,n){const{spatialReference:r}=t;return a(r,n.spatialReference)?(U[0]=t.x,U[1]=t.y,U[2]=t.hasZ?t.z:0,b[0]=n.x,b[1]=n.y,b[2]=n.hasZ?n.z:0,d(U,b,r)):null}function v(t,n){const{spatialReference:r}=t;return a(r,n.spatialReference)?(U[0]=t.x,U[1]=t.y,U[2]=t.hasZ?t.z:0,b[0]=n.x,b[1]=n.y,b[2]=n.hasZ?n.z:0,D(U,b,r)):null}function x(t){return U[0]=t.x,U[1]=t.y,U[2]=t.hasZ?t.z:0,H(U,t.spatialReference)}function Z(t,e,i){const o=V(t,e,i);return n(o)?{direct:r(o.direct,o.unit),horizontal:r(o.horizontal,o.unit),vertical:r(o.vertical,o.unit)}:null}function j(t,e,i){const o=V(t,e,i,f.Direct);return n(o)?r(o.direct,o.unit):null}function d(t,e,i){const o=V(t,e,i,f.Horizontal);return n(o)?r(o.horizontal,o.unit):null}function g(t,e,i){const o=V(t,e,i,f.Vertical);return n(o)?r(Math.abs(o.verticalSigned),o.unit):null}function D(t,e,i){const o=V(t,e,i,f.Vertical);return n(o)?r(o.verticalSigned,o.unit):null}function H(t,e){const o=i(e);return n(o)?r(t[2],o):null}function V(n,r,i,u){const a=s(i),p=e(a);if(t(p))return null;const h=r[2]-n[2];if(u===f.Vertical)return{verticalSigned:h,unit:p};if(!l(n,i,S,a)||!l(r,i,k,a))return null;if(u===f.Direct){return{direct:o(k,S),unit:p}}if(c(M,n[0],n[1],r[2]),!l(M,i,M,a))return null;const m=o(M,k);if(u===f.Horizontal)return{horizontal:m,unit:p};return{direct:o(k,S),horizontal:m,vertical:Math.abs(h),unit:p}}!function(t){t[t.Direct=0]="Direct",t[t.Horizontal=1]="Horizontal",t[t.Vertical=2]="Vertical"}(f||(f={}));const U=u(),b=u(),S=u(),k=u(),M=u();export{H as elevation,x as elevationOfPoint,j as euclideanDirectDistance,y as euclideanDirectDistanceBetweenPoints,Z as euclideanDistance,z as euclideanDistanceBetweenPoints,d as euclideanHorizontalDistance,R as euclideanHorizontalDistanceBetweenPoints,h as euclideanHorizontalLength,p as euclideanLength,g as verticalDistance,D as verticalSignedDistance,v as verticalSignedDistanceBetweenPoints};