@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 2.23 kB
JavaScript
import{clone as n}from"../../core/lang.js";import{isNone as t}from"../../core/maybe.js";import e from"../SpatialReference.js";import{earth as i}from"./Ellipsoid.js";import{equals as r,isWebMercator as s,isWGS84 as a}from"./spatialReferenceUtils.js";const o=57.29577951308232,u=.017453292519943;function l(n){return n*o}function p(n){return n*u}function f(n){return n/i.radius}function c(n){return Math.PI/2-2*Math.atan(Math.exp(-n/i.radius))}function h(n){return null!=n.wkid||null!=n.wkt}const m=[0,0];function x(n,t,e,i,r){const s=n,a=r;if(a.spatialReference=e,"x"in s&&"x"in a)[a.x,a.y]=t(s.x,s.y,m,i);else if("xmin"in s&&"xmin"in a)[a.xmin,a.ymin]=t(s.xmin,s.ymin,m,i),[a.xmax,a.ymax]=t(s.xmax,s.ymax,m,i);else if("paths"in s&&"paths"in a||"rings"in s&&"rings"in a){const n="paths"in s?s.paths:s.rings,e=[];let r;for(let s=0;s<n.length;s++){const a=n[s];r=[],e.push(r);for(let n=0;n<a.length;n++)r.push(t(a[n][0],a[n][1],[0,0],i)),a[n].length>2&&r[n].push(a[n][2]),a[n].length>3&&r[n].push(a[n][3])}"paths"in a?a.paths=e:a.rings=e}else if("points"in s&&"points"in a){const n=s.points,e=[];for(let r=0;r<n.length;r++)e[r]=t(n[r][0],n[r][1],[0,0],i),n[r].length>2&&e[r].push(n[r][2]),n[r].length>3&&e[r].push(n[r][3]);a.points=e}return r}function g(n,t){const e=n&&(h(n)?n:n.spatialReference),i=t&&(h(t)?t:t.spatialReference);return!(n&&"type"in n&&"mesh"===n.type||t&&"type"in t&&"mesh"===t.type||!e||!i)&&(!!r(i,e)||(s(i)&&a(e)||s(e)&&a(i)))}function M(i,o){if(t(i))return null;const u=i.spatialReference,l=o&&(h(o)?o:o.spatialReference);return g(u,l)?r(u,l)?n(i):s(l)?x(i,y,e.WebMercator,!1,n(i)):a(l)?x(i,d,e.WGS84,!1,n(i)):null:null}function y(n,t,e=[0,0]){t>89.99999?t=89.99999:t<-89.99999&&(t=-89.99999);const r=p(t);return e[0]=p(n)*i.radius,e[1]=i.halfSemiMajorAxis*Math.log((1+Math.sin(r))/(1-Math.sin(r))),e}function d(n,t,e=[0,0],r=!1){const s=l(n/i.radius);return e[0]=r?s:s-360*Math.floor((s+180)/360),e[1]=l(Math.PI/2-2*Math.atan(Math.exp(-t/i.radius))),e}function R(t,i=!1,r=n(t)){return x(t,y,e.WebMercator,i,r)}function j(t,i=!1,r=n(t)){return x(t,d,e.WGS84,i,r)}export{g as canProject,R as geographicToWebMercator,y as lngLatToXY,M as project,j as webMercatorToGeographic,f as x2lon,d as xyToLngLat,c as y2lat};