UNPKG

@arcgis/core

Version:

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

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