@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 16.3 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import n from"../ArcadePortal.js";import t from"../Dictionary.js";import{ArcadeExecutionError as e}from"../executionError.js";import{cloneGeometry as r}from"../kernel.js";import{C as a,B as i,e as o,g as s,f as c,s as l,j as u,D as f,m as d,E as w,h as m,F as y,G as h,r as p,H as g,J as N,K as S}from"../../chunks/languageUtils.js";import{getPortal as O}from"../portalUtils.js";import{commonRelationsCheck as v,toCurveType as J,planarLength3D as P,toOffsetJoinType as A,toCentroidAlgorithm as I,measureToCoordinateFunc as F,pointToCoordinateFunc as j,distanceToCoordinateFunc as R}from"../geometry/functions.js";import{invokeRemoteGeometryOp as b}from"../geometry/operatorsWorkerConnection.js";import{equals as x}from"../../core/arrayUtils.js";import D from"../../geometry/Extent.js";import L from"../../geometry/Geometry.js";import C from"../../geometry/Multipoint.js";import U from"../../geometry/Point.js";import E from"../../geometry/Polygon.js";import k from"../../geometry/Polyline.js";import{fromJSON as M}from"../../geometry/support/jsonUtils.js";import T from"../../portal/Portal.js";import{lookupUser as Z}from"../../portal/support/utils.js";import{isArray as q}from"../../support/guards.js";function z(n){if(null==n)return n;switch(typeof n){case"string":case"number":return n;default:throw new e(null,"InvalidParameter",null)}}function B(B){"async"===B.mode&&(B.functions.disjoint=function(n,t){return B.standardFunctionAsync(n,t,(e,r,i)=>(i=a(i),v(i,n,t),null===i[0]||null===i[1]||b("disjoint",[i[0].toJSON(),i[1].toJSON()])))},B.functions.intersects=function(n,t){return B.standardFunctionAsync(n,t,(e,r,i)=>(i=a(i),v(i,n,t),null!==i[0]&&null!==i[1]&&b("intersects",[i[0].toJSON(),i[1].toJSON()])))},B.functions.touches=function(n,t){return B.standardFunctionAsync(n,t,(e,r,i)=>(i=a(i),v(i,n,t),null!==i[0]&&null!==i[1]&&b("touches",[i[0].toJSON(),i[1].toJSON()])))},B.functions.crosses=function(n,t){return B.standardFunctionAsync(n,t,(e,r,i)=>(i=a(i),v(i,n,t),null!==i[0]&&null!==i[1]&&b("crosses",[i[0].toJSON(),i[1].toJSON()])))},B.functions.within=function(n,t){return B.standardFunctionAsync(n,t,(e,r,i)=>(i=a(i),v(i,n,t),null!==i[0]&&null!==i[1]&&b("within",[i[0].toJSON(),i[1].toJSON()])))},B.functions.contains=function(n,t){return B.standardFunctionAsync(n,t,(e,r,i)=>(i=a(i),v(i,n,t),null!==i[0]&&null!==i[1]&&b("contains",[i[0].toJSON(),i[1].toJSON()])))},B.functions.overlaps=function(n,t){return B.standardFunctionAsync(n,t,(e,r,i)=>(i=a(i),v(i,n,t),null!==i[0]&&null!==i[1]&&b("overlaps",[i[0].toJSON(),i[1].toJSON()])))},B.functions.equals=function(n,t){return B.standardFunctionAsync(n,t,(e,r,a)=>(i(a,2,2,n,t),a[0]===a[1]||(a[0]instanceof L&&a[1]instanceof L?b("equals",[a[0].toJSON(),a[1].toJSON()]):(o(a[0])&&o(a[1])||!!(s(a[0])&&s(a[1])||c(a[0])&&c(a[1])))&&a[0].equals(a[1]))))},B.functions.relate=function(n,t){return B.standardFunctionAsync(n,t,(r,o,s)=>{if(s=a(s),i(s,3,3,n,t),s[0]instanceof L&&s[1]instanceof L)return b("relate",[s[0].toJSON(),s[1].toJSON(),l(s[2])]);if(s[0]instanceof L&&null===s[1])return!1;if(s[1]instanceof L&&null===s[0])return!1;if(null===s[0]&&null===s[1])return!1;throw new e(n,"InvalidParameter",t)})},B.functions.intersection=function(n,t){return B.standardFunctionAsync(n,t,async(e,r,i)=>(i=a(i),v(i,n,t),null===i[0]||null===i[1]?null:M(await b("intersection",[i[0].toJSON(),i[1].toJSON()]))))},B.functions.union=function(n,t){return B.standardFunctionAsync(n,t,async(i,o,s)=>{if(0===(s=a(s)).length)throw new e(n,"WrongNumberOfParameters",t);const c=[];if(1===s.length)if(q(s[0])){for(const r of a(s[0]))if(null!==r){if(!(r instanceof L))throw new e(n,"InvalidParameter",t);c.push(r.toJSON())}}else{if(!u(s[0])){if(s[0]instanceof L)return f(r(s[0]),n.spatialReference);if(null===s[0])return null;throw new e(n,"InvalidParameter",t)}for(const r of a(s[0].toArray()))if(null!==r){if(!(r instanceof L))throw new e(n,"InvalidParameter",t);c.push(r.toJSON())}}else for(const r of s)if(null!==r){if(!(r instanceof L))throw new e(n,"InvalidParameter",t);c.push(r.toJSON())}return 0===c.length?null:M(await b("union",[c]))})},B.functions.difference=function(n,t){return B.standardFunctionAsync(n,t,async(e,i,o)=>(o=a(o),v(o,n,t),null===o[0]?null:null===o[1]?r(o[0]):M(await b("difference",[o[0].toJSON(),o[1].toJSON()]))))},B.functions.symmetricdifference=function(n,t){return B.standardFunctionAsync(n,t,async(e,i,o)=>(o=a(o),v(o,n,t),null===o[0]&&null===o[1]?null:null===o[0]?r(o[1]):null===o[1]?r(o[0]):M(await b("symmetricDifference",[o[0].toJSON(),o[1].toJSON()]))))},B.functions.clip=function(n,t){return B.standardFunctionAsync(n,t,async(r,o,s)=>{if(s=a(s),i(s,2,2,n,t),!(s[1]instanceof D)&&null!==s[1])throw new e(n,"InvalidParameter",t);if(null===s[0])return null;if(!(s[0]instanceof L))throw new e(n,"InvalidParameter",t);return null===s[1]?null:M(await b("clip",[s[0].toJSON(),s[1].toJSON()]))})},B.functions.cut=function(n,t){return B.standardFunctionAsync(n,t,async(o,s,c)=>{if(c=a(c),i(c,2,2,n,t),!(c[1]instanceof k)&&null!==c[1])throw new e(n,"InvalidParameter",t);if(null===c[0])return[];if(!(c[0]instanceof L))throw new e(n,"InvalidParameter",t);return null===c[1]?[r(c[0])]:(await b("cut",[c[0].toJSON(),c[1].toJSON()])).map(n=>M(n))})},B.functions.area=function(n,t){return B.standardFunctionAsync(n,t,async(r,o,s)=>{if(i(s,1,2,n,t),s=a(s),d(s[0])){const r=await s[0].sumArea(z(s[1]),null,n.abortSignal);if(n.abortSignal.aborted)throw new e(n,"Cancelled",t);return r}let c=s[0];if((q(c)||u(c))&&(c=w(s[0],n.spatialReference)),null===c)return 0;if(!(c instanceof L))throw new e(n,"InvalidParameter",t);return b("area",[c.toJSON(),z(s[1])])})},B.functions.areageodetic=function(n,t){return B.standardFunctionAsync(n,t,async(r,o,s)=>{i(s,1,3,n,t);let c=(s=a(s))[0];(q(c)||u(c))&&(c=w(c,n.spatialReference));const l=z(s[1]),f=J(s[2]);if(d(c)){const r=await c.sumArea(l,f,n.abortSignal);if(n.abortSignal.aborted)throw new e(n,"Cancelled",t);return r}if(null==c)return 0;if(!m(c))throw new e(n,"InvalidParameter",t);return b("geodeticArea",[c.toJSON(),l,f])})},B.functions.length=function(n,t){return B.standardFunctionAsync(n,t,async(r,o,s)=>{if(i(s,1,2,n,t),s=a(s),d(s[0])){const r=await s[0].sumLength(z(s[1]),null,n.abortSignal);if(n.abortSignal.aborted)throw new e(n,"Cancelled",t);return r}let c=s[0];if((q(s[0])||u(s[0]))&&(c=y(s[0],n.spatialReference)),null===c)return 0;if(!(c instanceof L))throw new e(n,"InvalidParameter",t);return b("length",[c.toJSON(),z(s[1])])})},B.functions.length3d=function(n,t){return B.standardFunctionAsync(n,t,async(r,o,s)=>{if(i(s,1,2,n,t),null===(s=a(s))[0])return 0;let c=s[0];if((q(s[0])||u(s[0]))&&(c=y(s[0],n.spatialReference)),null===c)return 0;if(!(c instanceof L))throw new e(n,"InvalidParameter",t);if(!0===c.hasZ){const{convertFromSpatialReferenceUnit:n,toLengthUnit:t}=await import("../geometry/unitConversion.js"),e=P(c);return n(c.spatialReference,t(s[1]),e)}return b("length",[c.toJSON(),z(s[1])])})},B.functions.lengthgeodetic=function(n,t){return B.standardFunctionAsync(n,t,async(r,o,s)=>{i(s,1,3,n,t);let c=(s=a(s))[0];(q(s[0])||u(s[0]))&&(c=y(s[0],n.spatialReference));const l=z(s[1]),f=J(s[2]);if(d(c)){const r=await c.sumLength(l,f,n.abortSignal);if(n.abortSignal.aborted)throw new e(n,"Cancelled",t);return r}if(null===c)return 0;if(!m(c))throw new e(n,"InvalidParameter",t);return b("geodeticLength",[c.toJSON(),l,f])})},B.functions.distance=function(n,t){return B.standardFunctionAsync(n,t,async(r,o,s)=>{s=a(s),i(s,2,3,n,t);let c=s[0];if((q(s[0])||u(s[0]))&&(c=h(s[0],n.spatialReference)),!(c instanceof L))throw new e(n,"InvalidParameter",t);let l=s[1];if((q(s[1])||u(s[1]))&&(l=h(s[1],n.spatialReference)),!(l instanceof L))throw new e(n,"InvalidParameter",t);return b("distance",[c.toJSON(),l.toJSON(),z(s[2])])})},B.functions.distancegeodetic=function(n,t){return B.standardFunctionAsync(n,t,async(r,o,s)=>{s=a(s),i(s,2,4,n,t);const c=s[0];if(!(c instanceof U))throw new e(n,"InvalidParameter",t);const l=s[1];if(!(l instanceof U))throw new e(n,"InvalidParameter",t);const u=new k({paths:[],spatialReference:c.spatialReference});return u.addPath([c,l]),b("geodeticLength",[u.toJSON(),z(s[2]),J(s[3])])})},B.functions.densify=function(n,t){return B.standardFunctionAsync(n,t,async(r,o,s)=>{if(s=a(s),i(s,2,3,n,t),null===s[0])return null;if(!(s[0]instanceof L))throw new e(n,"InvalidParameter",t);const c=p(s[1]);if(isNaN(c))throw new e(n,"InvalidParameter",t);if(c<=0)throw new e(n,"InvalidParameter",t);switch(s[0].type){case"polygon":case"polyline":case"extent":return M(await b("densify",[s[0].toJSON(),c,z(s[2])]));default:return s[0]}})},B.functions.densifygeodetic=function(n,t){return B.standardFunctionAsync(n,t,async(r,o,s)=>{s=a(s),i(s,2,4,n,t);const c=s[0];if(null==c)return null;if(!m(c))throw new e(n,"InvalidParameter",t);const l=p(s[1]);if(isNaN(l))throw new e(n,"InvalidParameter",t);if(l<=0)throw new e(n,"InvalidParameter",t);const u=z(s[2]),f=J(s[3]);switch(c.type){case"polygon":case"polyline":case"extent":return M(await b("geodeticDensify",[c.toJSON(),l,u,f]));default:return c}})},B.functions.generalize=function(n,t){return B.standardFunctionAsync(n,t,async(r,o,s)=>{if(s=a(s),i(s,2,4,n,t),null===s[0])return null;if(!(s[0]instanceof L))throw new e(n,"InvalidParameter",t);const c=p(s[1]);if(isNaN(c))throw new e(n,"InvalidParameter",t);const l=g(N(s[2],!0));return M(await b("generalize",[s[0].toJSON(),c,z(s[3]),{removeDegenerateParts:l}]))})},B.functions.buffer=function(n,t){return B.standardFunctionAsync(n,t,async(o,s,c)=>{if(c=a(c),i(c,2,3,n,t),null===c[0])return null;if(!(c[0]instanceof L))throw new e(n,"InvalidParameter",t);const l=p(c[1]);if(isNaN(l))throw new e(n,"InvalidParameter",t);return 0===l?r(c[0]):M(await b("buffer",[c[0].toJSON(),l,z(c[2])]))})},B.functions.buffergeodetic=function(n,t){return B.standardFunctionAsync(n,t,async(o,s,c)=>{c=a(c),i(c,2,4,n,t);const l=c[0];if(null==l)return null;if(!m(l))throw new e(n,"InvalidParameter",t);const u=p(c[1]);if(isNaN(u))throw new e(n,"InvalidParameter",t);if(0===u)return r(l);const f=z(c[2]),d=J(c[3]);return M(await b("geodesicBuffer",[l.toJSON(),u,f,d]))})},B.functions.offset=function(n,t){return B.standardFunctionAsync(n,t,async(r,o,s)=>{s=a(s),i(s,2,6,n,t);const c=s[0];if(null===c)return null;if(!(c instanceof E||c instanceof k))throw new e(n,"InvalidParameter",t);const l=p(s[1]);if(isNaN(l))throw new e(n,"InvalidParameter",t);const u=s[2],f=A(s[3]),d=p(N(s[4],10));if(isNaN(d))throw new e(n,"InvalidParameter",t);const w=p(N(s[5],0));if(isNaN(w))throw new e(n,"InvalidParameter",t);return M(await b("offset",[c.toJSON(),l,z(u),f,d,w]))})},B.functions.rotate=function(n,t){return B.standardFunctionAsync(n,t,async(r,o,s)=>{if(s=a(s),i(s,2,3,n,t),null===s[0])return null;if(!(s[0]instanceof L))throw new e(n,"InvalidParameter",t);const c=s[0]instanceof D?E.fromExtent(s[0]):s[0],l=p(s[1]);if(isNaN(l))throw new e(n,"InvalidParameter",t);const u=N(s[2],null);if(null===u){const n="point"===c.type?c:c.extent?.center;return M(await b("rotate",[c.toJSON(),l,n?.x,n?.y]))}if(u instanceof U)return M(await b("rotate",[c.toJSON(),l,u.x,u.y]));throw new e(n,"InvalidParameter",t)})},B.functions.centroid=function(n,t){return B.standardFunctionAsync(n,t,async(r,o,s)=>{if(s=a(s),i(s,1,2,n,t),null===s[0])return null;const c=I(s[1]);let l=s[0];if((q(s[0])||u(s[0]))&&(l="geometric"===c?h(s[0],n.spatialReference):w(s[0],n.spatialReference),null===l))return null;if(!(l instanceof L))throw new e(n,"InvalidParameter",t);return M("geometric"===c?await b("centroid",[l.toJSON()]):await b("labelPoint",[l.toJSON()]))})},B.functions.measuretocoordinate=function(n,t){return B.standardFunctionAsync(n,t,F)},B.functions.pointtocoordinate=function(n,t){return B.standardFunctionAsync(n,t,j)},B.functions.distancetocoordinate=function(n,t){return B.standardFunctionAsync(n,t,R)},B.functions.multiparttosinglepart=function(n,t){return B.standardFunctionAsync(n,t,async(o,s,c)=>{if(c=a(c),i(c,1,1,n,t),null===c[0])return null;if(!(c[0]instanceof L))throw new e(n,"InvalidParameter",t);if(c[0]instanceof U)return[f(r(c[0]),n.spatialReference)];if(c[0]instanceof D)return[f(r(c[0]),n.spatialReference)];const l=M(await b("simplify",[c[0].toJSON()]));if(l instanceof E){const n=[],t=[];for(let e=0;e<l.rings.length;e++)if(l.isClockwise(l.rings[e])){const t=M({rings:[l.rings[e]],hasZ:!0===l.hasZ,hasM:!0===l.hasM,spatialReference:l.spatialReference.toJSON()});n.push(t)}else t.push({ring:l.rings[e],pt:l.getPoint(e,0)});for(let e=0;e<t.length;e++)for(let r=0;r<n.length;r++)if(n[r].contains(t[e].pt)){n[r].addRing(t[e].ring);break}return n}if(l instanceof k){const n=[];for(let t=0;t<l.paths.length;t++){const e=M({paths:[l.paths[t]],hasZ:!0===l.hasZ,hasM:!0===l.hasM,spatialReference:l.spatialReference.toJSON()});n.push(e)}return n}if(c[0]instanceof C){const t=[],e=f(r(c[0]),n.spatialReference);for(let n=0;n<e.points.length;n++)t.push(e.getPoint(n));return t}return null})},B.functions.isselfintersecting=function(n,t){return B.standardFunctionAsync(n,t,async(n,t,e)=>{i(e,1,1,n,t);let r=(e=a(e))[0];if((q(e[0])||u(e[0]))&&(r=y(e[0],n.spatialReference)),r instanceof C){const n=r.points;for(let t=0;t<n.length;t++)for(let e=t+1;e<n.length;e++)if(x(n[t],n[e]))return!0;return!1}return(r instanceof k||r instanceof E)&&await b("isSelfIntersecting",[r.toJSON()])})},B.functions.issimple=function(n,t){return B.standardFunctionAsync(n,t,(r,o,s)=>{if(s=a(s),i(s,1,1,n,t),null===s[0])return!0;if(!(s[0]instanceof L))throw new e(n,"InvalidParameter",t);return b("isSimple",[s[0].toJSON()])})},B.functions.simplify=function(n,t){return B.standardFunctionAsync(n,t,async(r,o,s)=>{if(s=a(s),i(s,1,1,n,t),null===s[0])return null;if(!(s[0]instanceof L))throw new e(n,"InvalidParameter",t);return M(await b("simplify",[s[0].toJSON()]))})},B.functions.convexhull=function(n,t){return B.standardFunctionAsync(n,t,async(r,o,s)=>{if(s=a(s),i(s,1,1,n,t),null===s[0])return null;if(!(s[0]instanceof L))throw new e(n,"InvalidParameter",t);return M(await b("convexHull",[s[0].toJSON()]))})},B.functions.getuser=function(r,a){return B.standardFunctionAsync(r,a,async(o,s,c)=>{i(c,0,2,r,a);let u=N(c[1],""),f=!0===u;if(u=!0===u||!1===u?"":l(u),0===c.length||c[0]instanceof n){let n;n=r.services?.portal?r.services.portal:T.getDefault(),c.length>0&&(n=O(c[0],n));const e=await Z(n,u,f);if(e){const n=JSON.parse(JSON.stringify(e));for(const t of["lastLogin","created","modified"])void 0!==n[t]&&null!==n[t]&&(n[t]=new Date(n[t]));return t.convertObjectToArcadeDictionary(n,S(r))}return null}let w=null;if(d(c[0])&&(w=c[0]),w){if(f=!1,u)return null;await w.load();const e=await w.getOwningSystemUrl();if(!e){if(!u){const n=await w.getIdentityUser();return n?t.convertObjectToArcadeDictionary({username:n},S(r)):null}return null}let a;a=r.services?.portal?r.services.portal:T.getDefault(),a=O(new n(e),a);const i=await Z(a,u,f);if(i){const n=JSON.parse(JSON.stringify(i));for(const t of["lastLogin","created","modified"])void 0!==n[t]&&null!==n[t]&&(n[t]=new Date(n[t]));return t.convertObjectToArcadeDictionary(n,S(r))}return null}throw new e(r,"InvalidParameter",a)})},B.functions.nearestcoordinate=function(n,r){return B.standardFunctionAsync(n,r,async(o,s,c)=>{if(c=a(c),i(c,2,2,n,r),!(c[0]instanceof L||null===c[0]))throw new e(n,"InvalidParameter",r);if(!(c[1]instanceof U||null===c[1]))throw new e(n,"InvalidParameter",r);if(null===c[0]||null===c[1])return null;const l=c[0]instanceof D?E.fromExtent(c[0]):c[0],u=await b("getNearestCoordinate",[l.toJSON(),c[1].toJSON(),{calculateLeftRightSide:!0}]);return null===u?null:t.convertObjectToArcadeDictionary({coordinate:M(u.coordinate),distance:u.distance,sideOfLine:0===u.distance?"straddle":u.isRightSide?"right":"left"},S(n),!1,!0)})},B.functions.nearestvertex=function(n,r){return B.standardFunctionAsync(n,r,async(o,s,c)=>{if(c=a(c),i(c,2,2,n,r),!(c[0]instanceof L||null===c[0]))throw new e(n,"InvalidParameter",r);if(!(c[1]instanceof U||null===c[1]))throw new e(n,"InvalidParameter",r);if(null===c[0]||null===c[1])return null;const l=c[0]instanceof D?E.fromExtent(c[0]):c[0],u=await b("getNearestVertex",[l.toJSON(),c[1].toJSON()]);return null==u?null:t.convertObjectToArcadeDictionary({coordinate:M(u.coordinate),distance:u.distance,sideOfLine:u.sideOfLine},S(n),!1,!0)})})}export{B as registerFunctions};