/** * * @param raster * abstract raster data source */ public RasterDataUtility( AbstractRaster raster ) { this( raster.getAsSimpleRaster().getRasterData() ); }
@Override public MultiRangedRaster copy() { MultiRangedRaster result = new MultiRangedRaster(); for ( AbstractRaster r : multiRange ) { result.addRaster( r.copy() ); } return result; }
@Override public void setSubRaster( double x, double y, AbstractRaster source ) { RasterGeoReference srcREnv = source.getRasterReference(); RasterGeoReference dstREnv = new RasterGeoReference( srcREnv.getOriginLocation(), srcREnv.getResolutionX(), srcREnv.getResolutionY(), x, y ); Envelope dstEnv = dstREnv.getEnvelope( source.getColumns(), source.getRows(), source.getCoordinateSystem() ); RasterData srcData = source.getAsSimpleRaster().getRasterData(); SimpleRaster movedRaster = new SimpleRaster( srcData, dstEnv, dstREnv, metadata ); setSubRaster( dstEnv, movedRaster ); }
@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 ); }
/** * Adds an AbstractRaster to the MultiRangedRaster * * @param raster */ public void addRaster( AbstractRaster raster ) { extendEnvelope( raster.getEnvelope() ); extendRasterReference( raster.getRasterReference() ); multiRange.add( raster ); }
@Override public RasterDataInfo getRasterDataInfo() { SimpleRaster raster = multiRange.get( 0 ).getAsSimpleRaster(); if ( raster != null ) { return raster.getRasterDataInfo(); } return null; }
@Override public Envelope getEnvelope() { return raster.getEnvelope(); }
@Override public AbstractRaster getAsRaster( Envelope spatialExtent, SampleResolution resolution, InterpolationType interpolation ) { double res = resolution.getResolution( 0 ); AbstractRaster raster = getRaster( res ); if ( raster == null ) { return resolutions.get( resolutions.size() - 1 ); } return raster.getAsRaster( spatialExtent, resolution, interpolation ); }
@Override public ICRS getCRS() { return raster.getCoordinateSystem(); }
@Override public boolean canWrite( AbstractRaster raster, RasterIOOptions options ) { // only return true if the raster has one band. return raster != null && raster.getRasterDataInfo() != null && raster.getRasterDataInfo().bands == 1; }
@Override public SimpleRaster copy() { SimpleRaster result = this.createCompatibleSimpleRaster(); result.setSubRaster( getEnvelope(), this ); return result; }
/** * @return the raster reference of the texture * */ public RasterGeoReference getRasterReference() { return raster.getRasterReference(); }
@Override public TiledRaster getSubRaster( Envelope env ) { return getSubRaster( env, null ); }
/** * Creates a new TiledRaster with tiles from the given TileContainer * * @param tileContainer * wraps all tiles */ public TiledRaster( TileContainer tileContainer, ResourceMetadata<Coverage> metadata ) { super(); setMetadata( metadata ); this.tileContainer = tileContainer; }
@Override public boolean equals( Object other ) { if ( other != null && other instanceof SampleResolution ) { final SampleResolution that = (SampleResolution) other; return resMatch( that.resolutions ); } return false; }
@Override public String toString() { return "SimpleRaster: " + envelopeString(); }
@Override public MultiRangedRaster getSubRaster( Envelope env, BandType[] bands ) { return getSubRaster( env, bands, null ); }
@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 boolean canWrite( AbstractRaster raster, RasterIOOptions options ) { // only return true if the raster has one band. return raster != null && raster.getRasterDataInfo() != null && raster.getRasterDataInfo().bands == 1; }
@Override public TiledRaster getSubRaster( Envelope env, BandType[] bands ) { return this.getSubRaster( env, bands, null ); }