/** * 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 ); }
@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 ); }
/** * @param coverage * @param tileProviders */ private void getTileProviders( MultiResolutionRaster coverage, List<TextureTileProvider> tileProviders ) { for ( double res : coverage.getResolutions() ) { AbstractRaster raster = coverage.getRaster( res ); addTileProvider( raster, tileProviders ); } }
@Override public Set<TileFile> getTiles( Envelope env, double metersPerPixel ) { TiledRaster raster = (TiledRaster) mrr.getRaster( metersPerPixel ); TileContainer container = raster.getTileContainer(); List<AbstractRaster> tiles = container.getTiles( env ); Set<TileFile> result = new HashSet<TileFile>(); int level = -1; for ( Double res : mrr.getResolutions() ) { if ( metersPerPixel <= res ) { level++; } else { break; } } // make sure it will get to level 0 level = Math.max( 0, level ); for ( AbstractRaster r : tiles ) { if ( r != null ) { int id = r.hashCode(); result.add( new MyTile( id, level, r.getAsSimpleRaster() ) ); } } return result; }
private WCSCoverage buildCoverage( Coverage coverage, MultiResolutionRaster mrr ) { CoverageOptions options = buildOptions( coverage.getNativeFormat(), coverage.getSupportOptions() ); RangeSet rs = RangeSetBuilder.createBandRangeSetFromRaster( "generated", "Automatically generated dataset, created from the native raster types.", mrr.getRaster( mrr.getResolutions().get( mrr.getResolutions().size() - 1 ) ) ); return new MultiResolutionCoverage( coverage.getName(), coverage.getLabel(), mrr, options, rs ); }
if ( resolutions != null && !resolutions.isEmpty() ) { for ( Double res : resolutions ) { AbstractRaster raster = mrr.getRaster( res ); getTiles( raster, tiles );
@Override public CoverageResult getCoverageResult( Envelope env, Grid grid, String format, String interpolation, RangeSet requestedRangeset ) throws WCServiceException { AbstractRaster rasterLevel = ( (MultiResolutionRaster) coverage ).getRaster( grid.getResolution() ); AbstractRaster result; try { result = CoverageTransform.transform( rasterLevel, env, grid, interpolation ); } catch ( TransformationException e ) { throw new RuntimeException( "error while transforming raster result: " + e.getMessage(), e ); } if ( requestedRangeset != null ) { RasterFilter filter = new RasterFilter( result ); result = filter.apply( getRangeSet(), requestedRangeset ); } return new SimpleRasterResult( result, format ); }
@Override public CoverageLayerData mapQuery( LayerQuery query, List<String> headers ) throws OWSException { try { Envelope bbox = query.getEnvelope(); RangeSet filter = dimensionHandler.getDimensionFilter( query.getDimensions(), headers ); Style style = resolveStyleRef( query.getStyle() ); // handle SLD/SE scale settings style = style == null ? null : style.filter( query.getScale() ); Interpolation fromRequest = query.getRenderingOptions().getInterpolation( getMetadata().getName() ); InterpolationType interpol = determineInterpolation( fromRequest ); AbstractRaster raster = this.raster; if ( raster == null ) { raster = multiraster.getRaster( query.getResolution() ); } return new CoverageLayerData( raster, bbox, query.getWidth(), query.getHeight(), interpol, filter, style, getMetadata().getFeatureTypes().get( 0 ) ); } catch ( OWSException e ) { throw e; } catch ( Throwable e ) { LOG.warn( "Unable to prepare rendering of raster layer: {}", e.getLocalizedMessage() ); LOG.trace( "Stack trace:", e ); } return null; }
raster = multiraster.getRaster( query.getResolution() );