UNPKG

@arcgis/core

Version:

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

1 lines • 6.01 kB
"use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[7136],{17136:(e,t,n)=>{n.d(t,{O7:()=>M,el:()=>k});var s=n(92602),r=n(49186),o=n(53966),i=n(39829),c=n(82799),l=n(80754),f=n(21325),a=n(28735),u=n(78888),p=n(65864),h=n(2272),g=n(84952),m=n(92300);const y=()=>o.A.getLogger("esri.geometry.support.normalizeUtils");function d(e){return"polygon"===e[0].type}function A(e){return"polyline"===e[0].type}function x(e,t,n){if(t){const t=function(e,t){if(!(e instanceof c.A||e instanceof i.A)){const e="straightLineDensify: the input geometry is neither polyline nor polygon";throw y().error(e),new r.A("internal:geometry",e)}const n=(0,l.r8)(e),s=[];for(const e of n){const n=[];s.push(n),n.push([e[0][0],e[0][1]]);for(let s=0;s<e.length-1;s++){const r=e[s][0],o=e[s][1],i=e[s+1][0],c=e[s+1][1],l=Math.sqrt((i-r)*(i-r)+(c-o)*(c-o)),f=(c-o)/l,a=(i-r)/l,u=l/t;if(u>1){for(let e=1;e<=u-1;e++){const s=e*t,i=a*s+r,c=f*s+o;n.push([i,c])}const e=(l+Math.floor(u-1)*t)/2,s=a*e+r,i=f*e+o;n.push([s,i])}n.push([i,c])}}return function(e){return"polygon"===e.type}(e)?new i.A({rings:s,spatialReference:e.spatialReference}):new c.A({paths:s,spatialReference:e.spatialReference})}(e,1e6);e=(0,a.ci)(t,!0)}return n&&(e=(0,l.kS)(e,n)),e}function w(e,t,n){if(Array.isArray(e)){const s=e[0];if(s>t){const n=(0,l.kd)(s,t);e[0]=s+n*(-2*t)}else if(s<n){const t=(0,l.kd)(s,n);e[0]=s+t*(-2*n)}}else{const s=e.x;if(s>t){const n=(0,l.kd)(s,t);e=e.clone().offset(n*(-2*t),0)}else if(s<n){const t=(0,l.kd)(s,n);e=e.clone().offset(t*(-2*n),0)}}return e}function R(e,t){let n=-1;for(let s=0;s<t.cutIndexes.length;s++){const r=t.cutIndexes[s],o=t.geometries[s],i=(0,l.r8)(o);for(let e=0;e<i.length;e++){const t=i[e];t.some((n=>{if(n[0]<180)return!0;{let n=0;for(let e=0;e<t.length;e++){const s=t[e][0];n=s>n?s:n}n=Number(n.toFixed(9));const s=-360*(0,l.kd)(n,180);for(let n=0;n<t.length;n++){const t=o.getPoint(e,n);o.setPoint(e,n,t.clone().offset(s,0))}return!0}}))}if(r===n){if(d(e))for(const t of(0,l.r8)(o))e[r]=e[r].addRing(t);else if(A(e))for(const t of(0,l.r8)(o))e[r]=e[r].addPath(t)}else n=r,e[r]=o}return e}async function k(e,t,n){if(!Array.isArray(e))return k([e],t);t&&"string"!=typeof t&&y().warn("normalizeCentralMeridian()","The url object is deprecated, use the url string instead");const r="string"==typeof t?t:t?.url??s.A.geometryServiceUrl;let o,d,A,M,b,S,X,j,L=0;const N=[],O=[];for(const t of e)if(null!=t)if(o||(o=t.spatialReference,d=(0,f.Vp)(o),A=o.isWebMercator,S=A?102100:4326,M=l.j7[S].maxX,b=l.j7[S].minX,X=l.j7[S].plus180Line,j=l.j7[S].minus180Line),d)if("mesh"===t.type)O.push(t);else if("point"===t.type)O.push(w(t.clone(),M,b));else if("multipoint"===t.type){const e=t.clone();e.points=e.points.map((e=>w(e,M,b))),O.push(e)}else if("extent"===t.type){const e=t.clone()._normalize(!1,!1,d);O.push(e.rings?new i.A(e):e)}else if(t.extent){const e=t.extent,n=(0,l.kd)(e.xmin,b)*(2*M);let s=0===n?t.clone():(0,l.kS)(t.clone(),n);e.offset(n,0);let{xmin:r,xmax:o}=e;r=Number(r.toFixed(9)),o=Number(o.toFixed(9)),e.intersects(X)&&o!==M?(L=o>L?o:L,s=x(s,A),N.push(s),O.push("cut")):e.intersects(j)&&r!==b?(L=o*(2*M)>L?o*(2*M):L,s=x(s,A,360),N.push(s),O.push("cut")):O.push(s)}else O.push(t.clone());else O.push(t);else O.push(t);let q=(0,l.kd)(L,M),v=-90;const C=q,G=new c.A;for(;q>0;){const e=360*q-180;G.addPath([[e,v],[e,-1*v]]),v*=-1,q--}if(N.length>0&&C>0){const t=R(N,await async function(e,t,n,s){const r=(0,h.Dl)(e),o=t[0].spatialReference,i={...s,responseType:"json",query:{...r.query,f:"json",sr:(0,f.YX)(o),target:JSON.stringify({geometryType:(0,p.$B)(t[0]),geometries:t}),cutter:JSON.stringify(n)}},c=await(0,u.A)(r.path+"/cut",i),{cutIndexes:l,geometries:a=[]}=c.data;return{cutIndexes:l,geometries:a.map((e=>{const t=(0,p.rS)(e);return t.spatialReference=o,t}))}}(r,N,G,n)),s=[],o=[];for(let n=0;n<O.length;n++){const r=O[n];if("cut"!==r)o.push(r);else{const r=t.shift(),i=e[n];null!=i&&"polygon"===i.type&&i.rings&&i.rings.length>1&&r.rings.length>=i.rings.length?(s.push(r),o.push("simplify")):o.push(A?(0,a.Gh)(r):r)}}if(!s.length)return o;const i=await async function(e,t,n){const s="string"==typeof e?(0,g.An)(e):e,r=t[0].spatialReference,o=(0,p.$B)(t[0]),i={...n,query:{...s.query,f:"json",sr:(0,f.YX)(r),geometries:JSON.stringify((0,m.X)(t))}},{data:c}=await(0,u.A)(s.path+"/simplify",i);return(0,m.V)(c.geometries,o,r)}(r,s,n),c=[];for(let e=0;e<o.length;e++){const t=o[e];"simplify"!==t?c.push(t):c.push(A?(0,a.Gh)(i.shift()):i.shift())}return c}const J=[];for(let e=0;e<O.length;e++){const t=O[e];if("cut"!==t)J.push(t);else{const e=N.shift();J.push(!0===A?(0,a.Gh)(e):e)}}return J}function M(e,t,n){const s=(0,f.Vp)(n);if(null==s)return e;const[r,o]=s.valid,i=2*o;let c=0,l=0;t>o?c=Math.ceil(Math.abs(t-o)/i):t<r&&(c=-Math.ceil(Math.abs(t-r)/i)),e>o?l=Math.ceil(Math.abs(e-o)/i):e<r&&(l=-Math.ceil(Math.abs(e-r)/i));let a=e+(c-l)*i;const u=a-t;return u>o?a-=i:u<r&&(a+=i),a}},80754:(e,t,n)=>{n.d(t,{j7:()=>i,kS:()=>l,kd:()=>c,r8:()=>f});var s=n(82799),r=n(16930),o=n(65864);const i={102100:{maxX:20037508.342788905,minX:-20037508.342788905,plus180Line:new s.A({paths:[[[20037508.342788905,-20037508.342788905],[20037508.342788905,20037508.342788905]]],spatialReference:r.A.WebMercator}),minus180Line:new s.A({paths:[[[-20037508.342788905,-20037508.342788905],[-20037508.342788905,20037508.342788905]]],spatialReference:r.A.WebMercator})},4326:{maxX:180,minX:-180,plus180Line:new s.A({paths:[[[180,-180],[180,180]]],spatialReference:r.A.WGS84}),minus180Line:new s.A({paths:[[[-180,-180],[-180,180]]],spatialReference:r.A.WGS84})}};function c(e,t){return Math.ceil((e-t)/(2*t))}function l(e,t){const n=f(e);for(const e of n)for(const n of e)n[0]+=t;return e}function f(e){return(0,o.Bi)(e)?e.rings:e.paths}},92300:(e,t,n)=>{n.d(t,{V:()=>o,X:()=>r});var s=n(65864);function r(e){return{geometryType:(0,s.$B)(e[0]),geometries:e.map((e=>e.toJSON()))}}function o(e,t,n){const r=(0,s.xD)(t);return e.map((e=>{const t=r.fromJSON(e);return t.spatialReference=n,t}))}}}]);