/** * @param info * @param files * @param rasters * @param options */ public DiskBasedTileContainer( QTreeInfo info, List<File> files, List<AbstractRaster> rasters, RasterIOOptions options) { qtree = new QTree<File>(createEnvelope(info.envelope), info.numberOfObjects); envelope = info.envelope; AbstractRaster raster = rasters.iterator().next(); rasterDataInfo = raster.getRasterDataInfo(); rasterGeoReference = info.rasterGeoReference; resolutionInfo = raster.getResolutionInfo(); this.options = options; Iterator<File> iter = files.iterator(); for (AbstractRaster r : rasters) { File f = iter.next(); qtree.insert(createEnvelope(r.getEnvelope()), f); cache.put(f, new SoftReference<AbstractRaster>(r)); } initialized = true; }
/** * @param datasource * @param adapter * @return a corresponding raster, null if files could not be fund */ public static AbstractRaster fromDatasource(RasterDataSource datasource, XMLAdapter adapter) { if (datasource != null) { String defCRS = datasource.getCrs(); CRS crs = null; if (defCRS != null) { crs = new CRS(defCRS); } RasterFileSetType directory = datasource.getRasterDirectory(); RasterFileType file = datasource.getRasterFile(); try { if (directory != null) { File rasterFiles = new File(adapter.resolve(directory.getValue()).getFile()); boolean recursive = directory.isRecursive() == null ? false : directory.isRecursive(); RasterIOOptions options = new RasterIOOptions(); if (crs != null) { options.add(RasterIOOptions.CRS, crs.getName()); } return buildTiledRaster(rasterFiles, directory.getFilePattern(), recursive, options); } if (file != null) { final File loc = new File(adapter.resolve(file.getValue()).getFile()); AbstractRaster raster = loadRasterFromFile(loc); raster.setCoordinateSystem(crs); return raster; } } catch (MalformedURLException e) { if (directory != null) { LOG.warn( "Could not resolve the file {}, corresponding data will not be available.", directory.getValue()); } else { LOG.warn( "Could not resolve the file {}, corresponding data will not be available.", file.getValue()); } } catch (IOException e) { LOG.warn( "Could not load the file {}, corresponding data will not be available.", file.getValue()); } } throw new NullPointerException("The configured raster datasource may not be null."); }