/** * Returns the size in pixel of a raster that extends within given Envelope. * * @param env * Envelope for the * @return array with width and height of the raster */ public int[] getSize( Envelope env ) { RasterRect rr = convertEnvelopeToRasterCRS( env ); return new int[] { rr.width, rr.height }; }
RasterRect rect = geoRef.convertEnvelopeToRasterCRS( raster.getEnvelope() );
@Override public void setSubRaster( Envelope env, int dstBand, AbstractRaster source ) { // calculate position in RasterData RasterRect rect = getRasterReference().convertEnvelopeToRasterCRS( env ); getRasterData().setSubset( rect.x, rect.y, dstBand, 0, source.getAsSimpleRaster().getReadOnlyRasterData() ); }
RasterRect rr = geoRef.convertEnvelopeToRasterCRS( env ); if ( targetColumns <= 0 ) { targetColumns = (int) Math.max( 1, Math.ceil( rr.width / (double) DEFAULT_RASTER_TILE_WIDTH ) );
@Override public SimpleRaster getSubRaster( Envelope envelope, BandType[] bands, OriginLocation targetLocation ) { // rb: testing for envelope equality can lead to a memory leak, because the memory can not be freed. RasterRect rasterRect = getRasterReference().convertEnvelopeToRasterCRS( envelope ); RasterGeoReference rasterReference = getRasterReference().createRelocatedReference( targetLocation, envelope ); // RasterData view = getReadOnlyRasterData().getSubset( rasterRect, bands ); // rb: don't need to get a readonly raster data, because it will be filled with data later. RasterData view = getRasterData().getSubset( rasterRect, bands ); return new SimpleRaster( view, envelope, rasterReference, metadata ); }
@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() ); }
Envelope renv = raster.getRasterReference().relocateEnvelope( OriginLocation.OUTER, raster.getEnvelope() ); RasterRect rect = rasterReference.convertEnvelopeToRasterCRS( raster.getEnvelope() );
RasterRect rect = nGeoRef.convertEnvelopeToRasterCRS( spatialExtent ); RasterGeoReference nGeoRef = resolution.createGeoReference( getRasterReference().getOriginLocation(), inLocalCRS ); rect = nGeoRef.convertEnvelopeToRasterCRS( inLocalCRS );
RasterRect rasterRect = null; if ( reader == null ) { rasterRect = rasterGeoReference.convertEnvelopeToRasterCRS( worldEnvelope ); } else { rasterRect = new RasterRect( 0, 0, reader.getWidth(), reader.getHeight() );
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() );
/** * Read a raster from the grid file at location (row,column). * * @param columnId * * @param rowId * * @return the read raster or null if it could not be read. * @throws IOException */ public AbstractRaster getTile( int columnId, int rowId ) throws IOException { Envelope tileEnvelope = getTileEnvelope( columnId, rowId ); RasterGeoReference tileRasterReference = RasterGeoReference.create( OriginLocation.OUTER, tileEnvelope, infoFile.getTileRasterWidth(), infoFile.getTileRasterHeight() ); RasterRect tileRect = getGeoReference().createRelocatedReference( OriginLocation.OUTER ).convertEnvelopeToRasterCRS( tileEnvelope ); TileOffsetReader tReader = new TileOffsetReader( this, tileRect ); ByteBufferRasterData tileData = RasterDataFactory.createRasterData( infoFile.getTileRasterWidth(), infoFile.getTileRasterHeight(), getRasterDataInfo(), tReader, false ); SimpleRaster tile = new SimpleRaster( tileData, tileEnvelope, tileRasterReference, null ); return tile; }