/** * 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 ); }
public void run() { try { String thread = Thread.currentThread().getName(); System.out.println( thread + " saving... " + tileName ); RasterFactory.saveRasterToFile( tile, absTileFilename ); tile.dispose(); System.out.println( thread + " done... " + tileName ); } catch ( Exception e ) { System.err.println( "Ar error occurred while processing tile: " + tileName + ": " + e.getLocalizedMessage() ); if ( verbose ) { e.printStackTrace(); } } } };
this.outWidth = procesRaster.getColumns() - size; this.outHeight = procesRaster.getRows() - size; if ( size % 2 == 0 ) { throw new IllegalArgumentException( "size must be odd" ); this.noData = ByteBuffer.wrap( procesRaster.getRasterDataInfo().getNoDataPixel( new byte[0] ) ).getFloat(); this.stdevCorr = stdevCorr; this.size2 = size / 2; newKernel = (ByteBufferRasterData) procesRaster.getRasterData().createCompatibleWritableRasterData( kernelRect, null );
@Override public SimpleRaster copy() { SimpleRaster result = this.createCompatibleSimpleRaster(); result.setSubRaster( getEnvelope(), this ); return result; }
@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 ); }
/** * * @param raster * abstract raster data source */ public RasterDataUtility( AbstractRaster raster ) { this( raster.getAsSimpleRaster().getRasterData() ); }
/** * Creates a new empty SimpleRaster with same DataType and InterleaveType. Size is determined by the given envelope. * * @param rEnv * The raster envelope of the new SimpleRaster. * @param env * The boundary of the new SimpleRaster. * @return A new empty SimpleRaster. */ public SimpleRaster createCompatibleSimpleRaster( RasterGeoReference rEnv, Envelope env ) { int[] size = rEnv.getSize( env ); RasterRect rasterRect = new RasterRect( 0, 0, size[0], size[1] ); RasterData data = this.getRasterData(); BandType[] bands = data.getDataInfo().bandInfo; RasterData newRaster = data.createCompatibleWritableRasterData( rasterRect, bands ); return new SimpleRaster( newRaster, env, rEnv, metadata ); }
@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() ); }
SimpleRaster simpleRaster = raster.getAsSimpleRaster(); RasterGeoReference rasterReference = simpleRaster.getRasterReference().createRelocatedReference( OriginLocation.OUTER ); String newLine = System.getProperty( "line.separator" ); writer.write( "ncols " + simpleRaster.getColumns() + newLine ); writer.write( "nrows " + simpleRaster.getRows() + newLine ); double[] worldCoordinate = rasterReference.getWorldCoordinate( 0, simpleRaster.getRows() ); ICRS crs = simpleRaster.getCoordinateSystem(); int axis = 0; int northing = 1; writer.write( "yllcorner " + worldCoordinate[northing] + newLine ); writer.write( "cellsize " + rasterReference.getResolutionX() + newLine ); writer.write( "nodata_value " + simpleRaster.getRasterDataInfo().getFloatNoDataForBand( 0 ) + newLine ); RasterData data = simpleRaster.getRasterData(); DataType type = data.getDataType();
public SimpleRaster applyFilter() { RasterData rasterData = currentRaster.getReadOnlyRasterData(); RasterData outData = rasterData.createCompatibleWritableRasterData( new RasterRect( 0, 0, outWidth, outHeight ), null ); Envelope envelope = currentRaster.getRasterReference().getEnvelope( new RasterRect( size2, size2, outWidth, outHeight ), null ); RasterGeoReference rasterReference = currentRaster.getRasterReference().createRelocatedReference( envelope ); SimpleRaster out = new SimpleRaster( outData, envelope, rasterReference, null );
private static Pair<SimpleRaster, String> getMapAsSimpleRaster( WMSClient client, List<String> layers, int width, int height, Envelope bbox, ICRS srs, String format, boolean transparent, boolean errorsInImage, int timeout ) throws IOException { GetMap gm = new GetMap( layers, width, height, bbox, srs, format, transparent ); Pair<BufferedImage, String> imageResponse = client.getMap( gm, null, timeout, errorsInImage ); Pair<SimpleRaster, String> response = new Pair<SimpleRaster, String>(); if ( imageResponse.first != null ) { BufferedImage img = imageResponse.first; RasterData rasterData = RasterFactory.rasterDataFromImage( img ); RasterGeoReference rasterEnv = RasterGeoReference.create( OriginLocation.OUTER, bbox, img.getWidth(), img.getHeight() ); SimpleRaster raster = new SimpleRaster( rasterData, bbox, rasterEnv, null ); response.first = raster; } else { response.second = imageResponse.second; } return response; }
RasterData data = simpleRaster.getRasterData(); int cols = data.getColumns(), rows = data.getRows(); int[] idx = channels.evaluate( simpleRaster.getBandTypes() ); int redIndex = idx[0], greenIndex = idx[1]; int blueIndex = idx[2], grayIndex = idx[3]; RasterDataUtility rasutil = new RasterDataUtility( raster, channels ); RasterData newData = simpleRaster.getRasterData(); BandType[] bandTypes = null; if ( channels.getMode() == ChannelSelectionMode.RGB && data.getBands() > 1 ) { AbstractRaster newRaster = new SimpleRaster( newData, raster.getEnvelope(), raster.getRasterReference(), null ); return newRaster;
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." ); } }
@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() ); }
RasterRect newDataPosition = tileRasterReference.convertEnvelopeToRasterCRS( subRaster.getEnvelope() ); fileData.setSubset( 0, 0, newDataPosition.width, newDataPosition.height, subRaster.getRasterData() ); for ( AbstractRaster ar : tiles ) { if ( ar.isSimpleRaster() ) { ( (SimpleRaster) ar ).dispose();
if ( LOG.isDebugEnabled() ) { LOG.debug( "#getTextureTile(): as simple raster: " + ( System.currentTimeMillis() - begin2 ) + ", env: " + simpleRaster.getEnvelope() ); PixelInterleavedRasterData rasterData = (PixelInterleavedRasterData) simpleRaster.getRasterData(); if ( rasterData.isOutside() ) { return null;
Map<BandType, AxisSubset> bands ) { SimpleRaster simpleRaster = subsetRaster.getAsSimpleRaster(); SimpleRaster result = simpleRaster.createCompatibleSimpleRaster(); RasterData output = result.getRasterData(); RasterData oldData = simpleRaster.getRasterData(); switch ( output.getDataInfo().dataType ) { case BYTE:
/** * * @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; }
private double calcGlobalValues() { double mean = 0; double w = currentRaster.getColumns(); double h = currentRaster.getRows(); RasterData data = this.currentRaster.getReadOnlyRasterData();
SimpleRaster result = originalSimpleRaster.createCompatibleSimpleRaster( getRasterReference(), env ); LOG.debug( "Tiled to simple -> result(w,h): " + result.getColumns() + ", " + result.getRows() ); result.setSubRaster( subsetEnv, r );