Custom Gis Application with Arcgis Javascript API with modern layouting
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.
 
 

14 lines
5.2 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("../../chunks/tslib.es6 ../../core/JSONSupport ../../core/Logger ../../core/timeUtils ../../core/accessorSupport/decorators/property ../../core/has ../../core/RandomLCG ../../core/accessorSupport/decorators/subclass ../../chunks/vec32 ../../core/libs/gl-matrix-2/factories/vec3f64 ../../geometry/Point ../../geometry/SpatialReference ../../geometry/support/spatialReferenceUtils ./NCTimeParser ./VoxelDimension".split(" "),function(g,e,n,p,k,y,z,v,l,q,m,r,w,t,x){e=class extends e.JSONSupport{constructor(a){super(a);
this.id=0;this.dimensions=null;this.spatialReference=r.WGS84}get zDimension(){if(!this.dimensions||!Array.isArray(this.dimensions)||4!==this.dimensions.length)return-1;for(let a=2;4>a;++a)if(0<this.dimensions[a].size)return a;return-1}get isValid(){return!this.dimensions||!Array.isArray(this.dimensions)||4!==this.dimensions.length||1>this.dimensions[0].size||1>this.dimensions[1].size||-1===this.zDimension||1>this.dimensions[this.zDimension].size?!1:!0}get originInLayerSpace3D(){if(!this.isValid||
"xyt"===this.volumeType)return[0,0,0];const a=this.dimensions[0].getRange(),c=this.dimensions[1].getRange();var b=this.dimensions[2];b=b.isRegular?b.getRange():[0,b.size];return[a[0],c[0],b[0]]}get voxelSizeInLayerSpaceSigned(){if(!this.isValid||"xyt"===this.volumeType)return[0,0,0];const a=this.dimensions[0].getRange(),c=this.dimensions[1].getRange(),b=this.dimensions[2],h=b.isRegular?b.getRange():[0,b.size],f=[this.sizeInVoxels[0],this.sizeInVoxels[1],this.sizeInVoxels[2]];for(let d=0;3>d;++d)2>
f[d]?f[d]=1:--f[d];b.isRegular&&!b.isPositiveUp&&(f[2]*=-1);return[(a[1]-a[0])/f[0],(c[1]-c[0])/f[1],(h[1]-h[0])/f[2]]}get volumeType(){if(this.isValid){const a=0<this.dimensions[2].size;let c=0<this.dimensions[3].size;if(c){const b=this.dimensions[3];(c="time"===b.quantity)&&null!==b.unit&&(c=t.parseTimeDimensionUnit(b.unit).didParse)}if(!a&&c)return"xyt";if(a&&c)return"xyzt"}return"xyz"}get sizeInVoxels(){return this.isValid?[this.dimensions[0].size,this.dimensions[1].size,this.dimensions[this.zDimension].size]:
[0,0,0]}get timeStops(){if("xyzt"!==this.volumeType)return[];const a=this.dimensions[3],c=[],b=t.parseTimeDimensionUnit(a.unit);if(b.didParse)if(a.isRegular){var h=a.regularSpacing?.offset??0;const f=a.regularSpacing?.scale||1;for(let d=0;d<a.size;++d)c.push(p.offsetDateUTC(b.reference,h+f*d,b.unit))}else if(Array.isArray(a.irregularSpacing?.values)&&0<a.irregularSpacing.values.length)for(h=0;h<a.irregularSpacing.values.length;++h)c.push(p.offsetDateUTC(b.reference,a.irregularSpacing.values[h],b.unit));
return c}computeVoxelSpaceLocation(a){if(!this.isValid)return[0,0,0];if("xyt"===this.volumeType)return n.getLogger(this).error("computeVoxelSpacePosition cannot be used with XYT volumes."),[0,0,0];if(!w.equals(this.spatialReference,a.spatialReference))return n.getLogger(this).error("pos argument should have the same spatial reference as the VoxelLayer."),[0,0,0];const c=q.fromValues(a.x,a.y,a.z??0);l.subtract(c,c,this.originInLayerSpace3D);l.divide(c,c,this.voxelSizeInLayerSpaceSigned);var b=this.dimensions[this.zDimension];
if(!b.isRegular&&Array.isArray(b.irregularSpacing?.values)&&1<b.irregularSpacing.values.length){const h=a.z??0;a=b.irregularSpacing.values;const f=b.isPositiveUp?1:-1;b=a.reduce((d,u)=>Math.abs(f*u-h)<Math.abs(f*d-h)?u:d);for(let d=0;d<a.length;++d)if(a[d]===b){c[2]=d;break}}return[c[0],c[1],c[2]]}computeLayerSpaceLocation(a){if(!this.isValid)return new m({x:0,y:0,spatialReference:this.spatialReference});const c=q.fromArray(a);l.multiply(c,c,this.voxelSizeInLayerSpaceSigned);l.add(c,c,this.originInLayerSpace3D);
if("xyt"===this.volumeType)return new m({x:c[0],y:c[1],spatialReference:this.spatialReference});const b=this.dimensions[this.zDimension];!b.isRegular&&Array.isArray(b.irregularSpacing?.values)&&(c[2]=0>a[2]?b.irregularSpacing.values[0]:a[2]<b.irregularSpacing.values.length?b.irregularSpacing.values[a[2]]:b.irregularSpacing.values[b.irregularSpacing.values.length-1],b.isPositiveUp||(c[2]*=-1));return new m({x:c[0],y:c[1],z:c[2],spatialReference:this.spatialReference})}};g.__decorate([k.property({type:Number,
json:{write:{enabled:!0,isRequired:!0}}})],e.prototype,"id",void 0);g.__decorate([k.property({type:[x],json:{write:{enabled:!0,isRequired:!0}}})],e.prototype,"dimensions",void 0);g.__decorate([k.property({type:r,json:{read:{enabled:!1}}})],e.prototype,"spatialReference",void 0);g.__decorate([k.property({type:Number,json:{read:!1}})],e.prototype,"zDimension",null);g.__decorate([k.property({type:[Boolean],json:{read:!1}})],e.prototype,"isValid",null);g.__decorate([k.property({type:[Number],json:{read:!1}})],
e.prototype,"originInLayerSpace3D",null);g.__decorate([k.property({type:[Number],json:{read:!1}})],e.prototype,"voxelSizeInLayerSpaceSigned",null);g.__decorate([k.property({type:["xyz","xyzt","xyt"],json:{read:{enabled:!1}}})],e.prototype,"volumeType",null);g.__decorate([k.property({type:[Number],json:{read:!1}})],e.prototype,"sizeInVoxels",null);g.__decorate([k.property({type:[Date],json:{read:!1,write:!1}})],e.prototype,"timeStops",null);return e=g.__decorate([v.subclass("esri.layers.voxel.VoxelVolume")],
e)});