@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 3.81 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{P as e}from"../../../chunks/Point2D.js";import"../../../chunks/Envelope2D.js";import{G as t}from"../../../chunks/Geometry.js";import{E as n,P as r}from"../../../chunks/Envelope.js";import{M as s}from"../../../chunks/MultiPathImpl.js";import{c as a,a as o}from"../../../chunks/ProjectionTransformation.js";import i from"../../Extent.js";import u from"../../Multipoint.js";import c from"../../Point.js";import l from"../../Polygon.js";import m from"../../Polyline.js";import"./initNoPeFactory.js";import{fromGeometryToGXGeometry as h,toGeometry as f}from"./jsonConverter.js";const p="_gxVersion",g=2,y=1;function C(e){return Array.isArray(e)?e[0].spatialReference:e.spatialReference}function x(e){switch(e.type){case"point":return w(e);case"multipoint":return V(e);case"polyline":return v(e);case"polygon":return P(e);case"extent":return M(e);default:throw new Error(`Unsupported geometry type: ${e.type}`)}}function M(e){if(!e.getCacheValue(p)){const t=new n;t.setCoords(e.xmin,e.ymin,e.xmax,e.ymax),e.hasM&&t.setInterval(g,0,e.mmin,e.mmax),e.hasZ&&t.setInterval(y,0,e.zmin,e.zmax),e.setCacheValue(p,t)}return e.getCacheValue(p)}function V(e){if(!e.getCacheValue(p)){const t=new s,n=new r,a=e.points,o=e.hasM,i=e.hasZ,u=i?3:2;for(let e=0,r=a.length;e<r;e++){const r=a[e];n.setXYCoords(r[0],r[1]),i&&n.setZ(r[2]??0),o&&n.setM(r[u]??NaN),t.add(n)}e.setCacheValue(p,t)}return e.getCacheValue(p)}function w(e){if(!e.getCacheValue(p)){const t=new r;t.setXYCoords(e.x,e.y),e.hasM&&t.setM(e.m),e.hasZ&&t.setZ(e.z),e.setCacheValue(p,t)}return e.getCacheValue(p)}function P(e){if(!e.getCacheValue(p)){const{curveRings:t,hasM:n,hasZ:r,rings:s}=e,a=h({curveRings:t,hasM:n,hasZ:r,rings:s});e.setCacheValue(p,a)}return e.getCacheValue(p)}function v(e){if(!e.getCacheValue(p)){const{curvePaths:t,hasM:n,hasZ:r,paths:s}=e,a=h({curvePaths:t,hasM:n,hasZ:r,paths:s});e.setCacheValue(p,a)}return e.getCacheValue(p)}function j(e){if(e.wkid)return a(e.wkid);const t=e.wkt2||e.wkt;return t?o(t):null}function Z(e,n){if(e)switch(e.getGeometryType()){case t.enumPoint:return R(e,n);case t.enumEnvelope:return E(e,n);case t.enumMultiPoint:return k(e,n);case t.enumPolyline:return z(e,n);case t.enumPolygon:return d(e,n)}return null}function E(e,t){if(e.isEmpty())return null;const n=new i({xmin:e.getXMin(),ymin:e.getYMin(),xmax:e.getXMax(),ymax:e.getYMax(),spatialReference:t}),r=e.getDescription();if(r.hasM()){const t=e.queryInterval(g,0);n.mmin=t.vmin,n.mmax=t.vmax}if(r.hasZ()){const t=e.queryInterval(y,0);n.zmin=t.vmin,n.zmax=t.vmax}return n.setCacheValue(p,e),n}function k(e,t){if(e.isEmpty())return null;const n=e.getDescription(),s=n.hasM(),a=n.hasZ(),o=[],i=new r;for(let r=0,u=e.getPointCount();r<u;r++){e.getPointByVal(r,i);const t=[i.getX(),i.getY()];a&&t.push(i.getZ()),s&&t.push(i.getM()),o.push(t)}const c=new u({hasM:s,hasZ:a,points:o,spatialReference:t});return c.setCacheValue(p,e),c}function R(t,n){if(t instanceof e)return new c({x:t.x,y:t.y,spatialReference:n});if(t.isEmpty())return null;const r=new c({x:t.getX(),y:t.getY(),spatialReference:n}),s=t.getDescription();return s.hasM()&&(r.m=t.getM()),s.hasZ()&&(r.z=t.getZ()),r.setCacheValue(p,t),r}function d(e,t){if(e.isEmpty())return null;const n=l.fromJSON({spatialReference:t,...f(e,null)});return n.setCacheValue(p,e),n}function z(e,t){if(e.isEmpty())return null;const n=m.fromJSON({spatialReference:t,...f(e,null)});return n.setCacheValue(p,e),n}export{M as fromExtent,x as fromGeometry,V as fromMultipoint,w as fromPoint,P as fromPolygon,v as fromPolyline,j as fromSpatialReference,C as getSpatialReference,E as toExtent,Z as toGeometry,k as toMultipoint,R as toPoint,d as toPolygon,z as toPolyline};