UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 1.19 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import{loadArcade as e}from"../../../support/arcadeOnDemand.js";function t(e,t,n){return null!=e&&isFinite(e)&&((t??!0)||0!==e)&&((n??!0)||e>=0)}async function n(n){const{features:i,attributes:s,includeZeros:o,includeNegatives:l,view:c}=n;let a=0,r=0,u=1/0,f=-1/0,d=null;const p=new Map;for(let t=0;t<s.length;t++){const{valueExpression:n}=s[t];if(n){if(!d){const{arcadeUtils:t}=await e();d=t}p.set(t,d.createFunction(n))}}const g=c?d?.getViewInfo({viewingMode:"2d"===c.type?"map":c.viewingMode,scale:c.scale,spatialReference:c.spatialReference}):null;for(const e of i){const n=e.geometry,i=e.attributes;if(n){const m=n.extent;if(m){const n=m.width*m.height;if(n>0){let m=0;const x=d?.createExecContext(e,g,c?.timeZone);for(let e=0;e<s.length;e++){const{field:n,valueExpression:c}=s[e];let a=null;if(n)a=i[n];else if(c){const t=p.get(e);a=d.executeFunction(t,x)}t(a,o,l)&&(m+=a||0)}if(t(m,o,l)){const e=m/n;++a,r+=e,e<u&&(u=e),e>f&&(f=e)}}}}}return{minDensity:u!==1/0?u:null,maxDensity:f!==-1/0?f:null,avgDensity:a?r/a:null}}export{n as default};