You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
13 KiB
29 lines
13 KiB
// All material copyright Esri, All Rights Reserved, unless otherwise specified. |
|
// See https://js.arcgis.com/4.30/esri/copyright.txt for details. |
|
//>>built |
|
define("exports ../../core/Error ../../core/Logger ../../core/maybe ../../geometry/support/aaBoundingBox ../../geometry/support/aaBoundingRect ../../geometry/support/jsonUtils ./OptimizedFeature ./OptimizedFeatureSet ./OptimizedGeometry".split(" "),function(p,F,pa,qa,da,ra,I,C,sa,z){function v(a,b){return a?b?4:3:b?3:2}function J(a,b,c,d){if(a){if(c)return b&&d?ta:ea;if(b&&d)return ua}else if(b&&d)return ea;return va}function K({scale:a,translate:b},c){return Math.round((c-b[0])/a[0])}function L({scale:a, |
|
translate:b},c){return Math.round((b[1]-c)/a[1])}function D({scale:a,translate:b},c,d){return c*a[d]+b[d]}function M(a){a=a.coords;return{x:a[0],y:a[1]}}function fa(a,b){a.coords[0]=b.x;a.coords[1]=b.y;return a}function N(a){a=a.coords;return{x:a[0],y:a[1],z:a[2]}}function wa(a,b){a.coords[0]=b.x;a.coords[1]=b.y;a.coords[2]=b.z;return a}function O(a){a=a.coords;return{x:a[0],y:a[1],m:a[2]}}function xa(a,b){a.coords[0]=b.x;a.coords[1]=b.y;a.coords[2]=b.m;return a}function P(a){a=a.coords;return{x:a[0], |
|
y:a[1],z:a[2],m:a[3]}}function ya(a,b){a.coords[0]=b.x;a.coords[1]=b.y;a.coords[2]=b.z;a.coords[3]=b.m;return a}function Q(a,b){return a&&b?ya:a?wa:b?xa:fa}function ha(a,b,c,d,f){c=Q(c,d);for(const {geometry:e,attributes:g}of b)b=null!=e?c(new z,e):null,a.push(new C.OptimizedFeature(b,g,null,f?g[f]:void 0));return a}function ia(a,b,c=Q(null!=b.z,null!=b.m)){return c(a,b)}function ja(a,b,c,d){for(const {geometry:f,attributes:e}of b)a.push({attributes:e,geometry:null!=f?R(f,c,d):null});return a}function R(a, |
|
b,c){if(null==a)return null;const d=v(b,c),f=[];for(let e=0;e<a.coords.length;e+=d){const g=[];for(let h=0;h<d;h++)g.push(a.coords[e+h]);f.push(g)}return b?c?{points:f,hasZ:b,hasM:c}:{points:f,hasZ:b}:c?{points:f,hasM:c}:{points:f}}function ka(a,b,c,d,f){c=v(c,d);for(const {geometry:e,attributes:g}of b)b=null!=e?S(new z,e,c):null,a.push(new C.OptimizedFeature(b,g,null,f?g[f]:void 0));return a}function S(a,b,c=v(b.hasZ,b.hasM)){a.lengths[0]=b.points.length;const d=a.coords;let f=0;for(const e of b.points)for(b= |
|
0;b<c;b++)d[f++]=e[b];return a}function T(a,b,c){if(!a)return null;const d=v(b,c),{coords:f,lengths:e}=a;a=[];let g=0;for(const h of e){const k=[];for(let n=0;n<h;n++){const l=[];for(let m=0;m<d;m++)l.push(f[g++]);k.push(l)}a.push(k)}return b?c?{paths:a,hasZ:b,hasM:c}:{paths:a,hasZ:b}:c?{paths:a,hasM:c}:{paths:a}}function la(a,b,c,d,f){c=v(c,d);for(const {geometry:e,attributes:g,centroid:h}of b)b=null!=e?U(new z,e,c):null,d=null!=h?ia(new z,h):null,a.push(new C.OptimizedFeature(b,g,d,f?g[f]:void 0)); |
|
return a}function U(a,b,c=v(b.hasZ,b.hasM)){const {lengths:d,coords:f}=a;let e=0;for(const g of b.paths){for(const h of g)for(b=0;b<c;b++)f[e++]=h[b];d.push(g.length)}return a}function V(a,b,c){if(!a)return null;const d=v(b,c),{coords:f,lengths:e}=a;a=[];let g=0;for(const h of e){const k=[];for(let n=0;n<h;n++){const l=[];for(let m=0;m<d;m++)l.push(f[g++]);k.push(l)}a.push(k)}return b?c?{rings:a,hasZ:b,hasM:c}:{rings:a,hasZ:b}:c?{rings:a,hasM:c}:{rings:a}}function W(a,b,c=b.hasZ,d=b.hasM){return ma(a, |
|
b.rings,c,d)}function ma(a,b,c,d){c=v(c,d);const {lengths:f,coords:e}=a;d=0;A(a);for(const g of b){for(const h of g)for(b=0;b<c;b++)e[d++]=h[b];f.push(g.length)}return a}function X(a,b,c,d,f,e){y(a);if(!c){for(const g of b)a.push(new C.OptimizedFeature(null,g.attributes,null,e?g.attributes[e]:void 0));return a}switch(c){case "esriGeometryPoint":return ha(a,b,d,f,e);case "esriGeometryMultipoint":return ka(a,b,d,f,e);case "esriGeometryPolyline":return la(a,b,d,f,e);case "esriGeometryPolygon":for(const {geometry:g, |
|
centroid:h,attributes:k}of b)b=null!=g?W(new z,g,d,f):null,c=e?k[e]:void 0,null!=h?a.push(new C.OptimizedFeature(b,k,fa(new z,h),c)):a.push(new C.OptimizedFeature(b,k,null,c));break;default:G().error("convertToFeatureSet:unknown-geometry",new F(`Unable to parse unknown geometry type '${c}'`)),y(a)}return a}function na(a,b,c,d){a=a&&("coords"in a?a:a.geometry);if(null==a)return null;switch(b){case "esriGeometryPoint":return b=M,c&&d?b=P:c?b=N:d&&(b=O),b(a);case "esriGeometryMultipoint":return R(a, |
|
c,d);case "esriGeometryPolyline":return T(a,c,d);case "esriGeometryPolygon":return V(a,c,d);default:return G().error("convertToGeometry:unknown-geometry",new F(`Unable to parse unknown geometry type '${b}'`)),null}}function Y(a,b,c,d,f){y(a);if(null==c){for(const g of b)a.push({attributes:g.attributes});return a}switch(c){case "esriGeometryPoint":c=M;d&&f?c=P:d?c=N:f&&(c=O);for(var e of b){const {geometry:g,attributes:h}=e;d=null!=g?c(g):null;a.push({attributes:h,geometry:d})}break;case "esriGeometryMultipoint":return ja(a, |
|
b,d,f);case "esriGeometryPolyline":for(const {geometry:g,attributes:h}of b)a.push({attributes:h,geometry:null!=g?T(g,d,f):null});break;case "esriGeometryPolygon":for(const {geometry:g,attributes:h,centroid:k}of b)e=null!=g?V(g,d,f):null,null!=k?(b=M(k),a.push({attributes:h,centroid:b,geometry:e})):a.push({attributes:h,geometry:e});break;default:G().error("convertToFeatureSet:unknown-geometry",new F(`Unable to parse unknown geometry type '${c}'`))}return a}function Z(a,b,c,d,f,e,g=c,h=d){A(a);if(!b?.coords.length)return null; |
|
f=aa[f];const {coords:k,lengths:n}=b;b=v(c,d);const l=v(c&&g,d&&h);c=J(c,d,g,h);if(!n.length)return c(a.coords,k,0,0,K(e,k[0]),L(e,k[1])),A(a,b,0),a;let m,q=0,r,u=0;for(const w of n){if(w<f)continue;let t=0;r=u;h=d=K(e,k[q]);m=g=L(e,k[q+1]);c(a.coords,k,r,q,h,m);t++;q+=b;r+=l;for(let x=1;x<w;x++,q+=b)if(h=K(e,k[q]),m=L(e,k[q+1]),h!==d||m!==g)c(a.coords,k,r,q,h-d,m-g),r+=l,t++,d=h,g=m;t>=f&&(a.lengths.push(t),u=r)}y(a.coords,u);return a.coords.length?a:null}function ba(a,b,c,d,f,e,g){let h=d,k=0;for(let l= |
|
e+c;l<g;l+=c){var n=b[l];const m=b[l+1],q=b[g],r=b[g+1];let u=b[e],w=b[e+1],t=q-u,x=r-w;if(0!==t||0!==x){const B=((n-u)*t+(m-w)*x)/(t*t+x*x);1<B?(u=q,w=r):0<B&&(u+=t*B,w+=x*B)}t=n-u;x=m-w;n=t*t+x*x;n>h&&(k=l,h=n)}h>d&&(k-e>c&&ba(a,b,c,d,f,e,k),f(a,b,a.length,k,b[k],b[k+1]),g-k>c&&ba(a,b,c,d,f,k,g))}function ca(a,b,c,d,f){const {coords:e,lengths:g}=b;c=v(c,d);if(!e.length)return a!==b&&A(a),a;qa.assertIsSome(f);const {originPosition:h,scale:k,translate:n}=f;f=za;f.originPosition=h;d=f.scale;d[0]=k[0]?? |
|
1;d[1]=-(k[1]??1);d[2]=k[2]??1;d[3]=k[3]??1;var l=f.translate;l[0]=n[0]??0;l[1]=n[1]??0;l[2]=n[2]??0;l[3]=n[3]??0;if(!g.length){for(d=0;d<c;++d)a.coords[d]=D(f,e[d],d);a!==b&&A(a,c,0);return a}l=0;for(let q=0;q<g.length;q++){const r=g[q];a.lengths[q]=r;for(var m=0;m<c;++m)a.coords[l+m]=D(f,e[l+m],m);m=a.coords[l];let u=a.coords[l+1];l+=c;for(let w=1;w<r;w++,l+=c){m+=e[l]*d[0];u+=e[l+1]*d[1];a.coords[l]=m;a.coords[l+1]=u;for(let t=2;t<c;++t)a.coords[l+t]=D(f,e[l+t],t)}}a!==b&&A(a,e.length,g.length); |
|
return a}function oa(a,b,c,d){let f=0,e=a[d*b],g=a[d*(b+1)];for(let h=1;h<c;h++){const k=e+a[d*(b+h)],n=g+a[d*(b+h)+1],l=(k-e)*(n+g);e=k;g=n;f+=l}return.5*f}function A(a,b=0,c=0){y(a.lengths,c);y(a.coords,b)}function y(a,b=0){a.length!==b&&(a.length=b)}const G=()=>pa.getLogger("esri.layers.graphics.featureConversionUtils"),aa={esriGeometryPoint:0,esriGeometryPolyline:2,esriGeometryPolygon:3,esriGeometryMultipoint:0,esriGeometryEnvelope:0},va=(a,b,c,d,f,e)=>{a[c]=f;a[c+1]=e},ea=(a,b,c,d,f,e)=>{a[c]= |
|
f;a[c+1]=e;a[c+2]=b[d+2]},ua=(a,b,c,d,f,e)=>{a[c]=f;a[c+1]=e;a[c+2]=b[d+3]},ta=(a,b,c,d,f,e)=>{a[c]=f;a[c+1]=e;a[c+2]=b[d+2];a[c+3]=b[d+3]},E=[],H=[],za={originPosition:"lowerLeft",scale:[1,1,1,1],translate:[0,0,0,0]};p.convertFromFeature=function(a,b,c,d,f){E[0]=a;[a]=X(H,E,b,c,d,f);y(E);y(H);return a};p.convertFromFeatureSet=function(a,b){const c=new sa,{hasM:d,hasZ:f,features:e,objectIdFieldName:g,spatialReference:h,geometryType:k,exceededTransferLimit:n,transform:l,fields:m}=a;m&&(c.fields=m); |
|
c.geometryType=k??null;c.objectIdFieldName=g??b??null;c.spatialReference=h??null;if(!c.objectIdFieldName)return G().error(new F("optimized-features:invalid-objectIdFieldName","objectIdFieldName is missing")),c;e&&X(c.features,e,k,f,d,c.objectIdFieldName);n&&(c.exceededTransferLimit=n);d&&(c.hasM=d);f&&(c.hasZ=f);l&&(c.transform=l);return c};p.convertFromFeatures=X;p.convertFromGeometry=function(a,b,c){if(null==a)return null;const d=new z;"hasZ"in a&&null==b&&(b=a.hasZ);"hasM"in a&&null==c&&(c=a.hasM); |
|
if(I.isPoint(a))return Q(null!=b?b:null!=a.z,null!=c?c:null!=a.m)(d,a);if(I.isPolygon(a))return W(d,a,b,c);if(I.isPolyline(a))return U(d,a,v(b,c));if(I.isMultipoint(a))return S(d,a,v(b,c));G().error("convertFromGeometry:unknown-geometry",new F(`Unable to parse unknown geometry type '${a}'`))};p.convertFromMultipoint=S;p.convertFromMultipointFeatures=ka;p.convertFromNestedArray=ma;p.convertFromPoint=ia;p.convertFromPointFeatures=ha;p.convertFromPolygon=W;p.convertFromPolyline=U;p.convertFromPolylineFeatures= |
|
la;p.convertToFeature=function(a,b,c,d){H[0]=a;Y(E,H,b,c,d);a=E[0];y(E);y(H);return a};p.convertToFeatureSet=function(a){const {objectIdFieldName:b,spatialReference:c,transform:d,fields:f,hasM:e,hasZ:g,features:h,geometryType:k,exceededTransferLimit:n,uniqueIdField:l,queryGeometry:m,queryGeometryType:q}=a;a=Y([],h,k,g,e);const r=na(m,q,!1,!1);a={features:a,fields:f,geometryType:k,objectIdFieldName:b,spatialReference:c,uniqueIdField:l,queryGeometry:r};d&&(a.transform=d);n&&(a.exceededTransferLimit= |
|
n);e&&(a.hasM=e);g&&(a.hasZ=g);return a};p.convertToFeatures=Y;p.convertToGeometry=na;p.convertToMultipoint=R;p.convertToMultipointFeatures=ja;p.convertToPoint=function(a,b,c){return a?b?c?P(a):N(a):c?O(a):M(a):null};p.convertToPolygon=V;p.convertToPolyline=T;p.generalizeOptimizedGeometry=function(a,b,c,d,f,e,g=c,h=d){A(a);if(!b?.coords.length)return null;f=aa[f];const {coords:k,lengths:n}=b;b=v(c,d);const l=v(c&&g,d&&h);c=J(c,d,g,h);if(!n.length)return c(a.coords,k,0,0,k[0],k[1]),A(a,b,0),a;d=0; |
|
e*=e;for(const m of n){if(m<f){d+=m*b;continue}g=a.coords.length/l;h=d;const q=d+(m-1)*b;c(a.coords,k,a.coords.length,h,k[h],k[h+1]);ba(a.coords,k,b,e,c,h,q);c(a.coords,k,a.coords.length,q,k[q],k[q+1]);h=a.coords.length/l-g;h>=f?a.lengths.push(h):y(a.coords,g*l);d+=m*b}return a.coords.length?a:null};p.getBoundsOptimizedGeometry=function(a,b,c,d){if(!b?.coords?.length)return null;c=v(c,d);let f=d=Number.POSITIVE_INFINITY,e=Number.NEGATIVE_INFINITY,g=Number.NEGATIVE_INFINITY;if(b&&b.coords){b=b.coords; |
|
for(let h=0;h<b.length;h+=c){const k=b[h],n=b[h+1];d=Math.min(d,k);e=Math.max(e,k);f=Math.min(f,n);g=Math.max(g,n)}}da.is(a)?da.fromRectValues(a,d,f,e,g):ra.fromValues(d,f,e,g,a);return a};p.getQuantizedArea=function(a,b){const {coords:c,lengths:d}=a;let f=a=0;for(let e=0;e<d.length;e++){const g=d[e];f+=oa(c,a,g,b);a+=g}return Math.abs(f)};p.getQuantizedBoundsOptimizedGeometry=function(a,b,c,d){c=v(c,d);const {lengths:f,coords:e}=b;d=b=Number.POSITIVE_INFINITY;let g=Number.NEGATIVE_INFINITY,h=Number.NEGATIVE_INFINITY, |
|
k=0;for(const n of f){let l=e[k],m=e[k+1];b=Math.min(l,b);d=Math.min(m,d);g=Math.max(l,g);h=Math.max(m,h);k+=c;for(let q=1;q<n;q++,k+=c){const r=e[k],u=e[k+1];l+=r;m+=u;0>r&&(b=Math.min(b,l));0<r&&(g=Math.max(g,l));0>u?d=Math.min(d,m):0<u&&(h=Math.max(h,m))}}a[0]=b;a[1]=d;a[2]=g;a[3]=h;return a};p.getSignedQuantizedRingArea=oa;p.quantizeOptimizedFeatureSet=function(a,b){const {geometryType:c,features:d,hasM:f,hasZ:e}=b;if(!a)return b;for(let g=0;g<d.length;g++){const h=d[g],k=h.weakClone();k.geometry= |
|
new z;Z(k.geometry,h.geometry,f,e,c,a);h.centroid&&(k.centroid=new z,Z(k.centroid,h.centroid,f,e,"esriGeometryPoint",a));d[g]=k}b.transform=a;return b};p.quantizeOptimizedGeometry=Z;p.quantizeX=K;p.quantizeY=L;p.removeCollinearVertices=function(a,b,c,d,f){if(!b?.coords?.length)return null;c=aa[c];const {coords:e,lengths:g}=b;b=J(d,f,d,f);d=v(d,f);let h=f=0,k=0,n=0;for(const q of g){h=n;b(a.coords,e,h,f,e[f],e[f+1]);f+=d;var l=e[f];let r=e[f+1],u=l,w=r;var m=r/l;h+=d;b(a.coords,e,h,f,u,w);f+=d;for(let t= |
|
2;t<q;t++){l=e[f];r=e[f+1];const x=r/l,B=m===x||!isFinite(m)&&!isFinite(x);m=B&&isFinite(x)?0<=m&&0<=x||0>=m&&0>=x:0<=w&&0<=r||0>=w&&0>=r;B&&m?(u+=l,w+=r):(u=l,w=r,h+=d);b(a.coords,e,h,f,u,w);f+=d;m=x}h+=d;l=(h-n)/d;l>=c&&(a.lengths[k]=l,n=h,k++)}a.coords.length>n&&(a.coords.length=n);a.lengths.length>k&&(a.lengths.length=k);return a.coords.length&&a.lengths.length?a:null};p.removeZMValues=function(a,b,c,d,f,e){A(a);a.lengths.push(...b.lengths);if(c===f&&d===e)for(var g=0;g<b.coords.length;g++)a.coords.push(b.coords[g]); |
|
else for(g=v(c,d),c=J(c,d,f,e),b=b.coords,d=0;d<b.length;d+=g)c(a.coords,b,a.coords.length,d,b[d],b[d+1]);return a};p.unquantizeOptimizedFeatureSet=function(a){const {transform:b,features:c,hasM:d,hasZ:f}=a;if(!b)return a;for(const e of c)null!=e.geometry&&ca(e.geometry,e.geometry,d,f,b),null!=e.centroid&&ca(e.centroid,e.centroid,d,f,b);a.transform=null;return a};p.unquantizeOptimizedGeometry=ca;p.unquantizeValue=D;p.unquantizeX=function(a,b){return D(a,b,0)};p.unquantizeY=function(a,b){return D(a, |
|
-b,1)};Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})}); |