UNPKG

@arcgis/core

Version:

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

3 lines (2 loc) • 8.06 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import n from"../core/Error.js";import{throwIfAborted as e,waitTick as r}from"../core/promiseUtils.js";import{trackAccess as t}from"../core/accessorSupport/tracking.js";import{SimpleObservable as o}from"../core/accessorSupport/tracking/SimpleObservable.js";import{create as i}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{assertNotMeshes as s,assertNotMesh as a}from"./asserts.js";import{isSphericalECEF as l,isSphericalPCPF as u}from"./ellipsoidUtils.js";import c from"./Extent.js";import f from"./Geometry.js";import p from"./Multipoint.js";import m from"./Point.js";import h from"./Polygon.js";import g from"./Polyline.js";import d from"./SpatialReference.js";import{WGS84ECEFSpatialReference as j}from"./spatialReferenceEllipsoidUtils.js";import y from"./operators/support/GeographicTransformation.js";import{projectBuffer as R}from"./projection/projectBuffer.js";import{getProjector as x}from"./projection/projectors.js";import{projectXYZToVector as w}from"./projection/projectXYZToVector.js";import{isPoint as v,isExtent as S,isPolygon as A,isPolyline as M,isMultipoint as T}from"./support/jsonTypeUtils.js";import{equals as z,isValid as Z,isWGS84 as b,isWebMercator as P,isCGCS2000 as k}from"./support/spatialReferenceUtils.js";import{isEllipticArc as U,isCircularArc as E,isBezierCurve as G,getEndpoint as O}from"./support/curves/curveUtils.js";let C=null,D=null,W=null,I=null,L={};const B=new o;function V(){return!!(D?.isLoaded()&&W?.isLoaded()&&I?.isLoaded())}function X(){return!!V()||(t(B),F(),!1)}function Y(n,e){return!n||!e||(tn(n,e)||X())}function q(n,e){return!tn(n,e)&&!V()}async function F(n){null==C&&(C=Promise.all([import("./operators/projectOperator.js").then(n=>(D=n,D.load())),import("./operators/json/projectOperator.js").then(n=>(W=n,W.load())),import("./operators/support/geographicTransformationUtils.js").then(n=>(I=n,I.load()))])),await C,e(n),B.notify()}function H(n,e,r){return Array.isArray(n)?0===n.length?[]:(s(n),J(n,n[0].spatialReference,e,r)):(a(n),J([n],n.spatialReference,e,r)[0])}function J(n,e,r,t){if(null==e||null==r)return n;if(tn(e,r,t))return n.map(n=>an(n,e,r));if(null==t?.geographicTransformation&&l(e)){return J(n.map(n=>an(n,e,d.WGS84)),d.WGS84,r,{zConversionDisabled:t?.zConversionDisabled})}if(null==t?.geographicTransformation&&l(r)){return J(n,e,d.WGS84).map(n=>an(n,d.WGS84,r))}if(!V())throw new _;if(!t?.geographicTransformation)if(t?.extendedParams)t={...t,geographicTransformation:I.getTransformation(e,r,t.areaOfInterestExtent)||new y};else if(!t?.areaOfInterestExtent){const n=K(e,r);let o=L[n];o||(o=I.getTransformation(e,r)||new y,L[n]=o),t={geographicTransformation:o,zConversionDisabled:t?.zConversionDisabled}}return n[0].spatialReference||(n[0].spatialReference=e),n[0]instanceof f?D.executeMany(n,r,t):W.executeMany(n,r,t)}function K(n,e){return[n.wkid?.toString()??"-1",n.wkt?.toString()??"",n.wkt2?.toString()??"",e.wkid?.toString()??"-1",e.wkt?.toString()??"",e.wkt2?.toString()??""].join()}function N(n,e,r){try{return H(n,e,r)}catch(t){return null}}function Q(n,e){const r=$([n],e);return null!=r.pending?{pending:r.pending,geometry:null}:null!=r.geometries?{pending:null,geometry:r.geometries[0]}:{pending:null,geometry:null}}function $(n,e,r){if(!V())for(const o of n)if(null!=o&&!z(o.spatialReference,e)&&Z(o.spatialReference)&&Z(e)&&!tn(o.spatialReference,e))return t(B),{pending:F(),geometries:null};return{pending:null,geometries:n.map(n=>null==n?null:z(n.spatialReference,e)?n:Z(n.spatialReference)&&Z(e)?H(n,e,r):null)}}class _ extends n{constructor(){super("projection:not-loaded","projection engine not fully loaded yet, please call load()")}}function nn(){C=null,D=null,W=null,I=null,L={}}const en={get loadPromise(){return C}};async function rn(n,r,t){if(e(t),!n)return n;const o=$(Array.isArray(n)?n:[n],r,t);if(o.pending)return await o.pending,e(t),rn(n,r,t);const i=o.geometries??[];return Array.isArray(n)?i:i[0]}function tn(n,e,r){return!(r?.areaOfInterestExtent||r?.extendedParams||r?.geographicTransformation)&&(!!z(n,e)||Z(n)&&Z(e)&&!!x(n,e))}function on(n,e){if(z(n,e))return!0;if(!Z(n)||!Z(e))return!1;const r=b(n)||P(n)||k(n),t=b(e)||P(e)||k(e);return r&&t}async function sn(n,e,t,o){if(V())return r(o);if(Array.isArray(n)){for(const{source:r,dest:i,options:s}of n)if(r&&i&&!tn(r,i,s))return F(o)}else if(n&&e&&!tn(n,e,t))return F(o);return r(o)}function an(n,e,r){return n?v(n)?un(n,e,new m,r,0):S(n)?jn(n,e,new c,r,0):A(n)?gn(n,e,new h,r,0):M(n)?mn(n,e,new g,r,0):T(n)?fn(n,e,new p,r,0):null:null}function ln(n,e,r=e.spatialReference,t=0){return null!=r&&null!=n.spatialReference&&null!=un(n,n.spatialReference,e,r,t)}function un(n,e,r,t,o){wn[0]=n.x,wn[1]=n.y;const i=n.z;return wn[2]=void 0!==i?i:o,R(wn,e,0,wn,t,0)?(r.x=wn[0],r.y=wn[1],r.spatialReference=t,void 0!==i||u(t)?(r.z=wn[2],r.hasZ=!0):(r.z=void 0,r.hasZ=!1),void 0===n.m?(r.m=void 0,r.hasM=!1):(r.m=n.m,r.hasM=!0),r):null}function cn(n,e,r=e.spatialReference,t=0){return null!=n.spatialReference&&null!=r&&null!=fn(n,n.spatialReference,e,r,t)}function fn(n,e,r,t,o){const{points:i,hasZ:s,hasM:a}=n,l=[],u=i.length,c=[];for(const p of i)c.push(p[0],p[1],s?p[2]:o);if(!R(c,e,0,c,t,0,u))return null;const f=xn(s,t);for(let p=0;p<u;++p){const n=3*p,e=c[n],r=c[n+1];f&&a?l.push([e,r,c[n+2],i[p][3]]):f?l.push([e,r,c[n+2]]):a?l.push([e,r,i[p][2]]):l.push([e,r])}return r.points=l,r.spatialReference=t,r.hasZ=s,r.hasM=a,r}function pn(n,e,r=e.spatialReference,t=0){return null!=n.spatialReference&&null!=r&&null!=mn(n,n.spatialReference,e,r,t)}function mn(n,e,r,t,o){const{curvePaths:i,paths:s,hasZ:a,hasM:l}=n;if(!(i?Rn(i,a??!1,l??!1,e,r.curvePaths=[],t,o):yn(s,a??!1,l??!1,e,r.paths,t,o)))return null;const u=xn(a,t);return r.spatialReference=t,r.hasZ=u,r.hasM=l,r}function hn(n,e,r=e.spatialReference,t=0){return null!=n.spatialReference&&null!=r&&null!=gn(n,n.spatialReference,e,r,t)}function gn(n,e,r,t,o){const{curveRings:i,rings:s,hasZ:a,hasM:l}=n;return(i?Rn(i,a??!1,l??!1,e,r.curveRings=[],t,o):yn(s,a??!1,l??!1,e,r.rings,t,o))?(r.spatialReference=t,r.hasZ=xn(a,t),r.hasM=l,r):null}function dn(n,e,r=e.spatialReference,t=0){return null!=n.spatialReference&&null!=r&&null!=jn(n,n.spatialReference,e,r,t)}function jn(n,e,r,t,o){const{xmin:i,ymin:s,xmax:a,ymax:l,hasZ:u,hasM:c}=n,f=u?n.zmin:o;if(!w(i,s,f,e,wn,t))return null;const p=xn(u,t);r.xmin=wn[0],r.ymin=wn[1],p&&(r.zmin=wn[2]);const m=u?n.zmax:o;return w(a,l,m,e,wn,t)?(r.xmax=wn[0],r.ymax=wn[1],p&&(r.zmax=wn[2]),c&&(r.mmin=n.mmin,r.mmax=n.mmax),r.spatialReference=t,r):null}function yn(n,e,r,t,o,i,s=0){const a=new Array;for(const f of n)for(const n of f)a.push(n[0],n[1],e?n[2]:s);if(!R(a,t,0,a,i,0))return!1;let l=0;o.length=0;const u=e?3:2,c=xn(e,i);for(const f of n){const n=new Array;for(const e of f){const t=a.slice(l,l+=3);c||t.pop(),r&&t.push(e[u]),n.push(t)}o.push(n)}return!0}function Rn(n,e,r,t,o,i,s=0){const a=new Array;for(const f of n)for(const n of f){if(U(n))return!1;if(E(n)){const[r,t]=n.c;a.push(r[0],r[1],e?r[2]:s,t[0],t[1],s);continue}if(G(n)){const[r,t,o]=n.b;a.push(r[0],r[1],e?r[2]:s,t[0],t[1],s,o[0],o[1],s);continue}const r=n;a.push(r[0],r[1],e?r[2]:s)}if(!R(a,t,0,a,i,0))return!1;let l=0;o.length=0;const u=e?3:2,c=xn(e,i);for(const f of n){const n=new Array;for(const e of f){const t=a.slice(l,l+=3);if(c||t.pop(),r&&t.push(O(e)[u]),U(e))return!1;if(E(e)){const e=a[l++],r=a[l++];++l,n.push({c:[t,[e,r]]});continue}if(G(e)){const e=a[l++],r=a[l++];++l;const o=a[l++],i=a[l++];++l,n.push({b:[t,[e,r],[o,i]]});continue}n.push(t)}o.push(n)}return!0}function xn(n,e){return n||u(e)||z(e,j)}const wn=i();export{tn as canProjectWithoutEngine,sn as initializeProjection,on as isEqualBaseGCS,V as isLoaded,X as isLoadedOrLoad,Y as isLoadedOrLoadFor,F as load,H as project,rn as projectAsync,dn as projectExtent,J as projectMany,cn as projectMultipoint,Q as projectOrLoad,$ as projectOrLoadMany,ln as projectPoint,hn as projectPolygon,pn as projectPolyline,an as projectWithoutEngine,q as requiresLoad,en as test,N as tryProject,nn as unload};