UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) • 11.5 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import t from"../PixelBlock.js";import{localTrigonometricOperation as e,localLogicalOperation as n,localConditionalOperation as r}from"../rasterFunctionConstants.js";import{fixNaN as o,clipBandToPixelTypeRange as s}from"../rasterFormats/pixelRangeUtils.js";const a=new Map([[e.acos,{domain:[0,Math.PI],isInteger:!1}],[e.asin,{domain:[-Math.PI/2,Math.PI/2],isInteger:!1}],[e.atan,{domain:[-Math.PI/2,Math.PI/2],isInteger:!1}],[e.cos,{domain:[-1,1],isInteger:!1}],[e.sin,{domain:[-1,1],isInteger:!1}],[n.booleanAnd,{domain:[0,1],isInteger:!0}],[n.booleanNot,{domain:[0,1],isInteger:!0}],[n.booleanOr,{domain:[0,1],isInteger:!0}],[n.booleanXOr,{domain:[0,1],isInteger:!0}],[n.equalTo,{domain:[0,1],isInteger:!0}],[n.notEqual,{domain:[0,1],isInteger:!0}],[n.greaterThan,{domain:[0,1],isInteger:!0}],[n.greaterThanEqual,{domain:[0,1],isInteger:!0}],[n.lessThan,{domain:[0,1],isInteger:!0}],[n.lessThanEqual,{domain:[0,1],isInteger:!0}],[n.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(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]+s[t]);return l}function u(e,n,r){const[o]=e,s=o.length,a=t.createEmptyBand("f32",s);return a.set(o),a}function h(e,n,r){const[o]=e,s=o.length,a=t.createEmptyBand(r,s);for(let t=0;t<s;t++)n&&!n[t]||(a[t]=o[t]*o[t]);return a}function g(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]-s[t]);return l}function p(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]*s[t]);return l}function m(e,n,r){const[o]=e,s=o.length,a=t.createEmptyBand(r,s);for(let t=0;t<s;t++)n&&!n[t]||(a[t]=Math.sign(o[t])*Math.floor(Math.abs(o[t])));return a}function d(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]/s[t]);return l}function y(t,e,n){return d(t,e,"f32")}function E(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=Math.floor(o[t]/s[t]));return l}function M(n,r,o,s){const a=n[0],l=a.length,c=t.createEmptyBand(o,l);if(s===e.atanh){for(let t=0;t<l;t++)if(r[t]){const e=a[t];Math.abs(e)>=1?r[t]=0:c[t]=Math.atanh(e)}return c}const f=s===e.asin?Math.asin:Math.acos;for(let t=0;t<l;t++)if(r[t]){const e=a[t];Math.abs(e)>1?r[t]=0:c[t]=f(e)}return c}function B(e,n,r,o){const[s]=e,a=s.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o(s[t]));return l}function I(e,n,r,o){const[s,a]=e,l=s.length,c=t.createEmptyBand(r,l);for(let t=0;t<l;t++)n&&!n[t]||(c[t]=o(s[t],a[t]));return c}function w(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]&s[t]);return l}function x(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]<<s[t]);return l}function b(e,n,r){const[o]=e,s=o.length,a=t.createEmptyBand(r,s);for(let t=0;t<s;t++)n&&!n[t]||(a[t]=~o[t]);return a}function A(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]|s[t]);return l}function P(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]>>s[t]);return l}function T(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]^s[t]);return l}function k(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]&&s[t]?1:0);return l}function q(e,n,r){const[o]=e,s=o.length,a=t.createEmptyBand(r,s);for(let t=0;t<s;t++)n&&!n[t]||(a[t]=o[t]?0:1);return a}function N(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]||s[t]?1:0);return l}function U(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=(o[t]?1:0)^(s[t]?1:0));return l}function F(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]===s[t]?1:0);return l}function j(e,n,r,o){const[s]=e,a=s.length,l=t.createEmptyBand(r,a),c=o===Math.E;for(let t=0;t<a;t++)n&&!n[t]||(l[t]=c?Math.exp(s[t]):o**s[t]);return l}function z(t,e,n){return j(t,e,n,10)}function O(t,e,n){return j(t,e,n,2)}function C(t,e,n){return j(t,e,n,Math.E)}function R(e,n,r,o){const[s]=e,a=s.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(s[t]<=0?n[t]=0:l[t]=o(s[t]));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(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]>s[t]?1:0);return l}function G(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]>=s[t]?1:0);return l}function H(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]<s[t]?1:0);return l}function J(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]<=s[t]?1:0);return l}function K(e,n,r){const[o]=e,s=o.length,a=t.createEmptyBand(r,s);if(!n)return a;for(let t=0;t<s;t++)a[t]=n[t]?0:1;return a}function L(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]%s[t]);return l}function Q(e,n,r){const[o]=e,s=o.length,a=t.createEmptyBand(r,s);for(let t=0;t<s;t++)n&&!n[t]||(a[t]=-o[t]);return a}function V(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]===s[t]?0:1);return l}function W(e,n,r){const[o,s]=e,a=o.length,l=t.createEmptyBand(r,a),c=new Uint8Array(a);for(let t=0;t<a;t++)null!=n&&!n[t]||0!==o[t]||(l[t]=s[t],c[t]=255);return{band:l,mask:c}}function Y(e,n,r){const[o,s,a]=e,l=o.length,c=t.createEmptyBand(r,l);for(let t=0;t<l;t++)n&&!n[t]||(c[t]=o[t]?s[t]:a[t]);return c}function Z(e,n,r){const o=e.length;if(o<2)return e[0];const[s]=e,a=s.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)if(!n||n[t]){let n=s[t];for(let r=1;r<o;r++){const o=e[r][t];n<o&&(n=o)}l[t]=n}return l}function $(e,n,r){const o=e.length;if(o<2)return e[0];const[s]=e,a=s.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)if(!n||n[t]){let n=s[t];for(let r=1;r<o;r++){const o=e[r][t];n>o&&(n=o)}l[t]=n}return l}function _(e,n,r){const o=e.length;if(o<2)return e[0];const[s]=e,a=s.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)if(!n||n[t]){let n=s[t],r=n;for(let s=1;s<o;s++){const o=e[s][t];r<o?r=o:n>o&&(n=o)}l[t]=r-n}return l}function tt(e,n,r){const o=e.length;if(o<2)return e[0];const[s]=e,a=s.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)if(!n||n[t]){let n=0;for(let r=0;r<o;r++)n+=e[r][t];l[t]=n/o}return l}function et(e,n,r){const o=e.length;if(o<2)return e[0];const[s]=e,a=s.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)if(!n||n[t])for(let n=0;n<o;n++){const r=e[n];l[t]+=r[t]}return l}function nt(e,n,r){const o=e.length;if(o<2)return e[0];const[s]=e,a=s.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)if(!n||n[t]){const n=new Float32Array(o);let r=0;for(let a=0;a<o;a++){const o=e[a];r+=o[t],n[a]=o[t]}r/=o;let s=0;for(let t=0;t<o;t++)s+=(n[t]-r)**2;l[t]=Math.sqrt(s/o)}return l}function rt(e,n,r){const o=e.length;if(o<2)return e[0];const s=Math.floor(o/2),[a]=e,l=a.length,c=t.createEmptyBand(r,l),f=new Float32Array(o),i=o%2==1;for(let t=0;t<l;t++)if(!n||n[t]){for(let n=0;n<o;n++)f[n]=e[n][t];f.sort(),c[t]=i?f[s]:(f[s]+f[s-1])/2}return c}function ot(e,n,r){const[o,s]=e;if(null==s)return o;const a=o.length,l=t.createEmptyBand(r,a);for(let t=0;t<a;t++)n&&!n[t]||(l[t]=o[t]<s[t]?o[t]:s[t]);return l}function st(e,n,r){const o=e.length;if(o<=2)return ot(e,n,r);const s=e[0].length,a=t.createEmptyBand(r,s),l=new Map;for(let t=0;t<s;t++)if(!n||n[t]){l.clear();for(let a=0;a<o;a++){const n=e[a][t];l.set(n,l.has(n)?l.get(n)+1:1)}let n=0,r=0;const s=[];for(const t of l.keys())n=l.get(t),n>r?(r=n,s.length=0,s.push(t)):n===r&&s.push(t);s.length>1&&s.sort(((t,e)=>t-e)),a[t]=s[0]}return a}function at(e,n,r){const o=e.length;if(o<=2)return ot(e,n,r);const s=e[0].length,a=t.createEmptyBand(r,s),l=new Map;for(let t=0;t<s;t++)if(!n||n[t]){l.clear();for(let a=0;a<o;a++){const n=e[a][t];l.set(n,l.has(n)?l.get(n)+1:1)}let n=0,r=e.length;const s=[];for(const t of l.keys())n=l.get(t),n<r?(r=n,s.length=0,s.push(t)):n===r&&s.push(t);s.length>1&&s.sort(((t,e)=>t-e)),a[t]=s[0]}return a}function lt(e,n,r){const o=e.length;if(o<2)return e[0];const[s]=e,a=s.length,l=t.createEmptyBand(r,a),c=new Set;for(let t=0;t<a;t++)if(!n||n[t]){let n;c.clear();for(let r=0;r<o;r++)n=e[r][t],c.add(n);l[t]=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,F),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===e.asin||c===e.acos||c===e.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!==n.isNull&&!a.has(c)){const e=t.createEmptyBand(h,p.length);u||(u=new Uint8Array(p.length).fill(255)),o(p,u),s(p,u,h,e),p=e}m.push(p)}const d=l[0];return new t({width:d.width,height:d.height,pixelType:h,mask:c===n.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};