@Override public SimpleRaster copy() { SimpleRaster result = this.createCompatibleSimpleRaster(); result.setSubRaster( getEnvelope(), this ); return result; }
/** * * @param id * @param level * @param raster */ public MyTile( int id, int level, SimpleRaster raster ) { super( id, level, raster.getEnvelope(), null, null, (float) raster.getRasterReference().getResolutionX(), (float) raster.getRasterReference().getResolutionY(), raster.getRasterReference().getOriginLocation() ); this.raster = raster; }
/** * Creates a SimpleRaster with same size, DataType and InterleaveType * * @param bands * number of bands * @return new empty SimpleRaster */ public SimpleRaster createCompatibleSimpleRaster( BandType[] bands ) { RasterData data = this.getRasterData(); RasterData newRaster = data.createCompatibleWritableRasterData( new RasterRect( 0, 0, getColumns(), getRows() ), bands ); return new SimpleRaster( newRaster, getEnvelope(), getRasterReference(), metadata ); }
/** * Returns a single band of the raster. * * @param band * Number of the selected band. * @return A copy of the selected band. */ public SimpleRaster getBand( int band ) { return new SimpleRaster( getRasterData().getSubset( new RasterRect( 0, 0, getColumns(), getRows() ), new BandType[] {} ), getEnvelope(), getRasterReference(), metadata ); }
/** * Creates a new empty writable SimpleRaster with same size, DataType and InterleaveType. * * @return new empty SimpleRaster */ public SimpleRaster createCompatibleSimpleRaster() { int height = this.getRows(); int width = this.getColumns(); RasterData data = this.getRasterData(); BandType[] bands = data.getDataInfo().bandInfo; RasterData newRaster = data.createCompatibleWritableRasterData( new RasterRect( 0, 0, width, height ), bands ); return new SimpleRaster( newRaster, this.getEnvelope(), this.getRasterReference(), metadata ); }
private void setSubsetWithAlphaHack( SimpleRaster target, AbstractRaster source ) { if ( target != null && source != null ) { // rb: todo the intersection of two envelopes should be an envelope, but the cast will be wrong. Envelope tEnv = target.getEnvelope(); Envelope sEnv = source.getEnvelope(); if ( tEnv != null && sEnv != null ) { Geometry geom = tEnv.getIntersection( sEnv ); if ( geom != null ) { Envelope intersectEnv = geom.getEnvelope(); if ( intersectEnv != null ) { RasterRect rect = target.getRasterReference().convertEnvelopeToRasterCRS( intersectEnv ); SimpleRaster src = source.getSubRaster( intersectEnv ).getAsSimpleRaster(); PixelInterleavedRasterData targetData = (PixelInterleavedRasterData) target.getRasterData(); setSubset( targetData, rect.x, rect.y, rect.width, rect.height, src.getRasterData() ); } } } } else { LOG.debug( "Ignoring rasters because of null reference." ); } }
RasterRect newDataPosition = tileRasterReference.convertEnvelopeToRasterCRS( subRaster.getEnvelope() );
if ( LOG.isDebugEnabled() ) { LOG.debug( "#getTextureTile(): as simple raster: " + ( System.currentTimeMillis() - begin2 ) + ", env: " + simpleRaster.getEnvelope() );