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.
7 lines
1.7 KiB
7 lines
1.7 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","../../../core/mathUtils","../../../layers/support/ElevationSamplerData","../support/mathUtils","./TerrainConst"],function(r,v,x,q,w){class y{constructor(a,e,d){this.type="elevation";this.level=a[0];this.i=a[1];this.j=a[2];this.extent=e;this.samplerData=new x.ElevationSamplerData(d,e)}computeMinMaxValue(a,e,d,c){c.min=Infinity;c.max=-Infinity;c.hasNoDataValues=!1;a-=this.level;if(0>=a)return c;var b=2**a;if(Math.floor(e/b)!==this.i||Math.floor(d/b)!==this.j)return c;var g=Infinity, |
|
h=-Infinity,f=this.samplerData.data.width,l=this.samplerData.data.values,n=.5*w.elevationNoDataValue;a=(f-1)/b;d=(d-this.j*b)*a;let m=(e-this.i*b)*a;if(1>a){const t=Math.floor(d),u=Math.floor(m);var k=t+u*f;e=l[k];b=l[k+1];var p=l[k+f];k=l[k+f+1];if(e+b+p+k<n)return g=d-t,n=m-u,h=q.bilerp(e,b,p,k,g,n),f=q.bilerp(e,b,p,k,g+a,n),l=q.bilerp(e,b,p,k,g,n+a),a=q.bilerp(e,b,p,k,g+a,n+a),c.min=Math.min(h,f,l,a),c.max=Math.max(h,f,l,a),c;d=t;m=u;a=1}else d=Math.floor(d),m=Math.floor(m),a=Math.ceil(a);for(e= |
|
d;e<=d+a;e++)for(b=m;b<=m+a;b++)p=l[e+b*f],p<n?(g=Math.min(g,p),h=Math.max(h,p)):c.hasNoDataValues=!0;c.min=g;c.max=h;return c}}const z=.5*w.elevationNoDataValue;r.ElevationData=y;r.sampleElevation=function(a,e,d){if(null==d)return null;for(const f of d){if(!f)continue;var c=f.safeWidth;d=v.clamp(f.dy*(f.y1-e),0,c);c=v.clamp(f.dx*(a-f.x0),0,c);const l=Math.floor(d),n=Math.floor(c);var b=f.data.width,g=l*b+n,h=f.data.values;const m=h[g],k=h[g+1];g+=b;b=h[g];h=h[g+1];if(m+b+k+h<z)return d-=l,c-=n,a= |
|
m+(k-m)*c,a+(b+(h-b)*c-a)*d}return null};Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})}); |