@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 10.3 kB
JavaScript
import e from"../Dictionary.js";import n from"../Feature.js";import t from"../ImmutablePointArray.js";import{y as r,m as a,x as i,q as o,F as s,G as l,v as c,c as f,j as u,k as m,b as h,a as p,i as w,f as d,C as y,w as g,s as R,H as I}from"../../chunks/languageUtils.js";import v from"../../geometry/Extent.js";import P from"../../geometry/Geometry.js";import x from"../../geometry/Multipoint.js";import b from"../../geometry/Point.js";import F from"../../geometry/Polygon.js";import j from"../../geometry/Polyline.js";import{angle2D as O,angleBetween2D as S,bearing2D as N,bearingBetween2D as k,pathsSelfIntersecting as J}from"./centroid.js";import{fromJSON as G}from"../../geometry/support/jsonUtils.js";import{ArcadeExecutionError as z,ExecutionErrorCodes as D}from"../executionError.js";import _ from"../ImmutablePathArray.js";import{isClockwise as C}from"../../geometry/support/coordsUtils.js";function M(e){return e&&"esri.arcade.Feature"===e.arcadeDeclaredClass}function Z(_,Z){_.ringisclockwise=function(e,n){return Z(e,n,((o,s,l)=>{r(l,1,1,e,n);let c=[],f=!1,u=!1;if(null===l[0])return!1;if(a(l[0])){for(const t of l[0]){if(!(t instanceof b))throw new z(e,D.InvalidParameter,n);c.push(t.hasZ?t.hasM?[t.x,t.y,t.z,t.m]:[t.x,t.y,t.z]:[t.x,t.y])}c.length>0&&(f=l[0][0].hasZ,u=l[0][0].hasM)}else if(l[0]instanceof t)c=l[0]._elements,c.length>0&&(f=l[0]._hasZ,u=l[0]._hasM);else{if(!i(l[0]))throw new z(e,D.InvalidParameter,n);for(const t of l[0].toArray()){if(!(t instanceof b))throw new z(e,D.InvalidParameter,n);c.push(t.hasZ?t.hasM?[t.x,t.y,t.z,t.m]:[t.x,t.y,t.z]:[t.x,t.y])}c.length>0&&(f=l[0].get(0).hasZ,u=l[0].get(0).hasM)}return!(c.length<3)&&C(c,u,f)}))},_.polygon=function(t,a){return Z(t,a,((i,l,c)=>{r(c,1,1,t,a);let f=null;if(c[0]instanceof e){if(f=o(n.parseGeometryFromDictionary(c[0]),t.spatialReference),f instanceof F==!1)throw new z(t,D.InvalidParameter,a)}else f=c[0]instanceof F?G(c[0].toJSON()):o(new F(JSON.parse(c[0])),t.spatialReference);if(null!==f&&!1===f.spatialReference.equals(t.spatialReference))throw new z(t,D.WrongSpatialReference,a);return s(f)}))},_.polyline=function(t,a){return Z(t,a,((i,l,c)=>{r(c,1,1,t,a);let f=null;if(c[0]instanceof e){if(f=o(n.parseGeometryFromDictionary(c[0]),t.spatialReference),f instanceof j==!1)throw new z(t,D.InvalidParameter,a)}else f=c[0]instanceof j?G(c[0].toJSON()):o(new j(JSON.parse(c[0])),t.spatialReference);if(null!==f&&!1===f.spatialReference.equals(t.spatialReference))throw new z(t,D.WrongSpatialReference,a);return s(f)}))},_.point=function(t,a){return Z(t,a,((i,l,c)=>{r(c,1,1,t,a);let f=null;if(c[0]instanceof e){if(f=o(n.parseGeometryFromDictionary(c[0]),t.spatialReference),f instanceof b==!1)throw new z(t,D.InvalidParameter,a)}else f=c[0]instanceof b?G(c[0].toJSON()):o(new b(JSON.parse(c[0])),t.spatialReference);if(null!==f&&!1===f.spatialReference.equals(t.spatialReference))throw new z(t,D.WrongSpatialReference,a);return s(f)}))},_.multipoint=function(t,a){return Z(t,a,((i,l,c)=>{r(c,1,1,t,a);let f=null;if(c[0]instanceof e){if(f=o(n.parseGeometryFromDictionary(c[0]),t.spatialReference),f instanceof x==!1)throw new z(t,D.InvalidParameter,a)}else f=c[0]instanceof x?G(c[0].toJSON()):o(new x(JSON.parse(c[0])),t.spatialReference);if(null!==f&&!1===f.spatialReference.equals(t.spatialReference))throw new z(t,D.WrongSpatialReference,a);return s(f)}))},_.extent=function(t,a){return Z(t,a,((i,c,f)=>{f=l(f),r(f,1,1,t,a);let u=null;if(f[0]instanceof e)u=o(n.parseGeometryFromDictionary(f[0]),t.spatialReference);else if(f[0]instanceof b){const e={xmin:f[0].x,ymin:f[0].y,xmax:f[0].x,ymax:f[0].y,spatialReference:f[0].spatialReference.toJSON()},n=f[0];n.hasZ?(e.zmin=n.z,e.zmax=n.z):n.hasM&&(e.mmin=n.m,e.mmax=n.m),u=G(e)}else u=f[0]instanceof F||f[0]instanceof j||f[0]instanceof x?G(f[0].extent?.toJSON()):f[0]instanceof v?G(f[0].toJSON()):o(new v(JSON.parse(f[0])),t.spatialReference);if(null!==u&&!1===u.spatialReference.equals(t.spatialReference))throw new z(t,D.WrongSpatialReference,a);return s(u)}))},_.geometry=function(t,a){return Z(t,a,((i,l,c)=>{r(c,1,1,t,a);let f=null;if(null===c[0])return null;if(f=M(c[0])?o(c[0].geometry(),t.spatialReference):c[0]instanceof e?o(n.parseGeometryFromDictionary(c[0]),t.spatialReference):o(G(JSON.parse(c[0])),t.spatialReference),null!==f&&!1===f.spatialReference.equals(t.spatialReference))throw new z(t,D.WrongSpatialReference,a);return s(f)}))},_.setgeometry=function(e,n){return Z(e,n,((t,a,i)=>{if(r(i,2,2,e,n),!M(i[0]))throw new z(e,D.InvalidParameter,n);if(!0===i[0].immutable)throw new z(e,D.Immutable,n);if(!(i[1]instanceof P||null===i[1]))throw new z(e,D.InvalidParameter,n);return i[0]._geometry=i[1],c}))},_.feature=function(t,r){return Z(t,r,((a,i,s)=>{if(0===s.length)throw new z(t,D.WrongNumberOfParameters,r);let l=null;if(1===s.length)if(f(s[0]))l=n.fromJson(JSON.parse(s[0]),t.timeReference);else if(M(s[0]))l=n.createFromArcadeFeature(s[0]);else if(s[0]instanceof P)l=n.createFromGraphicLikeObject(s[0],null,null,t.timeReference);else{if(!(s[0]instanceof e))throw new z(t,D.InvalidParameter,r);{let r=s[0].hasField("geometry")?s[0].field("geometry"):null,a=s[0].hasField("attributes")?s[0].field("attributes"):null;null!==r&&r instanceof e&&(r=n.parseGeometryFromDictionary(r)),null!==a&&(a=n.parseAttributesFromDictionary(a)),l=n.createFromGraphicLikeObject(r,a,null,t.timeReference)}}else if(2===s.length){let a=null,i=null;if(null!==s[0])if(s[0]instanceof P)a=s[0];else{if(!(a instanceof e))throw new z(t,D.InvalidParameter,r);a=n.parseGeometryFromDictionary(s[0])}if(null!==s[1]){if(!(s[1]instanceof e))throw new z(t,D.InvalidParameter,r);i=n.parseAttributesFromDictionary(s[1])}l=n.createFromGraphicLikeObject(a,i,null,t.timeReference)}else{let a=null;const i={};if(null!==s[0])if(s[0]instanceof P)a=s[0];else{if(!(a instanceof e))throw new z(t,D.InvalidParameter,r);a=n.parseGeometryFromDictionary(s[0])}for(let e=1;e<s.length;e+=2){const n=u(s[e]),a=s[e+1];if(!(null==a||f(a)||isNaN(a)||m(a)||h(a)||p(a)))throw new z(t,D.InvalidParameter,r);if(w(a)||!1===d(a))throw new z(t,D.InvalidParameter,r);i[n]=a===c?null:a}l=n.createFromGraphicLikeObject(a,i,null,t.timeReference)}return l._geometry=o(l.geometry(),t.spatialReference),l.immutable=!1,l}))},_.dictionary=function(n,t){return Z(n,t,((r,o,s)=>{if(0===s.length){const n=new e;return n.immutable=!1,n}if(1===s.length&&f(s[0]))try{const t=JSON.parse(s[0]),r=e.convertObjectToArcadeDictionary(t,y(n),!1);return r.immutable=!1,r}catch(g){throw new z(n,D.InvalidParameter,t)}if(s.length%2!=0)throw new z(n,D.WrongNumberOfParameters,t);const l={};for(let e=0;e<s.length;e+=2){const r=u(s[e]),o=s[e+1];if(!(null==o||f(o)||isNaN(o)||m(o)||h(o)||p(o)||a(o)||i(o)))throw new z(n,D.InvalidParameter,t);if(w(o))throw new z(n,D.InvalidParameter,t);l[r]=o===c?null:o}const d=new e(l);return d.immutable=!1,d}))},_.haskey=function(n,t){return Z(n,t,((a,i,o)=>{r(o,2,2,n,t);const s=u(o[1]);if(M(o[0]))return o[0].hasField(s);if(o[0]instanceof e)return o[0].hasField(s);if(o[0]instanceof P){const e=q(o[0],s,null,null,2);return!e||"notfound"!==e.keystate}throw new z(n,D.InvalidParameter,t)}))},_.hasvalue=function(n,t){return Z(n,t,((a,i,o)=>{if(r(o,2,2,n,t),null===o[0]||null===o[1])return!1;const s=u(o[1]);if(g(o[0]))return!!o[0].hasField(s)&&null!==o[0].field(s);if(o[0]instanceof e)return!!o[0].hasField(s)&&null!==o[0].field(s);if(o[0]instanceof P){return null!==q(o[0],s,null,null,0)}return!1}))},_.indexof=function(e,n){return Z(e,n,((t,o,s)=>{r(s,2,2,e,n);const l=s[1];if(a(s[0])){for(let e=0;e<s[0].length;e++)if(R(l,s[0][e]))return e;return-1}if(i(s[0])){const e=s[0].length();for(let n=0;n<e;n++)if(R(l,s[0].get(n)))return n;return-1}throw new z(e,D.InvalidParameter,n)}))},_.angle=function(e,n){return Z(e,n,((t,a,i)=>{if(i=l(i),r(i,2,3,e,n),!(i[0]instanceof b))throw new z(e,D.InvalidParameter,n);if(!(i[1]instanceof b))throw new z(e,D.InvalidParameter,n);if(i.length>2&&!(i[2]instanceof b))throw new z(e,D.InvalidParameter,n);return 2===i.length?O(i[0],i[1]):S(i[0],i[1],i[2])}))},_.bearing=function(e,n){return Z(e,n,((t,a,i)=>{if(i=l(i),r(i,2,3,e,n),!(i[0]instanceof b))throw new z(e,D.InvalidParameter,n);if(!(i[1]instanceof b))throw new z(e,D.InvalidParameter,n);if(i.length>2&&!(i[2]instanceof b))throw new z(e,D.InvalidParameter,n);return 2===i.length?N(i[0],i[1]):k(i[0],i[1],i[2])}))},_.isselfintersecting=function(e,n){return Z(e,n,((t,o,s)=>{s=l(s),r(s,1,1,e,n);let c=s[0];if(c instanceof F)return c.isSelfIntersecting;if(c instanceof j)return c=c.paths,J(c);if(c instanceof x){const e=c.points;for(let n=0;n<e.length;n++)for(let t=0;t<e.length;t++)if(t!==n){let r=!0;for(let a=0;a<e[n].length;a++)if(e[n][a]!==e[t][a]){r=!1;break}if(!0===r)return!0}}return!(!a(c)&&!i(c))&&(c=I(c,e.spatialReference),null!==c&&(c=c.paths),J(c))}))}}let W=0;function q(n,r,a,i,o=1){let s;switch(r=r.toLowerCase()){case"hasz":{const e=n.hasZ;return void 0!==e&&e}case"hasm":{const e=n.hasM;return void 0!==e&&e}case"spatialreference":{let t=n.spatialReference._arcadeCacheId;if(void 0===t){let e=!0;Object.freeze&&Object.isFrozen(n.spatialReference)&&(e=!1),e&&(W++,n.spatialReference._arcadeCacheId=W,t=W)}const r=new e({wkt:n.spatialReference.wkt,wkid:n.spatialReference.wkid});return void 0!==t&&(r._arcadeCacheId="SPREF"+t.toString()),r}}switch(n.type){case"extent":switch(r){case"xmin":case"xmax":case"ymin":case"ymax":case"zmin":case"zmax":case"mmin":case"mmax":{const e=n[r];return void 0!==e?e:null}case"type":return"Extent"}break;case"polygon":switch(r){case"rings":s=n.cache._arcadeCacheId,void 0===s&&(W++,s=W,n.cache._arcadeCacheId=s);return new _(n.rings,n.spatialReference,!0===n.hasZ,!0===n.hasM,s);case"type":return"Polygon"}break;case"point":switch(r){case"x":case"y":case"z":case"m":return void 0!==n[r]?n[r]:null;case"type":return"Point"}break;case"polyline":switch(r){case"paths":s=n.cache._arcadeCacheId,void 0===s&&(W++,s=W,n.cache._arcadeCacheId=s);return new _(n.paths,n.spatialReference,!0===n.hasZ,!0===n.hasM,s);case"type":return"Polyline"}break;case"multipoint":switch(r){case"points":s=n.cache._arcadeCacheId,void 0===s&&(W++,s=W,n.cache._arcadeCacheId=s);return new t(n.points,n.spatialReference,!0===n.hasZ,!0===n.hasM,s,1);case"type":return"Multipoint"}}if(1===o)throw new z(a,D.InvalidIdentifier,i);return 2===o?{keystate:"notfound"}:null}export{q as geometryMember,Z as registerFunctions};