@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 11.4 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import{fixNaN as t,clipBandToPixelTypeRange as e}from"../formats/pixelRangeUtils.js";import n from"../../support/PixelBlock.js";import{localConditionalOperation as r,localTrigonometricOperation as o,localLogicalOperation as s}from"../../support/rasterFunctionConstants.js";const a=new Map([[o.acos,{domain:[0,Math.PI],isInteger:!1}],[o.asin,{domain:[-Math.PI/2,Math.PI/2],isInteger:!1}],[o.atan,{domain:[-Math.PI/2,Math.PI/2],isInteger:!1}],[o.cos,{domain:[-1,1],isInteger:!1}],[o.sin,{domain:[-1,1],isInteger:!1}],[s.booleanAnd,{domain:[0,1],isInteger:!0}],[s.booleanNot,{domain:[0,1],isInteger:!0}],[s.booleanOr,{domain:[0,1],isInteger:!0}],[s.booleanXOr,{domain:[0,1],isInteger:!0}],[s.equalTo,{domain:[0,1],isInteger:!0}],[s.notEqual,{domain:[0,1],isInteger:!0}],[s.greaterThan,{domain:[0,1],isInteger:!0}],[s.greaterThanEqual,{domain:[0,1],isInteger:!0}],[s.lessThan,{domain:[0,1],isInteger:!0}],[s.lessThanEqual,{domain:[0,1],isInteger:!0}],[s.isNull,{domain:[0,1],isInteger:!0}]]);function l(t){return a.get(t)}const c=[0,2,2,2,1,2,1,1,1,1,1,2,2,1,2,2,2,2,1,2,2,1,1,2,2,1,1,1,2,2,1,1,1,2,2,1,1,1,999,999,999,999,999,999,2,1,2,999,1,1,2,1,1,1,999,999,1,1,999,1,1,2,999,999,2,2,999,999,999,999,999,999,999,999,999,999,3,999,3];function f(t,e=!1){const n=t.map(t=>t.mask),r=n.filter(t=>null!=t),o=t[0].pixels[0].length;if(0===r.length||e&&r.length!==n.length)return new Uint8Array(o).fill(255);const s=r[0],a=new Uint8Array(s);if(1===r.length)return a;if(!e){for(let t=1;t<r.length;t++){const e=r[t];for(let t=0;t<a.length;t++)a[t]&&(a[t]=e[t]?255:0)}return a}for(let l=1;l<r.length;l++){const t=r[l];for(let e=0;e<a.length;e++)0===a[e]&&(a[e]=t[e]?255:0)}return a}function i(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]+s[n]);return l}function u(t,e,r){const[o]=t,s=o.length,a=n.createEmptyBand("f32",s);return a.set(o),a}function h(t,e,r){const[o]=t,s=o.length,a=n.createEmptyBand(r,s);for(let n=0;n<s;n++)e&&!e[n]||(a[n]=o[n]*o[n]);return a}function g(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]-s[n]);return l}function p(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]*s[n]);return l}function m(t,e,r){const[o]=t,s=o.length,a=n.createEmptyBand(r,s);for(let n=0;n<s;n++)e&&!e[n]||(a[n]=Math.sign(o[n])*Math.floor(Math.abs(o[n])));return a}function d(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]/s[n]);return l}function y(t,e,n){return d(t,e,"f32")}function E(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=Math.floor(o[n]/s[n]));return l}function M(t,e,r,s){const a=t[0],l=a.length,c=n.createEmptyBand(r,l);if(s===o.atanh){for(let t=0;t<l;t++)if(e[t]){const n=a[t];Math.abs(n)>=1?e[t]=0:c[t]=Math.atanh(n)}return c}const f=s===o.asin?Math.asin:Math.acos;for(let n=0;n<l;n++)if(e[n]){const t=a[n];Math.abs(t)>1?e[n]=0:c[n]=f(t)}return c}function B(t,e,r,o){const[s]=t,a=s.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o(s[n]));return l}function I(t,e,r,o){const[s,a]=t,l=s.length,c=n.createEmptyBand(r,l);for(let n=0;n<l;n++)e&&!e[n]||(c[n]=o(s[n],a[n]));return c}function w(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]&s[n]);return l}function x(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]<<s[n]);return l}function b(t,e,r){const[o]=t,s=o.length,a=n.createEmptyBand(r,s);for(let n=0;n<s;n++)e&&!e[n]||(a[n]=~o[n]);return a}function A(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]|s[n]);return l}function P(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]>>s[n]);return l}function T(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]^s[n]);return l}function k(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]&&s[n]?1:0);return l}function q(t,e,r){const[o]=t,s=o.length,a=n.createEmptyBand(r,s);for(let n=0;n<s;n++)e&&!e[n]||(a[n]=o[n]?0:1);return a}function N(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]||s[n]?1:0);return l}function U(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=(o[n]?1:0)^(s[n]?1:0));return l}function j(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]===s[n]?1:0);return l}function F(t,e,r,o){const[s]=t,a=s.length,l=n.createEmptyBand(r,a),c=o===Math.E;for(let n=0;n<a;n++)e&&!e[n]||(l[n]=c?Math.exp(s[n]):o**s[n]);return l}function z(t,e,n){return F(t,e,n,10)}function O(t,e,n){return F(t,e,n,2)}function C(t,e,n){return F(t,e,n,Math.E)}function R(t,e,r,o){const[s]=t,a=s.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(s[n]<=0?e[n]=0:l[n]=o(s[n]));return l}function S(t,e,n){return R(t,e,n,Math.log10)}function X(t,e,n){return R(t,e,n,Math.log2)}function v(t,e,n){return R(t,e,n,Math.log)}function D(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]>s[n]?1:0);return l}function G(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]>=s[n]?1:0);return l}function H(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]<s[n]?1:0);return l}function J(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]<=s[n]?1:0);return l}function K(t,e,r){const[o]=t,s=o.length,a=n.createEmptyBand(r,s);if(!e)return a;for(let n=0;n<s;n++)a[n]=e[n]?0:1;return a}function L(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]%s[n]);return l}function Q(t,e,r){const[o]=t,s=o.length,a=n.createEmptyBand(r,s);for(let n=0;n<s;n++)e&&!e[n]||(a[n]=-o[n]);return a}function V(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]===s[n]?0:1);return l}function W(t,e,r){const[o,s]=t,a=o.length,l=n.createEmptyBand(r,a),c=new Uint8Array(a);for(let n=0;n<a;n++)null!=e&&!e[n]||0!==o[n]||(l[n]=s[n],c[n]=255);return{band:l,mask:c}}function Y(t,e,r){const[o,s,a]=t,l=o.length,c=n.createEmptyBand(r,l);for(let n=0;n<l;n++)e&&!e[n]||(c[n]=o[n]?s[n]:a[n]);return c}function Z(t,e,r){const o=t.length;if(o<2)return t[0];const[s]=t,a=s.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)if(!e||e[n]){let e=s[n];for(let r=1;r<o;r++){const o=t[r][n];e<o&&(e=o)}l[n]=e}return l}function $(t,e,r){const o=t.length;if(o<2)return t[0];const[s]=t,a=s.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)if(!e||e[n]){let e=s[n];for(let r=1;r<o;r++){const o=t[r][n];e>o&&(e=o)}l[n]=e}return l}function _(t,e,r){const o=t.length;if(o<2)return t[0];const[s]=t,a=s.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)if(!e||e[n]){let e=s[n],r=e;for(let s=1;s<o;s++){const o=t[s][n];r<o?r=o:e>o&&(e=o)}l[n]=r-e}return l}function tt(t,e,r){const o=t.length;if(o<2)return t[0];const[s]=t,a=s.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)if(!e||e[n]){let e=0;for(let r=0;r<o;r++)e+=t[r][n];l[n]=e/o}return l}function et(t,e,r){const o=t.length;if(o<2)return t[0];const[s]=t,a=s.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)if(!e||e[n])for(let e=0;e<o;e++){const r=t[e];l[n]+=r[n]}return l}function nt(t,e,r){const o=t.length;if(o<2)return t[0];const[s]=t,a=s.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)if(!e||e[n]){const e=new Float32Array(o);let r=0;for(let a=0;a<o;a++){const o=t[a];r+=o[n],e[a]=o[n]}r/=o;let s=0;for(let t=0;t<o;t++)s+=(e[t]-r)**2;l[n]=Math.sqrt(s/o)}return l}function rt(t,e,r){const o=t.length;if(o<2)return t[0];const s=Math.floor(o/2),[a]=t,l=a.length,c=n.createEmptyBand(r,l),f=new Float32Array(o),i=o%2==1;for(let n=0;n<l;n++)if(!e||e[n]){for(let e=0;e<o;e++)f[e]=t[e][n];f.sort(),c[n]=i?f[s]:(f[s]+f[s-1])/2}return c}function ot(t,e,r){const[o,s]=t;if(null==s)return o;const a=o.length,l=n.createEmptyBand(r,a);for(let n=0;n<a;n++)e&&!e[n]||(l[n]=o[n]<s[n]?o[n]:s[n]);return l}function st(t,e,r){const o=t.length;if(o<=2)return ot(t,e,r);const s=t[0].length,a=n.createEmptyBand(r,s),l=new Map;for(let n=0;n<s;n++)if(!e||e[n]){l.clear();for(let a=0;a<o;a++){const e=t[a][n];l.set(e,l.has(e)?l.get(e)+1:1)}let e=0,r=0;const s=[];for(const t of l.keys())e=l.get(t),e>r?(r=e,s.length=0,s.push(t)):e===r&&s.push(t);s.length>1&&s.sort((t,e)=>t-e),a[n]=s[0]}return a}function at(t,e,r){const o=t.length;if(o<=2)return ot(t,e,r);const s=t[0].length,a=n.createEmptyBand(r,s),l=new Map;for(let n=0;n<s;n++)if(!e||e[n]){l.clear();for(let a=0;a<o;a++){const e=t[a][n];l.set(e,l.has(e)?l.get(e)+1:1)}let e=0,r=t.length;const s=[];for(const t of l.keys())e=l.get(t),e<r?(r=e,s.length=0,s.push(t)):e===r&&s.push(t);s.length>1&&s.sort((t,e)=>t-e),a[n]=s[0]}return a}function lt(t,e,r){const o=t.length;if(o<2)return t[0];const[s]=t,a=s.length,l=n.createEmptyBand(r,a),c=new Set;for(let n=0;n<a;n++)if(!e||e[n]){let e;c.clear();for(let r=0;r<o;r++)e=t[r][n],c.add(e);l[n]=c.size}return l}const ct=new Map,ft=new Map,it=new Map,ut=new Map;function ht(){ct.size||(ct.set(4,Math.sqrt),ct.set(6,Math.acos),ct.set(7,Math.asin),ct.set(8,Math.atan),ct.set(9,Math.atanh),ct.set(10,Math.abs),ct.set(21,Math.cos),ct.set(22,Math.cosh),ct.set(48,Math.floor),ct.set(49,Math.ceil),ct.set(51,Math.sin),ct.set(52,Math.sinh),ct.set(56,Math.tan),ct.set(57,Math.tanh),ct.set(59,Math.acosh),ct.set(60,Math.asinh),ct.set(65,Math.floor),ft.set(5,Math.pow),ft.set(61,Math.atan2),it.set(1,i),it.set(2,g),it.set(3,p),it.set(11,w),it.set(12,x),it.set(13,b),it.set(14,A),it.set(15,P),it.set(16,T),it.set(17,k),it.set(18,q),it.set(19,N),it.set(20,U),it.set(23,d),it.set(24,j),it.set(25,C),it.set(26,z),it.set(27,O),it.set(28,D),it.set(29,G),it.set(30,m),it.set(31,K),it.set(32,u),it.set(33,H),it.set(34,J),it.set(35,v),it.set(36,S),it.set(37,X),it.set(44,L),it.set(45,Q),it.set(46,V),it.set(53,h),it.set(64,y),it.set(65,E),it.set(76,Y),it.set(78,Y),ut.set(38,st),ut.set(39,Z),ut.set(40,tt),ut.set(41,rt),ut.set(42,$),ut.set(43,at),ut.set(47,_),ut.set(54,nt),ut.set(55,et),ut.set(58,lt),ut.set(66,st),ut.set(67,Z),ut.set(68,tt),ut.set(69,rt),ut.set(70,$),ut.set(71,at),ut.set(72,_),ut.set(73,nt),ut.set(74,et),ut.set(75,lt))}function gt(l,c,i={}){ht();let u=f(l,c>=66&&c<=75);const{outputPixelType:h="f32"}=i,g=!ut.has(c)||i.processAsMultiband,p=g?l[0].pixels.length:1,m=[];for(let f=0;f<p;f++){const i=ut.has(c)&&!g?l.flatMap(t=>t.pixels):l.map(t=>t.pixels[f]);let p,d=!0;if(c===r.setNull){const t=W(i,u,h);p=t.band,u=t.mask,d=!1}else if(it.has(c)){p=it.get(c)(i,u,"f64")}else if(ct.has(c))p=c===o.asin||c===o.acos||c===o.atanh?M(i,u,"f64",c):B(i,u,"f64",ct.get(c));else if(ft.has(c))p=I(i,u,"f64",ft.get(c));else if(ut.has(c)){p=ut.get(c)(i,u,"f64")}else p=i[0],d=!1;if(d&&c!==s.isNull&&!a.has(c)){const r=n.createEmptyBand(h,p.length);u||(u=new Uint8Array(p.length).fill(255)),t(p,u),e(p,u,h,r),p=r}m.push(p)}const d=l[0];return new n({width:d.width,height:d.height,pixelType:h,mask:c===s.isNull?null:u,pixels:m})}function pt(t,e,n){return gt(t,e=[null,1,2,3,23,5,44][e]??1,{outputPixelType:n})}export{pt as arithmetic,l as getOutputDomain,gt as local,c as operandsCount};