/** * Returns a subset of the raster for a given resolution. * * The matching raster is selected using {@link #getRaster(double)}. * * @see #getRaster(double) * * @param envelope * envelope of the subset * @param resolution * resolution in world units per pixel * @return subset of the best-fitting raster */ public AbstractRaster getSubset( Envelope envelope, double resolution ) { AbstractRaster raster = getRaster( resolution ); return raster.getSubRaster( envelope ); }
/** * Apply the given kernel to the given raster */ public void run() { long time = currentTimeMillis(); Envelope env = originalRaster.getRasterReference().getEnvelope( newTileRect, null ); SimpleRaster procesRaster = originalRaster.getSubRaster( env ).getAsSimpleRaster(); DEMFilter filter = new SmoothingFilter( size, stdevCorr, procesRaster ); SimpleRaster filteredResult = filter.applyFilter(); resultWriter.push( filteredResult ); this.availableFilters.push( this ); synchronized ( lock ) { lock.notifyAll(); } LOG.info( "{}. Filtering of tile took: {} seconds.", Thread.currentThread().getName(), ( Math.round( ( currentTimeMillis() - time ) / 10d ) / 100d ) ); } }
/** * Returns a subset of the raster. * * @param x * left boundary * @param y * upper boundary * @param x2 * right boundary * @param y2 * lower boundary * @return subset of the raster */ public AbstractRaster getSubRaster( double x, double y, double x2, double y2 ) { // what about the precision model? Formerly: getRasterReference().getDelta() was used Envelope env = getGeometryFactory().createEnvelope( new double[] { x, y }, new double[] { x2, y2 }, null ); return getSubRaster( env ); }
@Override public void setSubRaster( Envelope env, int dstBand, AbstractRaster source ) { AbstractRaster subset = source.getSubRaster( env ); double[] pos = subset.getRasterReference().getOrigin(); setSubRaster( pos[0], pos[1], dstBand, source ); }
@Override public void setSubRaster( Envelope env, AbstractRaster source ) { AbstractRaster subset = source.getSubRaster( env ); double[] pos = subset.getRasterReference().getOrigin(); setSubRaster( pos[0], pos[1], source ); }
@Override public AbstractRaster apply( RangeSet sourceRangeSet, RangeSet targetRangeset ) { AbstractRaster result = raster(); if ( rangeSetsAreApplicable( sourceRangeSet, targetRangeset ) ) { List<AxisSubset> requestedAxis = targetRangeset.getAxisDescriptions(); if ( requestedAxis != null && !requestedAxis.isEmpty() ) { // create a copy so that the original rangeset will not be modified. List<AxisSubset> copyRA = new ArrayList<AxisSubset>( requestedAxis ); Map<BandType, AxisSubset> referencedBands = getReferencedBands( copyRA ); BandType[] bands = null; if ( referencedBands != null ) { bands = referencedBands.keySet().toArray( new BandType[referencedBands.keySet().size()] ); // filter the bands. result = raster().getSubRaster( raster().getEnvelope(), bands ); boolean applyData = false; for ( AxisSubset ass : referencedBands.values() ) { applyData = ass.hasAxisConstraints(); if ( applyData ) { break; } } if ( applyData ) { result = applyDataFilter( result, requestedAxis, referencedBands ); } } } } return result; }
@Override public MultiRangedRaster getSubRaster( Envelope env, BandType[] bands, OriginLocation targetLocation ) { if ( getEnvelope().equals( env ) && ( bands == null || Arrays.equals( bands, getRasterDataInfo().bandInfo ) ) ) { return this; } checkBounds( env ); MultiRangedRaster result = new MultiRangedRaster(); for ( AbstractRaster raster : multiRange ) { result.addRaster( raster.getSubRaster( env, bands, targetLocation ) ); } return result; }
@Override public void setSubRaster( Envelope env, AbstractRaster source ) { RasterRect rect = getRasterReference().convertEnvelopeToRasterCRS( env ); SimpleRaster src = source.getSubRaster( env ).getAsSimpleRaster(); // source.getSubset( env ) already returns a copy, no need for getReadOnlyRasterData getRasterData().setSubset( rect.x, rect.y, rect.width, rect.height, src.getRasterData() ); }
if ( getResolutionInfo().getNativeResolutions().get( 0 ).equals( resolution ) ) { return getSubRaster( spatialExtent ); return interpolater.interPolate( this.getSubRaster( spatialExtent ), rect.width, rect.height );
AbstractRaster subRaster = filteredRaster.getSubRaster( env ); String id = origReader.getDataLocationId(); File outputFile = new File( outputDir, id + "." + outputType ); if ( origReader != null ) { Envelope env = raster.getEnvelope(); AbstractRaster subRaster = filteredRaster.getSubRaster( env ); String id = origReader.getDataLocationId(); File outputFile = new File( outputDir, id + "." + outputType );
source = sourceRaster.getSubRaster( dataEnv ); } catch ( IndexOutOfBoundsException ex ) { throw new TransformationException( "no source data found" );
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." ); } }
SimpleRaster subRaster = raster.getSubRaster( tileEnvelope ).getAsSimpleRaster();
resultTC.addTile( r.getSubRaster( subsetEnv, bands ) );
AbstractRaster subset = raster.getSubRaster( subsetEnv, null, OriginLocation.OUTER );