UNPKG

@arcgis/core

Version:

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

3 lines (2 loc) 4.06 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{__decorate as e}from"tslib";import{property as r,subclass as t}from"../../../core/accessorSupport/decorators.js";import o from"../../../geometry/Extent.js";import i from"../../../geometry/Point.js";import n from"./BaseRasterTransform.js";import{reader as s}from"../../../core/accessorSupport/decorators/reader.js";import{writer as f}from"../../../core/accessorSupport/decorators/writer.js";import{enumeration as l}from"../../../core/accessorSupport/decorators/enumeration.js";var p;function a(e,r,t){const{x:o,y:i}=r;if(t<2){return{x:e[0]+o*e[2]+i*e[4],y:e[1]+o*e[3]+i*e[5]}}if(2===t){const r=o*o,t=i*i,n=o*i;return{x:e[0]+o*e[2]+i*e[4]+r*e[6]+n*e[8]+t*e[10],y:e[1]+o*e[3]+i*e[5]+r*e[7]+n*e[9]+t*e[11]}}const n=o*o,s=i*i,f=o*i,l=n*o,p=n*i,a=o*s,c=i*s;return{x:e[0]+o*e[2]+i*e[4]+n*e[6]+f*e[8]+s*e[10]+l*e[12]+p*e[14]+a*e[16]+c*e[18],y:e[1]+o*e[3]+i*e[5]+n*e[7]+f*e[9]+s*e[11]+l*e[13]+p*e[15]+a*e[17]+c*e[19]}}function c(e,r,t){const{xmin:i,ymin:n,xmax:s,ymax:f,spatialReference:l}=r;let p=[];if(t<2)p.push({x:i,y:f}),p.push({x:s,y:f}),p.push({x:i,y:n}),p.push({x:s,y:n});else{let e=10;for(let r=0;r<e;r++)p.push({x:i,y:n+(f-n)*r/(e-1)}),p.push({x:s,y:n+(f-n)*r/(e-1)});e=8;for(let r=1;r<=e;r++)p.push({x:i+(s-i)*r/e,y:n}),p.push({x:i+(s-i)*r/e,y:f})}p=p.map(r=>a(e,r,t));const c=p.map(e=>e.x),u=p.map(e=>e.y);return new o({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,t,o,i,n,s]=e,f=o*s-n*i,l=n*i-o*s;return[(n*t-r*s)/f,(o*t-r*i)/l,s/f,i/l,-n/f,-o/l]}let y=p=class extends n{constructor(){super(...arguments),this.polynomialOrder=1,this.type="polynomial"}readForwardCoefficients(e,r){const{coeffX:t,coeffY:o}=r;if(!t?.length||!o?.length||t.length!==o.length)return null;const i=[];for(let n=0;n<t.length;n++)i.push(t[n]),i.push(o[n]);return i}writeForwardCoefficients(e,r,t){const o=[],i=[];for(let n=0;n<e?.length;n++)n%2==0?o.push(e[n]):i.push(e[n]);r.coeffX=o,r.coeffY=i}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:t,inverseCoeffY:o}=r;if(!t?.length||!o?.length||t.length!==o.length)return null;const i=[];for(let n=0;n<t.length;n++)i.push(t[n]),i.push(o[n]);return i}writeInverseCoefficients(e,r,t){const o=[],i=[];for(let n=0;n<e?.length;n++)n%2==0?o.push(e[n]):i.push(e[n]);r.inverseCoeffX=o,r.inverseCoeffY=i}get affectsPixelSize(){return this.polynomialOrder>0}forwardTransform(e){if("point"===e.type){const r=a(this.forwardCoefficients,e,this.polynomialOrder);return new i({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 i({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}})],y.prototype,"polynomialOrder",void 0),e([r()],y.prototype,"forwardCoefficients",void 0),e([s("forwardCoefficients",["coeffX","coeffY"])],y.prototype,"readForwardCoefficients",null),e([f("forwardCoefficients")],y.prototype,"writeForwardCoefficients",null),e([r({json:{write:!0}})],y.prototype,"inverseCoefficients",null),e([s("inverseCoefficients",["inverseCoeffX","inverseCoeffY"])],y.prototype,"readInverseCoefficients",null),e([f("inverseCoefficients")],y.prototype,"writeInverseCoefficients",null),e([r()],y.prototype,"affectsPixelSize",null),e([l({PolynomialXform:"polynomial"})],y.prototype,"type",void 0),y=p=e([t("esri.layers.raster.transforms.PolynomialTransform")],y);export{y as default};