/** * Returns true if the coverage has not been processed in any way since it has been read * * @param coverage */ private boolean isUnprocessed(GridCoverage2D coverage) { RenderedImage ri = coverage.getRenderedImage(); if (ri instanceof RenderedOp) { RenderedOp op = (RenderedOp) ri; return op.getOperationName().startsWith("ImageRead"); } else if (ri instanceof OpImage) { return ri.getClass().getSimpleName().startsWith("ImageRead"); } else { return true; } } }
private int countBands(List<GridCoverage2D> coverages) { int count = 0; for (GridCoverage2D coverage : coverages) { count += coverage.getRenderedImage().getSampleModel().getNumBands(); } return count; }
private int getAlphaBandIndex(GridCoverage2D coverage) { final ColorModel cm = coverage.getRenderedImage().getColorModel(); if (!cm.hasAlpha() || cm.getNumComponents() == cm.getNumColorComponents()) { throw new IllegalArgumentException( "The source coverage does not have an alpha band, cannot extract an " + "alpha band"); } // the alpha band is always the last (see ComponentColorModel.getAlphaRaster or the // getAlpha(object) code if (cm.getNumColorComponents() == 1) { // gray-alpha return 1; } else { // rgba/argb return 3; } }
ps.println("Grid to world: " + coverage.getGridGeometry().getGridToCRS()); ps.println("Contents:"); RenderedImage ri = coverage.getRenderedImage(); Raster raster = ri.getData(); for (int band = 0; band < raster.getNumBands(); band++) {
/** 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; }
final RenderedImage sourceImage = sourceCoverage.getRenderedImage(); final SampleModel sampleModel = sourceImage.getSampleModel(); final int sourceTileW = sampleModel.getWidth();
if (gc.getRenderedImage() instanceof PlanarImage) { ImageUtilities.disposePlanarImageChain((PlanarImage) gc.getRenderedImage());
GridCoverage2D reference = inputCoverages.values().stream().filter(c -> c != null).findFirst().get(); RenderedImage ri = reference.getRenderedImage(); width = ri.getWidth(); height = ri.getHeight();
return false; ColorModel dynamicCm = coverage.getRenderedImage().getColorModel(); if (!dynamicCm.hasAlpha() || !hasAlphaBand(dynamicCm)) { return false;
} else { final ImageWorker worker = new ImageWorker(returnValues.get(0).getRenderedImage()); for (int i = 1; i < size; i++) { worker.addBand(returnValues.get(i).getRenderedImage(), false);
getCoverageSize( coverage.getGridGeometry().getGridRange2D(), coverage.getRenderedImage().getSampleModel()); if (actual > limit) { throw new WcsException(
private GeoTiffWriteParams buildWriteParams(GridCoverage2D coverage) { final RenderedImage renderedImage = coverage.getRenderedImage(); int tileWidth = renderedImage.getTileWidth(); int tileHeight = renderedImage.getTileHeight(); // avoid tiles bigger than the image final GridEnvelope gr = coverage.getGridGeometry().getGridRange(); if (gr.getSpan(0) < tileWidth) { tileWidth = gr.getSpan(0); } if (gr.getSpan(1) < tileHeight) { tileHeight = gr.getSpan(1); } GeoTiffWriteParams writeParams = new GeoTiffWriteParams(); writeParams.setTilingMode(GeoToolsWriteParams.MODE_EXPLICIT); writeParams.setTiling(tileWidth, tileHeight); return writeParams; }
RenderedImage ri = coverage.getRenderedImage(); int tileWidth, tileHeight; if (imageIoWriteParams.getTilingMode() == GeoToolsWriteParams.MODE_EXPLICIT) {
final RenderedImage image = gc.getRenderedImage(); final SampleModel sm = image.getSampleModel(); for (int band : indexes) {
/** * The BandMerge operation takes indexed images and expands them, however in the context of * coverage view band merging we don't normally want that, e.g., raster mask bands are * represented as indexed but we really want to keep them in their binary, single band form. To * do so, the IndexColorModel is replaced by a ComponentColorModel * * @param coverage * @return */ private GridCoverage2D prepareForBandMerge(GridCoverage2D coverage) { RenderedImage ri = coverage.getRenderedImage(); SampleModel sampleModel = ri.getSampleModel(); if (sampleModel.getNumBands() == 1 && ri.getColorModel() instanceof IndexColorModel) { ImageWorker worker = new ImageWorker(ri); worker.removeIndexColorModel(); RenderedImage formatted = worker.getRenderedImage(); return new GridCoverageFactory() .create( coverage.getName(), formatted, coverage.getGridGeometry(), coverage.getSampleDimensions(), new GridCoverage[] {coverage}, coverage.getProperties()); } return coverage; }
@Test public void testBandsFlagsView() throws Exception { // creation in the setup would have failed before the fix for // [GEOT-6168] CoverageView setup fails if one of the source bands has an indexed color // model CoverageInfo info = getCatalog().getCoverageByName(BANDS_FLAGS_VIEW); GridCoverageReader reader = info.getGridCoverageReader(null, null); GridCoverage2D coverage = (GridCoverage2D) reader.read(null); assertEquals(11, coverage.getRenderedImage().getSampleModel().getNumBands()); coverage.dispose(true); } }
@Test public void testMissingNullValuesInCoverageDimensions() throws IOException { CoverageInfo ci = getCatalog().getCoverageByName(getLayerId(MockData.TASMANIA_DEM)); List<CoverageDimensionInfo> dimensions = ci.getDimensions(); // legacy layers have no null value list dimensions.get(0).getNullValues().clear(); getCatalog().save(ci); // and now go back and ask for the reader ci = getCatalog().getCoverageByName(getLayerId(MockData.TASMANIA_DEM)); GridCoverageReader reader = ci.getGridCoverageReader(null, null); GridCoverage2D gc = null; try { // check that we maintain the native info if we don't have any gc = (GridCoverage2D) reader.read(null); assertEquals(-9999d, CoverageUtilities.getNoDataProperty(gc).getAsSingleValue(), 0d); } finally { if (gc != null) { RenderedImage ri = gc.getRenderedImage(); if (gc instanceof GridCoverage2D) { gc.dispose(true); } if (ri instanceof PlanarImage) { ImageUtilities.disposePlanarImageChain((PlanarImage) ri); } } } }
private RenderedImage getImageFromParentCoverage(GridCoverage2D parentCoverage) { if (parentCoverage == null) { return null; } RenderedImage ri = parentCoverage.getRenderedImage(); if (ri != null) { PlanarImage pi = PlanarImage.wrapRenderedImage(ri); pi.setProperty(PARENT_COVERAGE_PROPERTY, parentCoverage); ri = pi; } return ri; }
/** * Dispose the provided coverage for good. * * @param coverage */ private void disposeCoverage(GridCoverage2D coverage) { if (coverage == null) { return; } final RenderedImage im = coverage.getRenderedImage(); ImageUtilities.disposePlanarImageChain(PlanarImage.wrapRenderedImage(im)); coverage.dispose(true); }
private static void testRasterSymbolizerHelper( final SubchainStyleVisitorCoverageProcessingAdapter rsh) { if (TestData.isInteractiveTest()) { ImageIOUtilities.visualize( ((GridCoverage2D) rsh.getOutput()).getRenderedImage(), rsh.getName().toString()); } else { PlanarImage.wrapRenderedImage(((GridCoverage2D) rsh.getOutput()).getRenderedImage()) .getTiles(); rsh.dispose(new Random().nextBoolean() ? true : false); } }