UNPKG

@arcgis/core

Version:

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

3 lines (2 loc) 1.49 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{getPixelValueRange as t}from"../formats/pixelRangeUtils.js";import{matchAnyMask as e}from"./pixelUtils.js";import n from"../../support/PixelBlock.js";function r(t,e,r){const a=t.length,s=n.createEmptyBand(r,a);for(let n=0;n<a;n++)if(e[n]){const r=t[n];r<=0?e[n]=0:s[n]=Math.log(r)}return s}function a(e,r,a,s){const i=e.length,o=n.createEmptyBand(a,i),[l,c]=t(a),f=s?.lambda??0,m=s?.shift??0,h=0===f;for(let t=0;t<i;t++)if(r[t]){const n=e[t];if(n<=0)r[t]=0;else if(h)o[t]=Math.log(n+m);else{const e=((n+m)**f-1)/f;o[t]=Math.max(l,Math.min(e,c))}}return o}function s(t,e,r){const a=t.length,s=n.createEmptyBand(r,a);for(let n=0;n<a;n++)if(e[n]){const r=t[n];r<0?e[n]=0:s[n]=Math.sqrt(r)}return s}function i(e,r,a){const s=e.length,i=n.createEmptyBand(a,s),[o,l]=t(a);for(let t=0;t<s;t++)if(!r||r[t]){const n=1/e[t];i[t]=i[t]=Math.max(o,Math.min(n,l))}return i}function o(t,o,l){const{width:c,height:f,pixels:m}=t;let h=[];h=t.bandMasks?t.bandMasks.map(t=>new Uint8Array(t)):m.map(()=>t.mask?new Uint8Array(t.mask):new Uint8Array(c*f).fill(255));const p="f32",u=m.map((t,e)=>{switch(o){case"log":return r(t,h[e],p);case"sqrt":return s(t,h[e],p);case"inverse":return i(t,h[e],p);case"box-cox":return a(t,h[e],p,l);default:return t}}),d="inverse"===o,g=d?t.mask:1===h.length?h[0]:e(h),x=d?t.bandMasks:1===h.length?void 0:h;return new n({width:c,height:f,pixelType:p,bandMasks:x,mask:g,pixels:u})}export{o as transformPixels};