/** * @param topLevelResolutionDir * @param recursive * @param options * containing information about the loaded raster. * */ public MultiResolutionTileGrid( java.io.File topLevelResolutionDir, boolean recursive, RasterIOOptions options ) { if ( !topLevelResolutionDir.isDirectory() ) { throw new IllegalArgumentException( "Specified dir: " + topLevelResolutionDir.getAbsolutePath() + " is not a directory." ); } mrr = new RasterBuilder().buildMultiResolutionRaster( topLevelResolutionDir, recursive, options ); rasterLevels = new RasterLevel[mrr.getResolutions().size()]; double currentMin = 0; List<Double> resolutions = mrr.getResolutions(); for ( int i = 0; i < rasterLevels.length; ++i ) { rasterLevels[i] = new RasterLevel( i, i, currentMin, resolutions.get( i ) ); currentMin = resolutions.get( i ); } }
/** * @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 ); } }
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 ); }
@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; }
if ( source instanceof MultiResolutionRaster ) { MultiResolutionRaster mrr = (MultiResolutionRaster) source; List<Double> resolutions = mrr.getResolutions(); if ( resolutions != null && !resolutions.isEmpty() ) { for ( Double res : resolutions ) {