UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 4.34 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{_ as e}from"../../../chunks/tslib.es6.js";import{property as r}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/has.js";import"../../../core/Logger.js";import"../../../core/RandomLCG.js";import{enumeration as o}from"../../../core/accessorSupport/decorators/enumeration.js";import{reader as t}from"../../../core/accessorSupport/decorators/reader.js";import{subclass as s}from"../../../core/accessorSupport/decorators/subclass.js";import{writer as i}from"../../../core/accessorSupport/decorators/writer.js";import n from"../../../geometry/Extent.js";import f from"../../../geometry/Point.js";import l from"./BaseRasterTransform.js";var p;function a(e,r,o){const{x:t,y:s}=r;if(o<2){return{x:e[0]+t*e[2]+s*e[4],y:e[1]+t*e[3]+s*e[5]}}if(2===o){const r=t*t,o=s*s,i=t*s;return{x:e[0]+t*e[2]+s*e[4]+r*e[6]+i*e[8]+o*e[10],y:e[1]+t*e[3]+s*e[5]+r*e[7]+i*e[9]+o*e[11]}}const i=t*t,n=s*s,f=t*s,l=i*t,p=i*s,a=t*n,c=s*n;return{x:e[0]+t*e[2]+s*e[4]+i*e[6]+f*e[8]+n*e[10]+l*e[12]+p*e[14]+a*e[16]+c*e[18],y:e[1]+t*e[3]+s*e[5]+i*e[7]+f*e[9]+n*e[11]+l*e[13]+p*e[15]+a*e[17]+c*e[19]}}function c(e,r,o){const{xmin:t,ymin:s,xmax:i,ymax:f,spatialReference:l}=r;let p=[];if(o<2)p.push({x:t,y:f}),p.push({x:i,y:f}),p.push({x:t,y:s}),p.push({x:i,y:s});else{let e=10;for(let r=0;r<e;r++)p.push({x:t,y:s+(f-s)*r/(e-1)}),p.push({x:i,y:s+(f-s)*r/(e-1)});e=8;for(let r=1;r<=e;r++)p.push({x:t+(i-t)*r/e,y:s}),p.push({x:t+(i-t)*r/e,y:f})}p=p.map((r=>a(e,r,o)));const c=p.map((e=>e.x)),u=p.map((e=>e.y));return new n({xmin:Math.min.apply(null,c),xmax:Math.max.apply(null,c),ymin:Math.min.apply(null,u),ymax:Math.max.apply(null,u),spatialReference:l})}function u(e){const[r,o,t,s,i,n]=e,f=t*n-i*s,l=i*s-t*n;return[(i*o-r*n)/f,(t*o-r*s)/l,n/f,s/l,-i/f,-t/l]}let m=p=class extends l{constructor(){super(...arguments),this.polynomialOrder=1,this.type="polynomial"}readForwardCoefficients(e,r){const{coeffX:o,coeffY:t}=r;if(!o?.length||!t?.length||o.length!==t.length)return null;const s=[];for(let i=0;i<o.length;i++)s.push(o[i]),s.push(t[i]);return s}writeForwardCoefficients(e,r,o){const t=[],s=[];for(let i=0;i<e?.length;i++)i%2==0?t.push(e[i]):s.push(e[i]);r.coeffX=t,r.coeffY=s}get inverseCoefficients(){let e=this._get("inverseCoefficients");const r=this._get("forwardCoefficients");return!e&&r&&this.polynomialOrder<2&&(e=u(r)),e}set inverseCoefficients(e){this._set("inverseCoefficients",e)}readInverseCoefficients(e,r){const{inverseCoeffX:o,inverseCoeffY:t}=r;if(!o?.length||!t?.length||o.length!==t.length)return null;const s=[];for(let i=0;i<o.length;i++)s.push(o[i]),s.push(t[i]);return s}writeInverseCoefficients(e,r,o){const t=[],s=[];for(let i=0;i<e?.length;i++)i%2==0?t.push(e[i]):s.push(e[i]);r.inverseCoeffX=t,r.inverseCoeffY=s}get affectsPixelSize(){return this.polynomialOrder>0}forwardTransform(e){if("point"===e.type){const r=a(this.forwardCoefficients,e,this.polynomialOrder);return new f({x:r.x,y:r.y,spatialReference:e.spatialReference})}return c(this.forwardCoefficients,e,this.polynomialOrder)}inverseTransform(e){if("point"===e.type){const r=a(this.inverseCoefficients,e,this.polynomialOrder);return new f({x:r.x,y:r.y,spatialReference:e.spatialReference})}return c(this.inverseCoefficients,e,this.polynomialOrder)}clone(){return new p({polynomialOrder:this.polynomialOrder,forwardCoefficients:this.forwardCoefficients?[...this.forwardCoefficients]:null,inverseCoefficients:this.inverseCoefficients?[...this.inverseCoefficients]:null})}};e([r({json:{write:!0}})],m.prototype,"polynomialOrder",void 0),e([r()],m.prototype,"forwardCoefficients",void 0),e([t("forwardCoefficients",["coeffX","coeffY"])],m.prototype,"readForwardCoefficients",null),e([i("forwardCoefficients")],m.prototype,"writeForwardCoefficients",null),e([r({json:{write:!0}})],m.prototype,"inverseCoefficients",null),e([t("inverseCoefficients",["inverseCoeffX","inverseCoeffY"])],m.prototype,"readInverseCoefficients",null),e([i("inverseCoefficients")],m.prototype,"writeInverseCoefficients",null),e([r()],m.prototype,"affectsPixelSize",null),e([o({PolynomialXform:"polynomial"})],m.prototype,"type",void 0),m=p=e([s("esri.layers.support.rasterTransforms.PolynomialTransform")],m);export{m as default};