UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) • 13.1 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import e from"../Dictionary.js";import{ArcadeExecutionError as n,ExecutionErrorCodes as t}from"../executionError.js";import{cloneGeometry as r}from"../kernel.js";import{C as i,B as a,e as l,g as o,f as u,w as f,j as s,D as c,E as m,h as d,F as w,G as h,u as p,H as g,J as v,K as P}from"../../chunks/languageUtils.js";import{commonRelationsCheck as x,toCurveType as y,planarLength3D as I,toOffsetJoinType as R,toCentroidAlgorithm as j,measureToCoordinateFunc as N,pointToCoordinateFunc as E,distanceToCoordinateFunc as b}from"../geometry/functions.js";import{convertFromSpatialReferenceUnit as D,toAreaUnit as O,convert as S,toLengthUnit as T,convertToSpatialReferenceUnit as L}from"../geometry/unitConversion.js";import{equals as M}from"../../core/arrayUtils.js";import A from"../../geometry/Extent.js";import Z from"../../geometry/Geometry.js";import k from"../../geometry/Multipoint.js";import C from"../../geometry/Point.js";import U from"../../geometry/Polygon.js";import q from"../../geometry/Polyline.js";import{fromJSON as J}from"../../geometry/support/jsonUtils.js";import{squareMeters as z,meters as B}from"../geometry/extendedUnitData.js";import{isArray as G}from"../../support/guards.js";let H;async function F(){null==H&&(H=await import("../geometry/operators.js"),await H.loadAll())}function K(F,K){F.disjoint=function(e,n){return K(e,n,((t,r,a)=>(a=i(a),x(a,e,n),null===a[0]||null===a[1]||H.disjoint.execute(a[0],a[1]))))},F.intersects=function(e,n){return K(e,n,((t,r,a)=>(a=i(a),x(a,e,n),null!==a[0]&&null!==a[1]&&H.intersects.execute(a[0],a[1]))))},F.touches=function(e,n){return K(e,n,((t,r,a)=>(a=i(a),x(a,e,n),null!==a[0]&&null!==a[1]&&H.touches.execute(a[0],a[1]))))},F.crosses=function(e,n){return K(e,n,((t,r,a)=>(a=i(a),x(a,e,n),null!==a[0]&&null!==a[1]&&H.crosses.execute(a[0],a[1]))))},F.within=function(e,n){return K(e,n,((t,r,a)=>(a=i(a),x(a,e,n),null!==a[0]&&null!==a[1]&&H.within.execute(a[0],a[1]))))},F.contains=function(e,n){return K(e,n,((t,r,a)=>(a=i(a),x(a,e,n),null!==a[0]&&null!==a[1]&&H.contains.execute(a[0],a[1]))))},F.overlaps=function(e,n){return K(e,n,((t,r,a)=>(a=i(a),x(a,e,n),null!==a[0]&&null!==a[1]&&H.overlaps.execute(a[0],a[1]))))},F.equals=function(e,n){return K(e,n,((t,r,i)=>(a(i,2,2,e,n),i[0]===i[1]||(i[0]instanceof Z&&i[1]instanceof Z?H.equals.execute(i[0],i[1]):(l(i[0])&&l(i[1])||o(i[0])&&o(i[1])||!(!u(i[0])||!u(i[1])))&&i[0].equals(i[1])))))},F.relate=function(e,r){return K(e,r,((l,o,u)=>{if(u=i(u),a(u,3,3,e,r),u[0]instanceof Z&&u[1]instanceof Z)return H.relate.execute(u[0],u[1],f(u[2]));if(u[0]instanceof Z&&null===u[1])return!1;if(u[1]instanceof Z&&null===u[0])return!1;if(null===u[0]&&null===u[1])return!1;throw new n(e,t.InvalidParameter,r)}))},F.intersection=function(e,n){return K(e,n,((t,r,a)=>(a=i(a),x(a,e,n),null===a[0]||null===a[1]?null:H.intersection.execute(a[0],a[1]))))},F.union=function(e,a){return K(e,a,((l,o,u)=>{if(0===(u=i(u)).length)throw new n(e,t.WrongNumberOfParameters,a);const f=[];if(1===u.length)if(G(u[0])){for(const r of i(u[0]))if(null!==r){if(!(r instanceof Z))throw new n(e,t.InvalidParameter,a);f.push(r)}}else{if(!s(u[0])){if(u[0]instanceof Z)return c(r(u[0]),e.spatialReference);if(null===u[0])return null;throw new n(e,t.InvalidParameter,a)}for(const r of i(u[0].toArray()))if(null!==r){if(!(r instanceof Z))throw new n(e,t.InvalidParameter,a);f.push(r)}}else for(const r of u)if(null!==r){if(!(r instanceof Z))throw new n(e,t.InvalidParameter,a);f.push(r)}return 0===f.length?null:H.union.executeMany(f)}))},F.difference=function(e,n){return K(e,n,((t,a,l)=>(l=i(l),x(l,e,n),null===l[0]?null:null===l[1]?r(l[0]):H.difference.execute(l[0],l[1]))))},F.symmetricdifference=function(e,n){return K(e,n,((t,a,l)=>(l=i(l),x(l,e,n),null===l[0]&&null===l[1]?null:null===l[0]?r(l[1]):null===l[1]?r(l[0]):H.symmetricDifference.execute(l[0],l[1]))))},F.clip=function(e,r){return K(e,r,((l,o,u)=>{if(u=i(u),a(u,2,2,e,r),!(u[1]instanceof A)&&null!==u[1])throw new n(e,t.InvalidParameter,r);if(null===u[0])return null;if(!(u[0]instanceof Z))throw new n(e,t.InvalidParameter,r);return null===u[1]?null:H.clip.execute(u[0],u[1])}))},F.cut=function(e,l){return K(e,l,((o,u,f)=>{if(f=i(f),a(f,2,2,e,l),!(f[1]instanceof q)&&null!==f[1])throw new n(e,t.InvalidParameter,l);if(null===f[0])return[];if(!(f[0]instanceof Z))throw new n(e,t.InvalidParameter,l);return null===f[1]?[r(f[0])]:H.cut.execute(f[0],f[1])}))},F.area=function(e,r){return K(e,r,((l,o,u)=>{a(u,1,2,e,r);let f=(u=i(u))[0];if((G(u[0])||s(u[0]))&&(f=m(u[0],e.spatialReference)),null===f)return 0;if(!(f instanceof Z))throw new n(e,t.InvalidParameter,r);return D(f.spatialReference,O(u[1]),H.area.execute(f))}))},F.areageodetic=function(e,r){return K(e,r,((l,o,u)=>{a(u,1,3,e,r);let f=(u=i(u))[0];(G(f)||s(f))&&(f=m(f,e.spatialReference));const c=O(u[1]),w=y(u[2]);if(null==f)return 0;if(!d(f))throw new n(e,t.InvalidParameter,r);return S(z,c,H.geodeticArea.execute(f,{curveType:w}))}))},F.length=function(e,r){return K(e,r,((l,o,u)=>{a(u,1,2,e,r);let f=(u=i(u))[0];if((G(u[0])||s(u[0]))&&(f=w(u[0],e.spatialReference)),null===f)return 0;if(!(f instanceof Z))throw new n(e,t.InvalidParameter,r);return D(f.spatialReference,T(u[1]),H.length.execute(f))}))},F.length3d=function(e,r){return K(e,r,((l,o,u)=>{a(u,1,2,e,r);let f=(u=i(u))[0];if((G(u[0])||s(u[0]))&&(f=w(u[0],e.spatialReference)),null===f)return 0;if(!(f instanceof Z))throw new n(e,t.InvalidParameter,r);return!0===f.hasZ?D(f.spatialReference,T(u[1]),I(f)):D(f.spatialReference,T(u[1]),H.length.execute(f))}))},F.lengthgeodetic=function(e,r){return K(e,r,((l,o,u)=>{a(u,1,3,e,r);let f=(u=i(u))[0];(G(u[0])||s(u[0]))&&(f=w(u[0],e.spatialReference));const c=y(u[2]);if(null==f)return 0;if(null!=f&&!d(f))throw new n(e,t.InvalidParameter,r);const m=T(u[1]);return S(B,m,H.geodeticLength.execute(f,{curveType:c}))}))},F.distance=function(e,r){return K(e,r,((l,o,u)=>{u=i(u),a(u,2,3,e,r);let f=u[0];if((G(u[0])||s(u[0]))&&(f=h(u[0],e.spatialReference)),!(f instanceof Z))throw new n(e,t.InvalidParameter,r);let c=u[1];if((G(u[1])||s(u[1]))&&(c=h(u[1],e.spatialReference)),!(c instanceof Z))throw new n(e,t.InvalidParameter,r);return D(f.spatialReference,T(u[2]),H.distance.execute(f,c))}))},F.distancegeodetic=function(e,r){return K(e,r,((l,o,u)=>{u=i(u),a(u,2,4,e,r);const f=u[0];if(!(f instanceof C))throw new n(e,t.InvalidParameter,r);const s=u[1];if(!(s instanceof C))throw new n(e,t.InvalidParameter,r);const c=T(u[2]),m=y(u[3]),d=new q({paths:[],spatialReference:f.spatialReference});return d.addPath([f,s]),S(B,c,H.geodeticLength.execute(d,{curveType:m}))}))},F.densify=function(e,r){return K(e,r,((l,o,u)=>{if(u=i(u),a(u,2,3,e,r),null===u[0])return null;if(!(u[0]instanceof Z))throw new n(e,t.InvalidParameter,r);const f=p(u[1]);if(isNaN(f))throw new n(e,t.InvalidParameter,r);if(f<=0)throw new n(e,t.InvalidParameter,r);const s=L(T(u[2]),u[0].spatialReference,f);switch(u[0].type){case"polygon":case"polyline":case"extent":return H.densify.execute(u[0],s);default:return u[0]}}))},F.densifygeodetic=function(e,r){return K(e,r,((l,o,u)=>{u=i(u),a(u,2,4,e,r);const f=u[0];if(null==f)return null;if(!d(f))throw new n(e,t.InvalidParameter,r);const s=p(u[1]);if(isNaN(s))throw new n(e,t.InvalidParameter,r);if(s<=0)throw new n(e,t.InvalidParameter,r);const c=T(u[2]),m=y(u[3]),w=S(c,B,s);switch(f.type){case"polygon":case"polyline":case"extent":return H.geodeticDensify.execute(f,w,{curveType:m});default:return f}}))},F.generalize=function(e,r){return K(e,r,((l,o,u)=>{if(u=i(u),a(u,2,4,e,r),null===u[0])return null;if(!(u[0]instanceof Z))throw new n(e,t.InvalidParameter,r);const f=p(u[1]);if(isNaN(f))throw new n(e,t.InvalidParameter,r);const s=L(T(u[3]),u[0].spatialReference,f);return H.generalize.execute(u[0],s,{removeDegenerateParts:g(v(u[2],!0))})}))},F.buffer=function(e,l){return K(e,l,((o,u,f)=>{if(f=i(f),a(f,2,3,e,l),null===f[0])return null;if(!(f[0]instanceof Z))throw new n(e,t.InvalidParameter,l);const s=p(f[1]);if(isNaN(s))throw new n(e,t.InvalidParameter,l);return 0===s?r(f[0]):H.buffer.execute(f[0],L(T(f[2]),f[0].spatialReference,s))}))},F.buffergeodetic=function(e,l){return K(e,l,((o,u,f)=>{f=i(f),a(f,2,4,e,l);const s=f[0];if(null==s)return null;if(!d(s))throw new n(e,t.InvalidParameter,l);const c=p(f[1]);if(isNaN(c))throw new n(e,t.InvalidParameter,l);if(0===c)return r(s);const m=T(f[2]),w=y(f[3]);return H.geodesicBuffer.execute(s,S(m,B,c),{curveType:w})}))},F.offset=function(e,r){return K(e,r,((l,o,u)=>{if(u=i(u),a(u,2,6,e,r),null===u[0])return null;if(!(u[0]instanceof U||u[0]instanceof q))throw new n(e,t.InvalidParameter,r);const f=p(u[1]);if(isNaN(f))throw new n(e,t.InvalidParameter,r);const s=L(T(u[2]),u[0].spatialReference,f),c=R(u[3]),m=p(v(u[4],10));if(isNaN(m))throw new n(e,t.InvalidParameter,r);const d=p(v(u[5],0));if(isNaN(d))throw new n(e,t.InvalidParameter,r);return H.offset.execute(u[0],s,{joins:c,miterLimit:m,flattenError:d})}))},F.rotate=function(e,r){return K(e,r,((l,o,u)=>{if(u=i(u),a(u,2,3,e,r),null===u[0])return null;if(!(u[0]instanceof Z))throw new n(e,t.InvalidParameter,r);const f=u[0]instanceof A?U.fromExtent(u[0]):u[0],s=p(u[1]);if(isNaN(s))throw new n(e,t.InvalidParameter,r);const c=v(u[2],null);if(null===c){const e="point"===f.type?f:f.extent?.center;return H.rotate(f,s,e?.x,e?.y)}if(c instanceof C)return H.rotate(f,s,c.x,c.y);throw new n(e,t.InvalidParameter,r)}))},F.centroid=function(e,r){return K(e,r,((e,r,l)=>{if(l=i(l),a(l,1,2,e,r),null===l[0])return null;const o=j(l[1]);let u=l[0];if((G(l[0])||s(l[0]))&&(u="geometric"===o?h(l[0],e.spatialReference):m(l[0],e.spatialReference),null===u))return null;if(!(u instanceof Z))throw new n(e,t.InvalidParameter,r);return"geometric"===o?H.centroid.execute(u):H.labelPoint.execute(u)}))},F.measuretocoordinate=function(e,n){return K(e,n,N)},F.pointtocoordinate=function(e,n){return K(e,n,E)},F.distancetocoordinate=function(e,n){return K(e,n,b)},F.multiparttosinglepart=function(e,l){return K(e,l,((o,u,f)=>{if(f=i(f),a(f,1,1,e,l),null===f[0])return null;if(!(f[0]instanceof Z))throw new n(e,t.InvalidParameter,l);if(f[0]instanceof C)return[c(r(f[0]),e.spatialReference)];if(f[0]instanceof A)return[c(r(f[0]),e.spatialReference)];const s=H.simplify.execute(f[0]);if(s instanceof U){const e=[],n=[];for(let t=0;t<s.rings.length;t++)if(s.isClockwise(s.rings[t])){const n=J({rings:[s.rings[t]],hasZ:!0===s.hasZ,hasM:!0===s.hasM,spatialReference:s.spatialReference.toJSON()});e.push(n)}else n.push({ring:s.rings[t],pt:s.getPoint(t,0)});for(let t=0;t<n.length;t++)for(let r=0;r<e.length;r++)if(e[r].contains(n[t].pt)){e[r].addRing(n[t].ring);break}return e}if(s instanceof q){const e=[];for(let n=0;n<s.paths.length;n++){const t=J({paths:[s.paths[n]],hasZ:!0===s.hasZ,hasM:!0===s.hasM,spatialReference:s.spatialReference.toJSON()});e.push(t)}return e}if(f[0]instanceof k){const n=[],t=c(r(f[0]),e.spatialReference);for(let e=0;e<t.points.length;e++)n.push(t.getPoint(e));return n}return null}))},F.isselfintersecting=function(e,n){return K(e,n,((e,n,t)=>{a(t,1,1,e,n);let r=(t=i(t))[0];if((G(t[0])||s(t[0]))&&(r=w(t[0],e.spatialReference)),r instanceof k){const e=r.points;for(let n=0;n<e.length;n++)for(let t=n+1;t<e.length;t++)if(M(e[n],e[t]))return!0;return!1}return(r instanceof q||r instanceof U)&&H.isSelfIntersecting(r)}))},F.issimple=function(e,r){return K(e,r,((l,o,u)=>{if(u=i(u),a(u,1,1,e,r),null===u[0])return!0;if(!(u[0]instanceof Z))throw new n(e,t.InvalidParameter,r);return H.simplify.isSimple(u[0])}))},F.simplify=function(e,r){return K(e,r,((l,o,u)=>{if(u=i(u),a(u,1,1,e,r),null===u[0])return null;if(!(u[0]instanceof Z))throw new n(e,t.InvalidParameter,r);return H.simplify.execute(u[0])}))},F.convexhull=function(e,r){return K(e,r,((l,o,u)=>{if(u=i(u),a(u,1,1,e,r),null===u[0])return null;if(!(u[0]instanceof Z))throw new n(e,t.InvalidParameter,r);return H.convexHull.execute(u[0])}))},F.nearestcoordinate=function(r,l){return K(r,l,((o,u,f)=>{if(f=i(f),a(f,2,2,r,l),!(f[0]instanceof Z||null===f[0]))throw new n(r,t.InvalidParameter,l);if(!(f[1]instanceof C||null===f[1]))throw new n(r,t.InvalidParameter,l);if(null===f[0]||null===f[1])return null;const s=f[0]instanceof A?U.fromExtent(f[0]):f[0],c=H.proximity.getNearestCoordinate(s,f[1],{calculateLeftRightSide:!0});return null===c||c.isEmpty?null:e.convertObjectToArcadeDictionary({coordinate:c.coordinate,distance:c.distance,sideOfLine:0===c.distance?"straddle":c.isRightSide?"right":"left"},P(r),!1,!0)}))},F.nearestvertex=function(r,l){return K(r,l,((o,u,f)=>{if(f=i(f),a(f,2,2,r,l),!(f[0]instanceof Z||null===f[0]))throw new n(r,t.InvalidParameter,l);if(!(f[1]instanceof C||null===f[1]))throw new n(r,t.InvalidParameter,l);if(null===f[0]||null===f[1])return null;const s=f[0]instanceof A?U.fromExtent(f[0]):f[0],c=H.proximity.getNearestVertex(s,f[1]);return null===c||c.isEmpty?null:e.convertObjectToArcadeDictionary({coordinate:c.coordinate,distance:c.distance,sideOfLine:0===c.distance?"straddle":c.isRightSide?"right":"left"},P(r),!1,!0)}))}}export{F as loadOperators,K as registerFunctions};