public GridCoverage2D getGridCoverage2D(BufferedImage image) { GridCoverage2D gridCoverage = new GridCoverageFactory() .create("isochrone", image, gg.getEnvelope2D()); return gridCoverage; }
public void writeGeotiff(String fileName, ResultSet results) { LOG.info("writing geotiff."); float[][] imagePixelData = new float[rows][cols]; for (int row = 0; row < rows; row++) { for (int col = 0; col < cols; col++) { int index = row * cols + col; float pixel = (float) (results.results[index]); if (unitySeconds > 0) pixel /= unitySeconds; imagePixelData[row][col] = pixel; } } GridCoverage2D coverage = new GridCoverageFactory().create("OTPAnalyst", imagePixelData, refEnvelope); try { GeoTiffWriteParams wp = new GeoTiffWriteParams(); wp.setCompressionMode(GeoTiffWriteParams.MODE_EXPLICIT); wp.setCompressionType("LZW"); ParameterValueGroup params = new GeoTiffFormat().getWriteParameters(); params.parameter(AbstractGridFormat.GEOTOOLS_WRITE_PARAMS.getName().toString()).setValue(wp); GeoTiffWriter writer = new GeoTiffWriter(new File(fileName)); writer.write(coverage, (GeneralParameterValue[]) params.values().toArray(new GeneralParameterValue[1])); } catch (Exception e) { LOG.error("exception while writing geotiff.", e); } LOG.info("done writing geotiff."); }
BufferedImage bi = new BufferedImage(10, 10, BufferedImage.TYPE_4BYTE_ABGR); ReferencedEnvelope envelope = new ReferencedEnvelope(0, 10, 0, 10, CRS.decode("EPSG:4326")); GridCoverage2D test = factory.create("test", bi, envelope); ByteArrayOutputStream bos = new ByteArrayOutputStream(); GeoTiffWriter writer = new GeoTiffWriter(bos);
/** Creates a {@link GridCoverage2D} for the provided {@link RenderedImage}. */ private GridCoverage2D createCoverage(String name, RenderedImage image) { Category noDataCategory = new Category( Vocabulary.formatInternational(VocabularyKeys.NODATA), new Color[] {new Color(0, 0, 0, 0)}, NumberRange.create(DEFAULT_NODATA, DEFAULT_NODATA)); Category[] categories = new Category[] {noDataCategory}; GridSampleDimension[] bands; bands = new GridSampleDimension[1]; bands[0] = new GridSampleDimension(null, categories, null); final Map<String, Object> properties = new HashMap<String, Object>(); CoverageUtilities.setNoDataProperty(properties, DEFAULT_NODATA); return this.coverageFactory.create( name, image, this.originalEnvelope, bands, null, properties); }
/** * Constructs a grid coverage from the specified {@linkplain WritableRaster raster} and * {@linkplain Envelope envelope}. A default color palette is built from the minimal and maximal * values found in the raster. * * @param name The grid coverage name. * @param raster The data (may be floating point numbers). {@linkplain Float#NaN NaN} values are * mapped to a transparent color. * @param envelope The envelope. * @return The new grid coverage. */ public GridCoverage2D create( final CharSequence name, final WritableRaster raster, final Envelope envelope) { return create(name, raster, envelope, null, null, null, null, null); }
/** * Constructs a grid coverage from the specified {@linkplain RenderedImage image} and * {@linkplain Envelope envelope}. A default set of {@linkplain GridSampleDimension sample * dimensions} is used. The {@linkplain CoordinateReferenceSystem coordinate reference system} * is inferred from the supplied envelope. * * <p>The envelope must have at least two dimensions. The two first dimensions describe the * image location along <var>x</var> and <var>y</var> axis. The other dimensions are optional * and may be used to locate the image on a vertical axis or on the time axis. * * @param name The grid coverage name. * @param image The image. * @param envelope The grid coverage cordinates. * @return The new grid coverage. * @since 2.2 */ public GridCoverage2D create( final CharSequence name, final RenderedImage image, final Envelope envelope) { return create(name, image, envelope, null, null, null); }
/** * Test GridCoverage unwrapping * * @throws IOException */ @Test public void testGridCoverageUnwrapping() throws IOException { GridCoverageFactory gcFactory = new GridCoverageFactory(); RenderedImage image = new BufferedImage(1, 1, BufferedImage.TYPE_BYTE_GRAY); GridCoverage2D original = gcFactory.create( "original", image, new GeneralEnvelope(new Rectangle2D.Double(0, 0, 64, 64))); GridSampleDimension[] gsd = new GridSampleDimension[] {new GridSampleDimension("wrappedSampleDimension")}; GridCoverageWrapper wrapper = new GridCoverageWrapper("wrapped", original, gsd, null); assertNotSame(original.getSampleDimensions(), wrapper.getSampleDimensions()); assertNotSame(wrapper, original); assertSame(original, wrapper.unwrap(original.getClass())); } }
Arrays.fill(sds, returnValues.get(0).getSampleDimensions()[0]); return new GridCoverageFactory() .create( "result", worker.getRenderedImage(),
/** * 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; }
/** Returns the grid coverage. */ public GridCoverage2D getGridCoverage2D() { if (coverage == null) { final BufferedImage image = getBufferedImage(); final Envelope envelope = getEnvelope(); final GridSampleDimension[] bands; if (variables.isEmpty()) { bands = null; } else { bands = new GridSampleDimension[variables.size()]; for (int i = 0; i < bands.length; i++) { bands[i] = variables.get(i).getSampleDimension(); } } coverage = factory.create(null, image, envelope, bands, null, null); } return coverage; }
private GridCoverage2D createCoverage() { GridCoverageFactory gcf = CoverageFactoryFinder.getGridCoverageFactory(null); float[][] matrix = new float[WIDTH][WIDTH]; for (int i = 0; i < WIDTH; i++) { for (int j = 0; j < WIDTH; j++) { matrix[i][j] = i + j; } } return gcf.create("coverage", matrix, env); }
private static GridCoverage2D readCoverage(String imageFileName) throws Exception { BufferedImage bi = ImageIO.read(CompositeTest.class.getResourceAsStream("test-data/" + imageFileName)); GridCoverageFactory factory = new GridCoverageFactory(); Envelope2D envelope = new Envelope2D( DefaultEngineeringCRS.GENERIC_2D, 0, 0, bi.getWidth(), bi.getHeight()); return factory.create(imageFileName, bi, envelope); }
@Override public void draw(Graphics2D graphics, MapContent map, MapViewport theViewport) { LOGGER.fine("Started drawing"); final MapViewport viewport = new MapViewport(theViewport); final ReferencedEnvelope viewportExtent = viewport.getBounds(); int scale = calculateScale(viewportExtent, viewport.getScreenArea()); Collection<Tile> tiles = service.findTilesInExtent(viewportExtent, scale, false, 128); BufferedImage mosaickedImage = createImage(viewport.getScreenArea()); Graphics2D g2d = mosaickedImage.createGraphics(); renderTiles(tiles, g2d, viewportExtent, viewport.getWorldToScreen()); this.coverage = gridFactory.create("GridCoverage", mosaickedImage, viewportExtent); graphics.drawImage(mosaickedImage, 0, 0, null); LOGGER.fine("Drawing done"); }
@Override public GridCoverage2D read(GeneralParameterValue[] parameters) throws IllegalArgumentException, IOException { assertTrue( Arrays.stream(parameters) .anyMatch( p -> "Bands".equals(p.getDescriptor().getName().toString()) && Arrays.equals( expectedBands, (int[]) ((ParameterValue) p) .getValue()))); // Create a solid color single band coverage BufferedImage bi = new BufferedImage(100, 100, BufferedImage.TYPE_BYTE_GRAY); Graphics2D graphics = bi.createGraphics(); graphics.setColor(Color.WHITE); graphics.fillRect(0, 0, bi.getWidth(), bi.getHeight()); graphics.dispose(); GridCoverage2D coverage = CoverageFactoryFinder.getGridCoverageFactory(null) .create("test", bi, getOriginalEnvelope()); return coverage; } }
private GridCoverage2D prepareCoverage(RenderedImage image) throws IOException { // creating bands final SampleModel sm = image.getSampleModel(); final ColorModel cm = image.getColorModel(); final int numBands = sm.getNumBands(); final GridSampleDimension[] bands = new GridSampleDimension[numBands]; // setting bands names. for (int i = 0; i < numBands; i++) { final ColorInterpretation colorInterpretation = TypeMap.getColorInterpretation(cm, i); if (colorInterpretation == null) throw new IOException("Unrecognized sample dimension type"); bands[i] = new GridSampleDimension(colorInterpretation.name()); } return coverageFactory.create( rasterManager.getCoverageIdentifier(), image, new GeneralEnvelope(bbox), bands, null, null); }
@Override public GridCoverage2D read(GeneralParameterValue[] parameters) throws IllegalArgumentException, IOException { for (GeneralParameterValue parameter : parameters) { if ("Bands".equals(parameter.getDescriptor().getName().toString())) { assertTrue( Arrays.equals( expectedBands, (int[]) ((ParameterValue) parameter).getValue())); } } BufferedImage bi = image; GridCoverage2D coverage = CoverageFactoryFinder.getGridCoverageFactory(null) .create("test", bi, getOriginalEnvelope()); return coverage; } }
protected GridCoverage2D execute() { return CoverageFactoryFinder.getGridCoverageFactory(null) .create( "name", PlanarImage.wrapRenderedImage( RasterSymbolizerTest.getSynthetic(Double.NaN)), new GeneralEnvelope( new double[] {-90, -180}, new double[] {90, 180}), new GridSampleDimension[] { new GridSampleDimension( "sd", new Category[] { new Category("", Color.BLACK, 0) }, null) }, null, null); } };
protected GridCoverage2D execute() { return CoverageFactoryFinder.getGridCoverageFactory(null) .create( "name", PlanarImage.wrapRenderedImage( RasterSymbolizerTest.getSynthetic(Double.NaN)), new GeneralEnvelope( new double[] {-90, -180}, new double[] {90, 180}), new GridSampleDimension[] { new GridSampleDimension( "sd", new Category[] { new Category("", Color.BLACK, 0) }, null) }, null, null); } };
@org.junit.Test public void colorMap() throws IOException, TransformerException { // get a coverage GridCoverage2D gc = CoverageFactoryFinder.getGridCoverageFactory(null) .create( "name", PlanarImage.wrapRenderedImage(getSynthetic(Double.NaN)), new GeneralEnvelope( new double[] {-90, -180}, new double[] {90, 180}), new GridSampleDimension[] { new GridSampleDimension( "sd", new Category[] {new Category("", Color.BLACK, 0)}, null) }, null, null); testColorMap(gc); }
@Before public void setUp() throws Exception { // get a coverage final GridCoverage2D gc = CoverageFactoryFinder.getGridCoverageFactory(null) .create( "name", PlanarImage.wrapRenderedImage( RasterSymbolizerTest.getSynthetic(Double.NaN)), new GeneralEnvelope( new double[] {-90, -180}, new double[] {90, 180}), new GridSampleDimension[] { new GridSampleDimension( "sd", new Category[] {new Category("", Color.BLACK, 0)}, null) }, null, null); root1 = new RootNode(gc); root2 = new RootNode(gc); root3 = new RootNode(gc, null); }