UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) • 8.95 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{clamp as n,rad2deg as C,deg2rad as E,asinClamped as l}from"../../core/mathUtils.js";import{getMetersPerUnitForSR as e}from"../../core/unitUtils.js";import{isSphericalECEF as t,WGS84ECEFSpatialReferenceLike as S,SphericalPCPFMarsLike as r,SphericalPCPFMoonLike as u}from"../ellipsoidUtils.js";import{moon as R,mars as a,earth as P}from"../support/Ellipsoid.js";import{earthEllipsoidConstants as A}from"../support/geodesicConstants.js";import{equals as _,isWGS84 as s,isWebMercator as c,isPlateCarree as M,isMars as o,isMoon as i}from"../support/spatialReferenceUtils.js";import{SupportedGCSWkids as O}from"../support/SupportedGCSWkids.js";var N;!function(n){n[n.UNKNOWN=0]="UNKNOWN",n[n.SPHERICAL_ECEF=1]="SPHERICAL_ECEF",n[n.WGS84=2]="WGS84",n[n.WEB_MERCATOR=3]="WEB_MERCATOR",n[n.WGS84_ECEF=4]="WGS84_ECEF",n[n.CGCS2000=5]="CGCS2000",n[n.SPHERICAL_MARS_PCPF=6]="SPHERICAL_MARS_PCPF",n[n.GCSMARS2000=7]="GCSMARS2000",n[n.SPHERICAL_MOON_PCPF=8]="SPHERICAL_MOON_PCPF",n[n.GCSMOON2000=9]="GCSMOON2000",n[n.LON_LAT=10]="LON_LAT",n[n.PLATE_CARREE=11]="PLATE_CARREE"}(N||(N={}));const L={[N.WGS84]:{[N.CGCS2000]:I,[N.GCSMARS2000]:null,[N.GCSMOON2000]:null,[N.LON_LAT]:I,[N.SPHERICAL_ECEF]:y,[N.SPHERICAL_MARS_PCPF]:null,[N.SPHERICAL_MOON_PCPF]:null,[N.UNKNOWN]:null,[N.WEB_MERCATOR]:d,[N.PLATE_CARREE]:U,[N.WGS84]:I,[N.WGS84_ECEF]:Y},[N.CGCS2000]:{[N.CGCS2000]:I,[N.GCSMARS2000]:null,[N.GCSMOON2000]:null,[N.LON_LAT]:I,[N.SPHERICAL_ECEF]:y,[N.SPHERICAL_MARS_PCPF]:null,[N.SPHERICAL_MOON_PCPF]:null,[N.UNKNOWN]:null,[N.WEB_MERCATOR]:d,[N.PLATE_CARREE]:U,[N.WGS84]:I,[N.WGS84_ECEF]:Y},[N.GCSMARS2000]:{[N.CGCS2000]:null,[N.GCSMARS2000]:I,[N.GCSMOON2000]:null,[N.LON_LAT]:I,[N.SPHERICAL_ECEF]:null,[N.SPHERICAL_MARS_PCPF]:x,[N.SPHERICAL_MOON_PCPF]:null,[N.UNKNOWN]:null,[N.WEB_MERCATOR]:null,[N.PLATE_CARREE]:null,[N.WGS84]:null,[N.WGS84_ECEF]:null},[N.GCSMOON2000]:{[N.CGCS2000]:null,[N.GCSMARS2000]:null,[N.GCSMOON2000]:I,[N.LON_LAT]:I,[N.SPHERICAL_ECEF]:null,[N.SPHERICAL_MARS_PCPF]:null,[N.SPHERICAL_MOON_PCPF]:k,[N.UNKNOWN]:null,[N.WEB_MERCATOR]:null,[N.PLATE_CARREE]:null,[N.WGS84]:null,[N.WGS84_ECEF]:null},[N.WEB_MERCATOR]:{[N.CGCS2000]:T,[N.GCSMARS2000]:null,[N.GCSMOON2000]:null,[N.LON_LAT]:T,[N.SPHERICAL_ECEF]:p,[N.SPHERICAL_MARS_PCPF]:null,[N.SPHERICAL_MOON_PCPF]:null,[N.UNKNOWN]:null,[N.WEB_MERCATOR]:I,[N.PLATE_CARREE]:K,[N.WGS84]:T,[N.WGS84_ECEF]:H},[N.WGS84_ECEF]:{[N.CGCS2000]:Z,[N.GCSMARS2000]:null,[N.GCSMOON2000]:null,[N.LON_LAT]:Z,[N.SPHERICAL_ECEF]:$,[N.SPHERICAL_MARS_PCPF]:null,[N.SPHERICAL_MOON_PCPF]:null,[N.UNKNOWN]:null,[N.WEB_MERCATOR]:nn,[N.PLATE_CARREE]:w,[N.WGS84]:Z,[N.WGS84_ECEF]:I},[N.SPHERICAL_ECEF]:{[N.CGCS2000]:J,[N.GCSMARS2000]:null,[N.GCSMOON2000]:null,[N.LON_LAT]:J,[N.SPHERICAL_ECEF]:I,[N.SPHERICAL_MARS_PCPF]:null,[N.SPHERICAL_MOON_PCPF]:null,[N.UNKNOWN]:null,[N.WEB_MERCATOR]:Q,[N.PLATE_CARREE]:B,[N.WGS84]:J,[N.WGS84_ECEF]:V},[N.SPHERICAL_MARS_PCPF]:{[N.CGCS2000]:null,[N.GCSMARS2000]:D,[N.GCSMOON2000]:null,[N.LON_LAT]:D,[N.SPHERICAL_ECEF]:null,[N.SPHERICAL_MARS_PCPF]:I,[N.SPHERICAL_MOON_PCPF]:null,[N.UNKNOWN]:null,[N.WEB_MERCATOR]:null,[N.PLATE_CARREE]:null,[N.WGS84]:null,[N.WGS84_ECEF]:null},[N.SPHERICAL_MOON_PCPF]:{[N.CGCS2000]:null,[N.GCSMARS2000]:null,[N.GCSMOON2000]:z,[N.LON_LAT]:z,[N.SPHERICAL_ECEF]:null,[N.SPHERICAL_MARS_PCPF]:null,[N.SPHERICAL_MOON_PCPF]:I,[N.UNKNOWN]:null,[N.WEB_MERCATOR]:null,[N.PLATE_CARREE]:null,[N.WGS84]:null,[N.WGS84_ECEF]:null},[N.UNKNOWN]:{[N.CGCS2000]:null,[N.GCSMARS2000]:null,[N.GCSMOON2000]:null,[N.LON_LAT]:null,[N.SPHERICAL_ECEF]:null,[N.SPHERICAL_MARS_PCPF]:null,[N.SPHERICAL_MOON_PCPF]:null,[N.UNKNOWN]:I,[N.WEB_MERCATOR]:null,[N.PLATE_CARREE]:null,[N.WGS84]:null,[N.WGS84_ECEF]:null},[N.LON_LAT]:{[N.CGCS2000]:I,[N.GCSMARS2000]:I,[N.GCSMOON2000]:I,[N.LON_LAT]:I,[N.SPHERICAL_ECEF]:y,[N.SPHERICAL_MARS_PCPF]:x,[N.SPHERICAL_MOON_PCPF]:k,[N.UNKNOWN]:null,[N.WEB_MERCATOR]:d,[N.PLATE_CARREE]:U,[N.WGS84]:I,[N.WGS84_ECEF]:Y},[N.PLATE_CARREE]:{[N.CGCS2000]:m,[N.GCSMARS2000]:null,[N.GCSMOON2000]:null,[N.LON_LAT]:m,[N.SPHERICAL_ECEF]:j,[N.SPHERICAL_MARS_PCPF]:null,[N.SPHERICAL_MOON_PCPF]:null,[N.UNKNOWN]:null,[N.WEB_MERCATOR]:q,[N.PLATE_CARREE]:I,[N.WGS84]:m,[N.WGS84_ECEF]:g}};function G(n,C){return F(n,C)?.projector}function F(n,C){if(null==n||null==C)return null;if(Cn.source.spatialReference===n&&Cn.dest.spatialReference===C)return Cn;const E=f(n,Cn.source),l=f(C,Cn.dest);return E===N.UNKNOWN&&l===N.UNKNOWN?_(n,C)?Cn.projector=I:Cn.projector=null:Cn.projector=L[E][l],Cn}function W(n,C){switch(G(n,C)){case I:return"copy3";case y:return"wgs84ToSphericalECEF";case d:return"wgs84ToWebMercator";case U:return"wgs84ToPlateCarree";case Y:return"wgs84ToWGS84ECEF";case T:return"webMercatorToWGS84";case p:return"webMercatorToSphericalECEF";case H:return"webMercatorToWGS84ECEF";case K:return"webMercatorToPlateCarree";case Z:return"wgs84ECEFToWGS84";case $:return"wgs84ECEFToSphericalECEF";case nn:return"wgs84ECEFToWebMercator";case J:return"sphericalECEFToWGS84";case Q:return"sphericalECEFToWebMercator";case D:return"sphericalMarsPCPFToMars2000";case z:return"sphericalMoonPCPFToMoon2000";case V:return"sphericalECEFToWGS84ECEF";case x:return"mars2000ToSphericalPCPF";case k:return"moon2000ToSphericalPCPF";default:return null}}function f(n,C){return n?C.spatialReference===n?C.spatialReferenceId:(C.spatialReference=n,"metersPerUnit"in C&&(C.metersPerUnit=e(n,1)),t(n)?C.spatialReferenceId=N.SPHERICAL_ECEF:s(n)?C.spatialReferenceId=N.WGS84:c(n)?C.spatialReferenceId=N.WEB_MERCATOR:M(n)?C.spatialReferenceId=N.PLATE_CARREE:n.wkt===S.wkt?C.spatialReferenceId=N.WGS84_ECEF:n.wkid===O.CGCS2000?C.spatialReferenceId=N.CGCS2000:n.wkt===r.wkt?C.spatialReferenceId=N.SPHERICAL_MARS_PCPF:n.wkt===u.wkt?C.spatialReferenceId=N.SPHERICAL_MOON_PCPF:o(n)?C.spatialReferenceId=N.GCSMARS2000:i(n)?C.spatialReferenceId=N.GCSMOON2000:C.spatialReferenceId=N.UNKNOWN):N.UNKNOWN}function I(n,C,E,l){n!==E&&(E[l++]=n[C++],E[l++]=n[C++],E[l]=n[C])}function T(n,C,E,l){E[l]=ln*(n[C]/tn),E[l+1]=ln*(en-2*Math.atan(Math.exp(-n[C+1]/tn))),E[l+2]=n[C+2]}function p(n,C,E,l){const e=n[C]/tn,t=en-2*Math.atan(Math.exp(-n[C+1]/tn)),S=tn+n[C+2],r=Math.cos(t)*S;E[l]=Math.cos(e)*r,E[l+1]=Math.sin(e)*r,E[l+2]=Math.sin(t)*S}function H(n,C,E,l){T(n,C,E,l),Y(E,l,E,l)}function h(C,E,l,e,t){const S=.4999999*Math.PI,r=n(En*C[E+1],-S,S),u=Math.sin(r);l[e++]=En*C[E]*t.radius,l[e++]=t.halfSemiMajorAxis*Math.log((1+u)/(1-u)),l[e]=C[E+2]}function d(n,C,E,l){h(n,C,E,l,P)}function U(n,C,E,l){E[l]=n[C]*Sn,E[l+1]=n[C+1]*Sn,E[l+2]=n[C+2]}function m(n,C,E,l){E[l]=n[C]*rn,E[l+1]=n[C+1]*rn,E[l+2]=n[C+2]}function K(n,C,E,l){T(n,C,E,l),U(E,l,E,l)}function w(n,C,E,l){Z(n,C,E,l),U(E,l,E,l)}function B(n,C,E,l){J(n,C,E,l),U(E,l,E,l)}function j(n,C,E,l){m(n,C,E,l),y(E,l,E,l)}function q(n,C,E,l){m(n,C,E,l),d(E,l,E,l)}function g(n,C,E,l){m(n,C,E,l),Y(E,l,E,l)}function b(n,C,E,l,e){const t=e+n[C+2],S=En*n[C+1],r=En*n[C],u=Math.cos(S)*t;E[l]=Math.cos(r)*u,E[l+1]=Math.sin(r)*u,E[l+2]=Math.sin(S)*t}function k(n,C,E,l){b(n,C,E,l,R.radius)}function x(n,C,E,l){b(n,C,E,l,a.radius)}function y(n,C,E,l){b(n,C,E,l,P.radius)}function v(n,C,E,e,t){const S=n[C],r=n[C+1],u=n[C+2],R=Math.sqrt(S*S+r*r+u*u),a=l(u/(0===R?1:R)),P=Math.atan2(r,S);E[e++]=ln*P,E[e++]=ln*a,E[e]=R-t}function z(n,C,E,l){v(n,C,E,l,R.radius)}function D(n,C,E,l){v(n,C,E,l,a.radius)}function J(n,C,E,l){v(n,C,E,l,P.radius)}function Q(n,C,E,l){J(n,C,E,l),d(E,l,E,l)}function V(n,C,E,l){J(n,C,E,l),Y(E,l,E,l)}function X(n,C,E,l,e){const t=En*n[C],S=En*n[C+1],r=n[C+2],u=Math.sin(S),R=Math.cos(S),a=e.radius/Math.sqrt(1-e.eccentricitySquared*u*u);E[l++]=(a+r)*R*Math.cos(t),E[l++]=(a+r)*R*Math.sin(t),E[l++]=(a*(1-e.eccentricitySquared)+r)*u}function Y(n,C,E,l){X(n,C,E,l,P)}function Z(n,C,E,l){const e=A,t=n[C],S=n[C+1],r=n[C+2];let u,R,a,_,s,c,M,o,i,O,N,L,G,F,W,f,I,T,p,H,h;u=Math.abs(r),R=t*t+S*S,a=Math.sqrt(R),_=R+r*r,s=Math.sqrt(_),H=Math.atan2(S,t),c=r*r/_,M=R/_,F=e.a2/s,W=e.a3-e.a4/s,M>.3?(o=u/s*(1+M*(e.a1+F+c*W)/s),p=Math.asin(o),O=o*o,i=Math.sqrt(1-O)):(i=a/s*(1-c*(e.a5-F-M*W)/s),p=Math.acos(i),O=1-i*i,o=Math.sqrt(O)),N=1-P.eccentricitySquared*O,L=P.radius/Math.sqrt(N),G=e.a6*L,F=a-L*i,W=u-G*o,I=i*F+o*W,f=i*W-o*F,T=f/(G/N+I),p+=T,h=I+f*T/2,r<0&&(p=-p),E[l++]=ln*H,E[l++]=ln*p,E[l]=h}function $(n,C,E,l){Z(n,C,E,l),y(E,l,E,l)}function nn(n,C,E,l){Z(n,C,E,l),d(E,l,E,l)}const Cn={source:{spatialReference:null,spatialReferenceId:N.UNKNOWN,metersPerUnit:1},dest:{spatialReference:null,spatialReferenceId:N.UNKNOWN,metersPerUnit:1},projector:I},En=E(1),ln=C(1),en=.5*Math.PI,tn=P.radius,Sn=tn*Math.PI/180,rn=180/(tn*Math.PI);export{N as ProjectionID,I as copy3,G as getProjector,F as getProjectorClassification,W as getProjectorName,rn as invPlateCarreeScale,h as lonLatToWebMercatorComparable,L as projectionTable,v as sphericalPCPFtoLonLatElevation,d as wgs84ToWebMercator};