12345 |
- /*
- All material copyright ESRI, All Rights Reserved, unless otherwise specified.
- See https://js.arcgis.com/4.25/esri/copyright.txt for details.
- */
- import e from"../../core/Error.js";import{isSome as t}from"../../core/maybe.js";import{getScaleForResolution as i}from"../../geometry/support/scaleUtils.js";import r from"../../renderers/visualVariables/SizeVariable.js";import a from"../statistics/spatialStatistics.js";import{verifyBinningParams as o}from"../support/binningUtils.js";import{binningCapableLayerTypes as s,featureCapableLayerTypes as n,createLayerAdapter as l,getLayerTypeLabels as p}from"../support/adapters/support/layerUtils.js";const u=[{size:10,width:0},{size:20,width:.5},{size:80,width:1},{size:250,width:2}];async function f(i){const{view:r}=i;if(!(i&&r&&i.layer))throw new e("outline:missing-parameters","'view' and 'layer' parameters are required");i.forBinning&&o(i,"outline");const{layer:a,...u}=i,f=i.forBinning?s:n,m=l(a,f,i.forBinning),w={layerAdapter:m,...u};if(!m)throw new e("outline:invalid-parameters","'layer' must be one of these types: "+p(f).join(", "));await r.when();const y=t(w.signal)?{signal:w.signal}:null;if(await m.load(y),"polygon"!==m.geometryType)throw new e("outline:not-supported",`outline is not supported for geometryType: ${m.geometryType}`);return w}function m(e,t){const a=e.avgSize,o=i(1,t.spatialReference),s=u.map((e=>({size:e.width,value:Math.round(a/e.size*o)})));s.sort(((e,t)=>e.value-t.value));return{visualVariables:[new r({target:"outline",valueExpression:"$view.scale",stops:s})],opacity:.25}}async function w(t){const{layerAdapter:i,...r}=await f(t),o=-1,s=await i.getSampleFeatures({sampleSize:o,returnGeometry:!0,...r});if(!s?.length)throw new e("outline:insufficient-info","No features are available to calculate statistics");const n=await a({features:s,geometryType:i.geometryType});if(!("avgSize"in n)||!n.avgSize)throw new e("outline:insufficient-info","average polygon size is invalid");return m(n,r.view)}export{w as default};
|