private void initReaderFromFile(Hints inHints) throws IOException { if (!this.dataDirectory.isDirectory()) { throw new IOException(this.dataDirectory + " is not a directory"); } File dataFile = null; for (String filename : this.dataDirectory.list()) { if (isDataFile(filename)) { dataFile = new File(this.dataDirectory, filename); break; } } if (dataFile == null) { throw new IOException("No data file found"); } File clazzFile = new File(dataDirectory, "clazz"); if (clazzFile.exists()) { clazz = new String(Files.readAllBytes(clazzFile.toPath())).trim(); } final GeoTiffReader geotiffReader = new GeoTiffReader(dataFile, hints); this.crs = geotiffReader.getCoordinateReferenceSystem(); this.originalGridRange = geotiffReader.getOriginalGridRange(); this.originalEnvelope = geotiffReader.getOriginalEnvelope(); }
/** Returns the original source file, is present in the metadata, and if the coverage */ private File getSourceFile(GridCoverage2D coverage) { final Object fileSource = coverage.getProperty(AbstractGridCoverage2DReader.FILE_SOURCE_PROPERTY); if (fileSource != null && fileSource instanceof String) { File file = new File((String) fileSource); if (file.exists()) { GeoTiffReader reader = null; try { reader = new GeoTiffReader(file); GeneralEnvelope originalEnvelope = reader.getOriginalEnvelope(); Envelope envelope = coverage.getEnvelope(); if (originalEnvelope.equals(envelope, 1e-9, false)) { GridCoverage2D test = reader.read(null); ImageUtilities.disposeImage(test.getRenderedImage()); return file; } } catch (Exception e) { // ok, not a geotiff! } finally { if (reader != null) { reader.dispose(); } } } } return null; }