@Override public SimpleRaster copy() { SimpleRaster result = this.createCompatibleSimpleRaster(); result.setSubRaster( getEnvelope(), this ); return result; }
@Override public SimpleRaster getAsSimpleRaster() { int i = 0; SimpleRaster raster = multiRange.get( i ).getAsSimpleRaster(); SimpleRaster result = raster.createCompatibleSimpleRaster( BandType.fromBufferedImageType( 0, multiRange.size(), null ) ); result.setSubRaster( getEnvelope(), i, raster ); for ( i = 1; i < multiRange.size(); i++ ) { raster = multiRange.get( i ).getAsSimpleRaster(); result.setSubRaster( getEnvelope(), i, raster ); } return result; }
/** * Sets a range with data from source. * * @param x * left boundary * @param y * upper boundary * @param index * index of the destination range * @param source * data to copy (first band will be used) */ @Override public void setSubRaster( double x, double y, int index, AbstractRaster source ) { // checkBounds(x, y, source.getColumns(), source.getRows()); if ( index >= getNumberOfRanges() ) { throw new IndexOutOfBoundsException(); } SimpleRaster raster = multiRange.get( index ).getAsSimpleRaster(); raster.setSubRaster( x, y, source ); multiRange.set( index, raster ); }
/** * Sets the MultiRangedRaster with data from source. * * The number of ranges must be equal. * * @param x * left boundary * @param y * upper boundary * @param source * data to copy */ public void setSubset( double x, double y, MultiRangedRaster source ) { // checkBounds(x, y, source.getColumns(), source.getRows()); if ( source.getNumberOfRanges() != getNumberOfRanges() ) { throw new IndexOutOfBoundsException(); } for ( int i = 0; i < getNumberOfRanges(); i++ ) { SimpleRaster raster = multiRange.get( i ).getAsSimpleRaster(); raster.setSubRaster( x, y, source.getRange( i ).getAsSimpleRaster() ); multiRange.set( i, raster ); } }
/** * Sets the MultiRangedRaster with data from source. * * The number of ranges and the number of bands in source must be equal. * * @param x * left boundary * @param y * upper boundary * @param source * data to copy */ @Override public void setSubRaster( double x, double y, AbstractRaster source ) { // checkBounds(x, y, source.getColumns(), source.getRows()); SimpleRaster src = source.getAsSimpleRaster(); if ( src.getBands() != getNumberOfRanges() ) { throw new IndexOutOfBoundsException(); } for ( int i = 0; i < getNumberOfRanges(); i++ ) { SimpleRaster raster = multiRange.get( i ).getAsSimpleRaster(); raster.setSubRaster( x, y, src.getBand( i ).getAsSimpleRaster() ); multiRange.set( i, raster ); } }
result.setSubRaster( subsetEnv, r );