private RasterSymbolizer buildRainColorMap() { StyleBuilder sb = new StyleBuilder(); ColorMap colorMap = sb.createColorMap( new String[] {"1", "2", "3", "4"}, new double[] {0, 100, 2000, 5000}, new Color[] {Color.RED, Color.WHITE, Color.GREEN, Color.BLUE}, ColorMap.TYPE_RAMP); RasterSymbolizer rasterSymbolizer = sb.createRasterSymbolizer(colorMap, 1d); return rasterSymbolizer; }
private Style createRasterStyle() { StyleBuilder sb = new StyleBuilder(); return sb.createStyle(sb.createRasterSymbolizer()); }
public Layer loadGeoReferencedImageFile(GridCoverage2D gc, String title) throws IOException, URISyntaxException { StyleBuilder sb = new StyleBuilder(); RasterSymbolizer rs = sb.createRasterSymbolizer(); return new GridCoverageLayer(gc, sb.createStyle(rs), ""); }
private static Style getStyle() { StyleBuilder sb = new StyleBuilder(); Style rasterstyle = sb.createStyle(); RasterSymbolizer raster = sb.createRasterSymbolizer(); rasterstyle.featureTypeStyles().add(sb.createFeatureTypeStyle(raster)); rasterstyle.featureTypeStyles().get(0).setName("GridCoverage"); return rasterstyle; }
private RasterSymbolizer buildChannelSelectingSymbolizer(int band) { StyleBuilder sb = new StyleBuilder(); RasterSymbolizer symbolizer = sb.createRasterSymbolizer(); StyleFactory sf = sb.getStyleFactory(); symbolizer.setChannelSelection( sf.createChannelSelection( new SelectedChannelType[] { sf.createSelectedChannelType( String.valueOf(band), (ContrastEnhancement) null) })); return symbolizer; }
public void testRasterSymbolizerDuplication() { // create a default RasterSymbolizer RasterSymbolizer original = sb.createRasterSymbolizer(); // duplicate it original.accept(visitor); RasterSymbolizer copy = (RasterSymbolizer) visitor.getCopy(); // compare it assertNotNull(copy); assertEquals(original, copy); }
@Test public void testReprojectGoogleMercatorTouchDateline() throws Exception { CoordinateReferenceSystem googleMercator = CRS.decode("EPSG:3857"); ReferencedEnvelope mapExtent = new ReferencedEnvelope(20037508.34, 40075016.68, 0, 20037508.34, googleMercator); Rectangle screenSize = new Rectangle(256, 256); AffineTransform w2s = RendererUtilities.worldToScreenTransform(mapExtent, screenSize); GridCoverageRenderer renderer = new GridCoverageRenderer(googleMercator, mapExtent, screenSize, w2s); RasterSymbolizer rasterSymbolizer = new StyleBuilder().createRasterSymbolizer(); RenderedImage image = renderer.renderImage( worldReader, null, rasterSymbolizer, Interpolation.getInstance(Interpolation.INTERP_NEAREST), Color.RED, 256, 256); File reference = new File( "src/test/resources/org/geotools/renderer/lite/gridcoverage2d/googleMercatorTouchDateline.png"); ImageAssert.assertEquals(reference, image, 10); }
@Test public void testRenderOffDateline() throws Exception { File coverageFile = DataUtilities.urlToFile( GridCoverageReaderHelperTest.class.getResource( "test-data/off_dateline.tif")); assertTrue(coverageFile.exists()); GeoTiffReader offDatelineReader = new GeoTiffReader(coverageFile); ReferencedEnvelope envelope = new ReferencedEnvelope(-180, 0, -90, 90, DefaultGeographicCRS.WGS84); GridCoverageRenderer renderer = new GridCoverageRenderer( DefaultGeographicCRS.WGS84, envelope, new Rectangle(0, 0, 450, 450), null); RasterSymbolizer symbolizer = new StyleBuilder().createRasterSymbolizer(); Interpolation interpolation = Interpolation.getInstance(Interpolation.INTERP_NEAREST); RenderedImage image = renderer.renderImage( offDatelineReader, null, symbolizer, interpolation, null, 256, 256); assertNotNull(image); File reference = new File( "src/test/resources/org/geotools/renderer/lite/gridcoverage2d/offDateline.png"); ImageAssert.assertEquals(reference, image, 0); }
@Test public void testCrashOutsideValidArea() throws Exception { ReferencedEnvelope mapExtent = new ReferencedEnvelope( 0.00023726353151687, 180.00025801626, -269.99984914217, -89.999828389438, DefaultGeographicCRS.WGS84); Rectangle screenSize = new Rectangle(256, 256); AffineTransform w2s = RendererUtilities.worldToScreenTransform(mapExtent, screenSize); GridCoverageRenderer renderer = new GridCoverageRenderer(DefaultGeographicCRS.WGS84, mapExtent, screenSize, w2s); RasterSymbolizer rasterSymbolizer = new StyleBuilder().createRasterSymbolizer(); RenderedImage image = renderer.renderImage( worldReader, null, rasterSymbolizer, Interpolation.getInstance(Interpolation.INTERP_NEAREST), Color.RED, 256, 256); assertNull(image); }
@Test public void testIndexedWithNoBackground() throws Exception { CoordinateReferenceSystem googleMercator = CRS.decode("EPSG:3857"); ReferencedEnvelope mapExtent = new ReferencedEnvelope( -20037508.34, 20037508.34, -20037508.34, 20037508.34, googleMercator); Rectangle screenSize = new Rectangle(200, (int) (mapExtent.getHeight() / mapExtent.getWidth() * 200)); AffineTransform w2s = RendererUtilities.worldToScreenTransform(mapExtent, screenSize); GridCoverageRenderer renderer = new GridCoverageRenderer(googleMercator, mapExtent, screenSize, w2s); RasterSymbolizer rasterSymbolizer = new StyleBuilder().createRasterSymbolizer(); RenderedImage image = renderer.renderImage( worldPaletteReader, null, rasterSymbolizer, Interpolation.getInstance(Interpolation.INTERP_BICUBIC), null, 256, 256); assertNotNull(image); }
@Test public void testAcrossDatelineBicubic() throws Exception { ReferencedEnvelope mapExtent = new ReferencedEnvelope(10, 350, -90, 90, DefaultGeographicCRS.WGS84); Rectangle screenSize = new Rectangle(500, (int) (mapExtent.getHeight() / mapExtent.getWidth() * 500)); AffineTransform w2s = RendererUtilities.worldToScreenTransform(mapExtent, screenSize); GridCoverageRenderer renderer = new GridCoverageRenderer(DefaultGeographicCRS.WGS84, mapExtent, screenSize, w2s); RasterSymbolizer rasterSymbolizer = new StyleBuilder().createRasterSymbolizer(); RenderedImage image = renderer.renderImage( worldReader, null, rasterSymbolizer, Interpolation.getInstance(Interpolation.INTERP_BICUBIC), Color.RED, 256, 256); File reference = new File( "src/test/resources/org/geotools/renderer/lite/gridcoverage2d/wrapDatelineBicubic.png"); ImageAssert.assertEquals(reference, image, 0); }
@Test public void testAcrossDatelineBilinear() throws Exception { ReferencedEnvelope mapExtent = new ReferencedEnvelope(10, 350, -90, 90, DefaultGeographicCRS.WGS84); Rectangle screenSize = new Rectangle(500, (int) (mapExtent.getHeight() / mapExtent.getWidth() * 500)); AffineTransform w2s = RendererUtilities.worldToScreenTransform(mapExtent, screenSize); GridCoverageRenderer renderer = new GridCoverageRenderer(DefaultGeographicCRS.WGS84, mapExtent, screenSize, w2s); RasterSymbolizer rasterSymbolizer = new StyleBuilder().createRasterSymbolizer(); RenderedImage image = renderer.renderImage( worldReader, null, rasterSymbolizer, Interpolation.getInstance(Interpolation.INTERP_NEAREST), Color.RED, 256, 256); File reference = new File( "src/test/resources/org/geotools/renderer/lite/gridcoverage2d/wrapDatelineNearest.png"); ImageAssert.assertEquals(reference, image, 20); }
@Test public void testReprojectGoogleMercator() throws Exception { CoordinateReferenceSystem googleMercator = CRS.decode("EPSG:3857"); ReferencedEnvelope mapExtent = new ReferencedEnvelope( -20037508.34, 20037508.34, -20037508.34, 20037508.34, googleMercator); Rectangle screenSize = new Rectangle(200, (int) (mapExtent.getHeight() / mapExtent.getWidth() * 200)); AffineTransform w2s = RendererUtilities.worldToScreenTransform(mapExtent, screenSize); GridCoverageRenderer renderer = new GridCoverageRenderer(googleMercator, mapExtent, screenSize, w2s); RasterSymbolizer rasterSymbolizer = new StyleBuilder().createRasterSymbolizer(); GridCoverage2D coverage = worldReader.read(null); RenderedImage image = renderer.renderImage( coverage, rasterSymbolizer, Interpolation.getInstance(Interpolation.INTERP_NEAREST), Color.RED, 256, 256); // always set ROI on reprojection assertThat(image.getProperty("roi"), instanceOf(ROI.class)); File reference = new File( "src/test/resources/org/geotools/renderer/lite/gridcoverage2d/googleMercator.png"); ImageAssert.assertEquals(reference, image, 0); }
@Test public void testCoverage_0_360() throws Exception { CoordinateReferenceSystem crs = CRS.decode("EPSG:4326", true); ReferencedEnvelope mapExtent = new ReferencedEnvelope(100, 260, -90, 90, crs); Rectangle screenSize = new Rectangle(400, (int) (mapExtent.getHeight() / mapExtent.getWidth() * 400)); AffineTransform w2s = RendererUtilities.worldToScreenTransform(mapExtent, screenSize); GridCoverageRenderer renderer = new GridCoverageRenderer( mapExtent.getCoordinateReferenceSystem(), mapExtent, screenSize, w2s); RasterSymbolizer rasterSymbolizer = new StyleBuilder().createRasterSymbolizer(); RenderedImage image = renderer.renderImage( worldReader_0_360, null, rasterSymbolizer, Interpolation.getInstance(Interpolation.INTERP_NEAREST), Color.BLACK, 256, 256); assertNotNull(image); File reference = new File( "src/test/resources/org/geotools/renderer/lite/gridcoverage2d/world_0_360.png"); ImageAssert.assertEquals(reference, image, 10); }
@Test public void testNoProjectionHandlerSet() throws Exception { // Request crossing dateline should not contain wrapped data ReferencedEnvelope mapExtent = new ReferencedEnvelope(10, 500, -90, 90, DefaultGeographicCRS.WGS84); Rectangle screenSize = new Rectangle(500, (int) (mapExtent.getHeight() / mapExtent.getWidth() * 500)); AffineTransform w2s = RendererUtilities.worldToScreenTransform(mapExtent, screenSize); GridCoverageRenderer renderer = new GridCoverageRenderer(DefaultGeographicCRS.WGS84, mapExtent, screenSize, w2s); // Setting No projectionHandler renderer.setAdvancedProjectionHandlingEnabled(false); RasterSymbolizer rasterSymbolizer = new StyleBuilder().createRasterSymbolizer(); RenderedImage image = renderer.renderImage( worldReader, null, rasterSymbolizer, Interpolation.getInstance(Interpolation.INTERP_NEAREST), Color.RED, 256, 256); File reference = new File( "src/test/resources/org/geotools/renderer/lite/gridcoverage2d/noProjectionHandlerSet.png"); ImageAssert.assertEquals(reference, image, 0); }
@Test public void testReprojectTransparency() throws Exception { ReferencedEnvelope re = new ReferencedEnvelope(0, 20, 20, 40, DefaultGeographicCRS.WGS84); CoordinateReferenceSystem utm32n = CRS.decode("EPSG:32632", true); ReferencedEnvelope mapExtent = re.transform(utm32n, true); // get a subset of the coverage GridCoverage2D global = worldReader.read(null); CoverageProcessor processor = CoverageProcessor.getInstance(new Hints(Hints.LENIENT_DATUM_SHIFT, Boolean.TRUE)); final ParameterValueGroup param = processor.getOperation("CoverageCrop").getParameters().clone(); param.parameter("source").setValue(global); param.parameter("Envelope").setValue(re); GridCoverage2D cropped = (GridCoverage2D) ((Crop) processor.getOperation("CoverageCrop")).doOperation(param, null); // render with reprojection, the ROI should be used to create transparent pixels BufferedImage bi = new BufferedImage(100, 100, BufferedImage.TYPE_4BYTE_ABGR); Graphics2D graphics = bi.createGraphics(); GridCoverageRenderer renderer = new GridCoverageRenderer(utm32n, mapExtent, new Rectangle(0, 0, 100, 100), null); renderer.paint(graphics, cropped, new StyleBuilder().createRasterSymbolizer()); graphics.dispose(); // top left and top right corners must be transparent now, the UTM shrinks towards the pole assertPixelIsTransparent(bi, 0, 0); assertPixelIsTransparent(bi, bi.getWidth() - 1, 0); }
public void testRasterSymbolizerDuplicationWithGeometryFunction() { // create a default RasterSymbolizer RasterSymbolizer original = sb.createRasterSymbolizer(); // Set a function as geometry Function geomFunc = ff.function("centroid", ff.property("thr_geom")); original.setGeometry(geomFunc); // duplicate it original.accept(visitor); RasterSymbolizer copy = (RasterSymbolizer) visitor.getCopy(); // compare it assertEquals( "Any Expression set as Geometry must be correctly replicated", geomFunc, copy.getGeometry()); }
/** * Test that setting the raster opacity correct duplicates the raster symbolizer as a different * object and correctly sets the opacity. */ public void testSetRasterOpacity() { RasterSymbolizer rs = sb.createRasterSymbolizer(); Style s = sb.createStyle(rs); assertEquals(1.0, SLD.opacity(SLD.rasterSymbolizer(s))); SLD.setRasterOpacity(s, 0.25); assertEquals(0.25, SLD.opacity(SLD.rasterSymbolizer(s))); assertNotSame(SLD.rasterSymbolizer(s), rs); }
/** * Build a Symbolizer with ENV function ChannelName * * @param envVar * @param band * @return */ private RasterSymbolizer buildEnvChannelSelectingSymbolizer(String envVar, int band) { StyleBuilder sb = new StyleBuilder(); RasterSymbolizer symbolizer = sb.createRasterSymbolizer(); StyleFactory sf = sb.getStyleFactory(); final FilterFactory ff = CommonFactoryFinder.getFilterFactory(null); symbolizer.setChannelSelection( sf.createChannelSelection( new SelectedChannelType[] { sf.createSelectedChannelType( ff.function("env", ff.literal(envVar), ff.literal(band)), (ContrastEnhancement) null) })); return symbolizer; }
/** * Test to ensure that updating the channels duplicates the raster sybmolizer with the new rgb * channels */ public void testSetRasterRGBChannels() { RasterSymbolizer rs = sb.createRasterSymbolizer(); Style s = sb.createStyle(rs); SelectedChannelType red = sf.createSelectedChannelType("red", sf.createContrastEnhancement(ff.literal(0.2))); SelectedChannelType green = sf.createSelectedChannelType( "green", sf.createContrastEnhancement(ff.literal(0.4))); SelectedChannelType blue = sf.createSelectedChannelType("blue", sf.createContrastEnhancement(ff.literal(0.7))); SLD.setChannelSelection(s, new SelectedChannelType[] {red, green, blue}, null); assertNull(SLD.rasterSymbolizer(s).getChannelSelection().getGrayChannel()); assertNotNull(SLD.rasterSymbolizer(s).getChannelSelection().getRGBChannels()); SelectedChannelType[] selectedChannels = SLD.rasterSymbolizer(s).getChannelSelection().getRGBChannels(); assertEquals("red", selectedChannels[0].getChannelName().evaluate(null, String.class)); assertEquals("green", selectedChannels[1].getChannelName().evaluate(null, String.class)); assertEquals("blue", selectedChannels[2].getChannelName().evaluate(null, String.class)); assertNotSame(SLD.rasterSymbolizer(s), rs); } }