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.
25 lines
11 KiB
25 lines
11 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 ../../Color ../../rasterRenderers ../../core/unitUtils ../../layers/support/Field ../FlowRenderer ./AuthoringInfo ./ClassBreakInfo ./colorRampUtils ./rasterRendererChecks ./UniqueValueInfo ../visualVariables/ColorVariable ../visualVariables/SizeVariable ../visualVariables/support/ColorStop ../../rest/support/ClassBreaksDefinition ../../rest/support/generateRendererUtils ../../rest/support/MultipartColorRamp ../../symbols/SimpleFillSymbol ../RasterStretchRenderer ../UniqueValueRenderer ../RasterColormapRenderer ../RasterShadedReliefRenderer ../ClassBreaksRenderer ../VectorFieldRenderer".split(" "), |
|
function(k,x,ra,Z,aa,ba,K,ca,E,r,L,da,ea,M,fa,ha,N,F,ia,ja,ka,la,ma,na){function G(a,b){a=H(a,b?.variableName);const {bandCount:c}=a;let {bandIds:d,stretchType:e}=b||{};d?.some(p=>p>=c)&&(d=null);let f=a.statistics,g=a.histograms;1<c?(d=d?.length?d:O(a),f=null==f?null:d?.map(p=>f[p]),g=null==g?null:d?.map(p=>g[p])):d=[0];null==e&&(e=oa(a));let q=!1;switch(e){case "none":q=!1;break;case "percent-clip":q=!g?.length;break;default:q=!f?.length}var {dataType:l}=a;l=1===d?.length&&P.has(l)?Q:null;l=new ia({stretchType:e, |
|
dynamicRangeAdjustment:q,colorRamp:l,outputMin:0,outputMax:255,gamma:1===d?.length?[1]:[1,1,1],useGamma:!1});"percent-clip"===e?l.maxPercent=l.minPercent=.25:"standard-deviation"===e&&(l.numberOfStandardDeviations=2);if(!q&&(null!=a.multidimensionalInfo||b?.includeStatisticsInStretch))if("percent-clip"===e)l.histograms=g;else if("min-max"===e||"standard-deviation"===e)l.statistics=f;return l}function H(a,b){var {multidimensionalInfo:c}=a;if(!b||!c)return a;c=c.variables.find(d=>d.name===b);if(!c)return a; |
|
a=a.clone();if(c){const {statistics:d,histograms:e}=c;d?.length&&(a.statistics=d.map(f=>({min:f.min,max:f.max,avg:f.avg,stddev:f.stddev})));e?.length&&(a.histograms=e)}return a}function O(a){const b=a.bandCount;if(1===b)return null;if(2===b)return[0];({bandInfos:a}=a);let c;if(a.length===b){const {red:d,green:e,blue:f,nir:g}=R(a);null!=d&&null!=e&&null!=f?c=[d,e,f]:null!=g&&null!=d&&null!=e&&(c=[g,d,e])}!c&&3<=b&&(c=[0,1,2]);return c}function R(a){const b={};for(let e=0;e<a.length;e++){var c=a[e], |
|
d=c.name.toLowerCase();"red"===d?b.red=e:"green"===d?b.green=e:"blue"===d?b.blue=e:"nearinfrared"===d||"nearinfrared_1"===d||"nir"===d?b.nir=e:c.maxWavelength&&c.minWavelength&&(d=c.minWavelength,c=c.maxWavelength,null==b.blue&&410<=d&&480>=d&&480<=c&&540>=c?b.blue=e:null==b.green&&490<=d&&560>=d&&560<=c&&610>=c?b.green=e:null==b.red&&595<=d&&670>=d&&660<=c&&730>=c?b.red=e:null==b.nir&&700<=d&&860>=d&&800<=c&&950>=c&&(b.nir=e))}return b}function oa(a){let b="percent-clip";const {pixelType:c,dataType:d, |
|
histograms:e,statistics:f,multidimensionalInfo:g}=a;a=P.has(d)||"generic"===d&&null!=g;"u8"!==c||"processed"!==d&&null!=e&&null!=f?"u8"===c||"elevation"===d||a?b="min-max":null!=e?b="percent-clip":null!=f&&(b="min-max"):b="none";return b}function S(a,b,c,d){if(!r.isUVRendererSupported(a,b))return null;const {attributeTable:e,statistics:f}=a,g=I(e,b),q=A(e,"red"),l=A(e,"green"),p=A(e,"blue");a=new K;const t=[],w=new Set,v=!!(q&&l&&p);if(null!=e)e.features.forEach(m=>{var n=m.attributes[g.name];w.has(m.attributes[g.name])|| |
|
null==n||(w.add(n),n=!v||"single"!==q.type&&"double"!==q.type||"single"!==l.type&&"double"!==l.type||"single"!==p.type&&"double"!==p.type||e.features.some(h=>1<h.attributes[q.name]||1<h.attributes[l.name]||1<h.attributes[p.name])?1:255,t.push(new L({value:m.attributes[g.name],label:m.attributes[g.name]+"",symbol:new F({style:"solid",outline:null,color:v?new x([m.attributes[q.name]*n,m.attributes[l.name]*n,m.attributes[p.name]*n,1]):new x([0,0,0,0])})})))});else if(f?.[0])for(b=f[0].min;b<=f[0].max;b++)t.push(new L({value:b, |
|
label:b.toString(),symbol:new F({style:"solid",outline:null,color:new x([0,0,0,0])})}));t.sort((m,n)=>m.value&&"string"===typeof m.value.valueOf()?0:m.value>n.value?1:-1);if(!v){const m=E.convertColorRampToColormap(T,{numColors:t.length});t.forEach((n,h)=>n.symbol.color=new x(m[h].slice(1,4)));a.colorRamp=T}if(c||d){const m=c||E.convertColorRampToColormap(d,{numColors:t.length}).map(n=>n.slice(1));t.forEach((n,h)=>n.symbol.color=new x(m[h]));a.colorRamp=d}return new ja({field:g.name,uniqueValueInfos:t, |
|
authoringInfo:a})}function I(a,b,c){let d;null!=a?(d=b?a.fields.find(e=>b.toLowerCase()===e.name.toLowerCase()):pa(a.fields),d||(c||(d=a.fields.find(e=>"string"===e.type)),d||=A(a,"value"))):d=new aa({name:"value"});return d}function pa(a){let b;for(let c=0;c<a.length;c++){const d=a[c].name.toLowerCase();if("string"===a[c].type){if(d.startsWith("class")){b=a[c];break}null==b&&(d.endsWith("name")||d.endsWith("type"))&&(b=a[c])}}return b}function A(a,b){return null==a?null:a.fields.find(c=>c.name.toLowerCase()=== |
|
b)}function U(a){if(!r.isColormapRendererSupported(a))return null;let b;const {attributeTable:c,colormap:d}=a;if(null!=c){const e=A(c,"value"),f=I(c,null,!0);"string"===f.type&&(b={},c.features.forEach(g=>{g=g.attributes;b[g[e.name]]=f?g[f.name]:g[e.name]}))}return ka.createFromColormap(d,b)}function V(a,b,c){let d=0,e=0;null!=a.attributeTable?(a=a.attributeTable,d=e=a.features[0].attributes[b.name],a.features.forEach(f=>{f=f.attributes[b.name];f<d&&(d=f);f>e&&(e=f)})):null!=a.histograms&&(a=a.histograms, |
|
d=a[0].min,e=a[0].max);return(e-d)/c}function W(a){if(!r.isVectorFieldRendererSupported(a))return null;if(null!=a.statistics&&a.statistics.length&&("vector-magdir"===a.dataType||"vector-uv"===a.dataType)){const {minMagnitude:c,maxMagnitude:d}=J(a.dataType,a.statistics);var b=[new ea({field:"Magnitude",minSize:10,maxSize:40,minDataValue:c,maxDataValue:d})]}a=null!=a.multidimensionalInfo?qa.get(a.multidimensionalInfo.variables[0].unit):void 0;b=new na({visualVariables:b,inputUnit:a,rotationType:"geographic"}); |
|
b.visualVariables=[...b.sizeVariables,...b.rotationVariables];return b}function X(a){return{color:a.symbolLayers[0].material?.color,type:"esriSFS",style:"esriSFSSolid"}}function J(a,b){if("vector-magdir"===a)a=b[0].min,b=b[0].max;else{const c=b[0].min,d=b[0].max,e=b[1].min;b=b[1].max;a=0;b=Math.max(Math.abs(c),Math.abs(e),Math.abs(d),Math.abs(b))}return{minMagnitude:a,maxMagnitude:b}}const Q=N.fromJSON({type:"multipart",colorRamps:[{fromColor:[0,0,255],toColor:[0,255,255]},{fromColor:[0,255,255], |
|
toColor:[255,255,0]},{fromColor:[255,255,0],toColor:[255,0,0]}]}),T=N.fromJSON(E.predefinedJsonColorRamps[0]),P=new Set("scientific standard-time vector-uv vector-magdir vector-u vector-v vector-magnitude vector-direction".split(" ")),qa=new Map([["m/s","meter-per-second"],["km/h","kilometer-per-hour"],["knots","knots"],["ft/s","feet-per-second"],["mph","mile-per-hour"]]);k.createClassBreaksRenderer=function(a,b){a=H(a,b?.variableName);const {attributeTable:c}=a;if(!r.isClassBreaksSupported(a))return null; |
|
const d=null!=a.histograms?a.histograms[0]:null,e=null!=b?.numClasses&&isFinite(b?.numClasses)?b.numClasses:5,f=new K({classificationMethod:b?.classificationMethod,colorRamp:b?.colorRamp});let g=b?.field||"value";const q=[],l=[],p=null!=c,t=p&&c.fields.find(h=>"count"===h.name.toLowerCase()),w=p?c.fields.find(h=>h.name.toLowerCase()===g.toLowerCase()):void 0;if(w&&p){g=w.name;const h=c.features.length;let B=0;c.features.forEach(u=>B+=(t?u.attributes[t.name]:50)/h);c.features.forEach(u=>{const C=u.attributes[w.name]; |
|
u=t?u.attributes[t.name]:50;if(0<u){l.push(u);u=Math.max(1,Math.round(u/h/B*1E3));for(let D=0;D<u;D++)q.push(C)}})}else{var {pixelType:v}=a;const h=(d.max-d.min)/d.size,B=(v=v.includes("s")||v.includes("u"))&&1===h?Math.floor(d.min+.5):d.min,u=v&&1===h?Math.floor(d.max-.5):d.max,C=d.size;let D=0,Y;d.counts.forEach(y=>D+=y/C);d.counts.forEach((y,z)=>{if(0<y)for(l.push(y),y=Math.max(1,Math.round(y/C/D*1E3)),Y=p?c.features[z].attributes[w.name]:0===z?B:z===C-1?u:d.min+h*(z+.5),z=0;z<y;z++)q.push(Y)})}v= |
|
b?.classificationMethod||"natural-breaks";let m=b?.definedInterval;"defined-interval"!==v||m||(m=V(a,w,e));a=ha.createGenerateRendererClassBreaks({values:q,valueFrequency:l,normalizationTotal:null,definition:new fa({classificationMethod:v,breakCount:e,definedInterval:m})});let n=b?.colors;n||(b=b?.colorRamp||Q,f.colorRamp=b,n=E.convertColorRampToColormap(b,{numColors:a.classBreaks.length,interpolateAlpha:!0}).map(h=>h.slice(1)));b=a.classBreaks.map((h,B)=>new ca({minValue:h.minValue,maxValue:h.maxValue, |
|
label:h.label,symbol:new F({color:n[B]})}));return new ma({field:g,classBreakInfos:b,authoringInfo:f})};k.createColormapRenderer=U;k.createDefaultRenderer=function(a,b){const {attributeTable:c,colormap:d}=a;if(r.isVectorFieldRendererSupported(a)){var e=W(a);if(null!=e)return e}return b?.rasterFunctionColorRamp?(a=G(a,b),a.colorRamp=b.rasterFunctionColorRamp,a):null!=d&&(e=U(a),null!=e)||null!=c&&(e=S(a),null!=e)?e:G(a,b)};k.createFlowRenderer=function(a){if(!r.isFlowRendererSupported(a))return null; |
|
let b;if(null!=a.statistics&&0<a.statistics.length&&("vector-magdir"===a.dataType||"vector-uv"===a.dataType)){const {minMagnitude:c,maxMagnitude:d}=J(a.dataType,a.statistics);b=[new da({field:"Magnitude",stops:[new M({value:c,color:new x("#1020C0")}),new M({value:d,color:new x("#C02010")})]})]}return new ba({visualVariables:b})};k.createShadedReliefRenderer=function(a,b="traditional"){if(!r.isShadedReliefRendererSupported(a))return null;({extent:a}=a);a=a.width*Z.getMetersPerUnitForSR(a.spatialReference); |
|
return new la({hillshadeType:b,scalingType:5E6<a?"adjusted":"none"})};k.createStretchRenderer=G;k.createUVRenderer=S;k.createVectorFieldRenderer=W;k.estimateMagnitudeRange=J;k.getBandNames=function(a,b){const c=a.bandInfos.map(({name:d})=>d);return b?.length?b.map(d=>c[d]):c};k.getClassField=I;k.getDefaultBandCombination=O;k.getDefaultInterpolation=function(a,b,c){const d=c?.toLowerCase().replace("bicubic","cubic");c=["nearest","bilinear","cubic","majority"].find(e=>e===d);return"Map"===b?c??"bilinear": |
|
"standard-time"===a.dataType?c??"nearest":"thematic"===a.dataType||a.attributeTable||a.colormap?"nearest"===c||"majority"===c?c:"nearest":c??"bilinear"};k.getDefinedInterval=V;k.getField=A;k.getFunctionColorramp=function(a){return"Function"===a.datasetFormat&&"Colormap"===a.rasterFunction.functionName?a.rasterFunction.colorRamp:void 0};k.getSupportedRendererTypes=function(a,b=!1){const c=["raster-stretch"];r.isColormapRendererSupported(a,b)&&c.push("raster-colormap");r.isUVRendererSupported(a)&&c.push("unique-value"); |
|
r.isClassBreaksSupported(a,b)&&c.push("class-breaks");r.isShadedReliefRendererSupported(a)&&c.push("raster-shaded-relief");r.isVectorFieldRendererSupported(a)&&c.push("vector-field");r.isFlowRendererSupported(a)&&c.push("flow");return c};k.getVariableRasterInfo=H;k.getWellKnownBandIndexes=R;k.normalizeRendererJSON=function(a){if("uniqueValue"===a.type){var b=a.uniqueValueInfos;b?.[0].symbol?.symbolLayers?.length&&(a.uniqueValueInfos=b?.map(c=>({value:c.value,label:c.label,symbol:c.symbol?X(c.symbol): |
|
null})));return a}"classBreaks"===a.type&&(b=a.classBreakInfos,b[0].symbol?.symbolLayers?.length&&(a.classBreakInfos=b.map(c=>({classMinValue:c.classMinValue,classMaxValue:c.classMaxValue,label:c.label,symbol:c.symbol?X(c.symbol):null}))));return a};Object.defineProperty(k,Symbol.toStringTag,{value:"Module"})}); |