UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 1.66 kB
import{isNone as t}from"../../core/maybe.js";import{createArea as o}from"../../core/quantityUtils.js";import{areaUnitFromSpatialReference as r}from"../../core/unitUtils.js";import{e as n}from"../../chunks/earcut.js";import{s as e,z as s,p as i}from"../../chunks/vec3.js";import{c}from"../../chunks/vec3f64.js";import{projectVectorToVector as f}from"../../geometry/projection.js";import{fromPoints as u,wrap as l,normal as m,projectPointLocal as p}from"../../geometry/support/plane.js";import{areaPoints2d as a}from"../../geometry/support/triangle.js";import{computeEuclideanMeasurementSR as g}from"./measurementUtils.js";function h(t,o=U()){return y(t,o)}function j(t,o=U()){return y(t,o,!1)}function y(n,h,j=n.hasZ){const y=g(n.spatialReference),U=r(y);if(t(U))return null;const C=(t,o)=>!(o.length<2)&&(e(t,o[0],o[1],j&&o[2]||0),!0);let R=0;for(const t of n.rings){const o=t.length;if(o<3)continue;const{positionsWorldCoords:r}=h;for(;r.length<o;)r.push(c());const g=d,j=e(k,0,0,0),U=1/o;for(let e=0;e<o;e++){if(!C(g,t[e]))return null;if(!f(g,n.spatialReference,r[e],y))return null;s(j,j,r[e],U)}const W=u(r[0],r[1],j,l());if(0===i(m(W)))continue;for(let t=0;t<o;t++)p(W,j,r[t],r[t]);const b=v(r);for(let t=0;t<b.length;t+=3)R+=a(r[b[t]],r[b[t+1]],r[b[t+2]])}return o(R,U)}const d=c(),k=c();function U(){return{positionsWorldCoords:[]}}function v(t){return n(C(t),[],2)}function C(t){const o=new Float64Array(2*t.length);for(let r=0;r<t.length;++r){const n=t[r],e=2*r;o[e+0]=n[0],o[e+1]=n[1]}return o}export{y as computeEuclideanPlanarArea,U as createEuclideanPlanarAreaCache,j as euclideanHorizontalPlanarArea,h as euclideanPlanarArea,v as triangulate};