private StreamingRenderer getNewRenderer(MapContent context) { StreamingRenderer renderer = new StreamingRenderer(); Map<String, Object> rendererParams = new HashMap<String, Object>(); LabelCacheImpl labelCache = new LabelCacheImpl(); rendererParams.put(StreamingRenderer.LABEL_CACHE_KEY, labelCache); renderer.setRendererHints(rendererParams); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); renderer.setMapContent(context); return renderer; }
@Override protected void setUp() throws Exception { // setup data File property = new File(TestData.getResource(this, "square.properties").toURI()); PropertyDataStore ds = new PropertyDataStore(property.getParentFile()); squareFS = ds.getFeatureSource("square"); bounds = new ReferencedEnvelope(0, 10, 0, 10, DefaultGeographicCRS.WGS84); renderer = new StreamingRenderer(); context = new DefaultMapContext(DefaultGeographicCRS.WGS84); renderer.setContext(context); Map hints = new HashMap(); hints.put("maxFiltersToSendToDatastore", 2); hints.put("optimizedDataLoadingEnabled", true); renderer.setRendererHints(hints); // System.setProperty("org.geotools.test.interactive", "true"); }
@Override protected void setUp() throws Exception { // setup data File property = new File(TestData.getResource(this, "diaglines.properties").toURI()); PropertyDataStore ds = new PropertyDataStore(property.getParentFile()); fs = ds.getFeatureSource("diaglines"); bounds = new ReferencedEnvelope(0, 10, 0, 10, DefaultGeographicCRS.WGS84); renderer = new StreamingRenderer(); Map rendererParams = new HashMap(); LabelCacheImpl labelCache = new LabelCacheImpl(); rendererParams.put(StreamingRenderer.LABEL_CACHE_KEY, labelCache); renderer.setRendererHints(rendererParams); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); // System.setProperty("org.geotools.test.interactive", "true"); RendererBaseTest.setupVeraFonts(); }
@Override protected void setUp() throws Exception { File property_point = new File(TestData.getResource(this, "partialPointLabel.properties").toURI()); PropertyDataStore ds_point = new PropertyDataStore(property_point.getParentFile()); fs_point = ds_point.getFeatureSource("partialPointLabel"); File property_line = new File(TestData.getResource(this, "partialLineLabel.properties").toURI()); PropertyDataStore ds_line = new PropertyDataStore(property_line.getParentFile()); fs_line = ds_line.getFeatureSource("partialLineLabel"); File property_area = new File(TestData.getResource(this, "partialAreaLabel.properties").toURI()); PropertyDataStore ds_area = new PropertyDataStore(property_area.getParentFile()); fs_area = ds_area.getFeatureSource("partialAreaLabel"); bounds = new ReferencedEnvelope(0, 10, 0, 10, DefaultGeographicCRS.WGS84); renderer = new StreamingRenderer(); Map rendererParams = new HashMap(); LabelCacheImpl labelCache = new LabelCacheImpl(); rendererParams.put(StreamingRenderer.LABEL_CACHE_KEY, labelCache); renderer.setRendererHints(rendererParams); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); }
private double getStrokeWidth( List<FeatureTypeStyle> featureTypeStyles, Rule[] rules, double dpi) { ArrayList<LiteFeatureTypeStyle> lfts = new ArrayList<LiteFeatureTypeStyle>(); for (FeatureTypeStyle fts : featureTypeStyles) { List<Rule> ruleList = new ArrayList<Rule>(Arrays.asList(rules)); List<Rule> elseRuleList = new ArrayList<Rule>(); LiteFeatureTypeStyle s = new LiteFeatureTypeStyle( null, null, ruleList, elseRuleList, fts.getTransformation()); lfts.add(s); } Map hints = new HashMap(); hints.put("dpi", new Double(dpi)); StreamingRenderer renderer = new StreamingRenderer(); renderer.scaleDenominator = 1; renderer.setRendererHints(hints); renderer.applyUnitRescale(lfts); for (LiteFeatureTypeStyle s : lfts) { Rule r = s.ruleList[0]; LineSymbolizer rescaledLineSymbolizer = (LineSymbolizer) r.getSymbolizers()[0]; return rescaledLineSymbolizer.getStroke().getWidth().evaluate(null, Double.class); } // this should not happen return -1; } }
@Before public void setUp() throws Exception { // setup data File property = new File(TestData.getResource(this, "diaglines.properties").toURI()); PropertyDataStore ds = new PropertyDataStore(property.getParentFile()); fs = ds.getFeatureSource("diaglines"); fs_multiline = ds.getFeatureSource("diaglines_multiline"); pointShield = ds.getFeatureSource("point_shield"); bounds = new ReferencedEnvelope(0, 10, 0, 10, DefaultGeographicCRS.WGS84); renderer = new StreamingRenderer(); Map rendererParams = new HashMap(); LabelCacheImpl labelCache = new LabelCacheImpl(); rendererParams.put(StreamingRenderer.LABEL_CACHE_KEY, labelCache); renderer.setRendererHints(rendererParams); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); RendererBaseTest.setupVeraFonts(); // System.setProperty("org.geotools.test.interactive", "true"); }
@Test public void testRenderingBufferCircleLarge() throws Exception { Style pStyle = RendererBaseTest.loadStyle(this, "markCircleLarge.sld"); MapContent mc = new MapContent(); mc.addLayer(new FeatureLayer(pointFS, pStyle)); StreamingRenderer renderer = new StreamingRenderer(); renderer.setMapContent(mc); renderer.setRendererHints( Collections.singletonMap(StreamingRenderer.ADVANCED_PROJECTION_HANDLING_KEY, true)); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); renderer.setRendererHints(Collections.singletonMap(StreamingRenderer.RENDERING_BUFFER, 64)); ReferencedEnvelope bounds = new ReferencedEnvelope(-10, -0.5, -10, -0.5, DefaultGeographicCRS.WGS84); BufferedImage image = RendererBaseTest.showRender( "Decorative marks in the corner", renderer, TIME, bounds); ImageAssert.assertEquals(file("bufferCircleLarge"), image, 50); }
private void runSingleLayerTest(String fileName, int threshold, Style style) throws Exception, IOException { MapContent mc = new MapContent(); mc.addLayer(new FeatureLayer(fs, style)); StreamingRenderer renderer = new StreamingRenderer(); renderer.setMapContent(mc); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); Map<String, Object> rendererParams = new HashMap<String, Object>(); rendererParams.put(StreamingRenderer.VECTOR_RENDERING_KEY, Boolean.TRUE); renderer.setRendererHints(rendererParams); BufferedImage image = RendererBaseTest.showRender(fileName, renderer, TIME, bounds); File reference = new File( "./src/test/resources/org/geotools/renderer/lite/test-data/vector" + fileName + ".png"); ImageAssert.assertEquals(reference, image, threshold); }
private static BufferedImage renderImage( SimpleFeatureSource featureSource, int width, int height, Rectangle2D mapArea, Style style, Map renderingHints) { BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); Graphics2D g = (Graphics2D) image.getGraphics(); g.setColor(Color.WHITE); g.fillRect(0, 0, width, height); MapContent mapContent = new MapContent(); MapViewport viewport = mapContent.getViewport(); viewport.setBounds(new ReferencedEnvelope(mapArea, DefaultGeographicCRS.WGS84)); viewport.setScreenArea(new Rectangle(width, height)); mapContent.addLayer(new FeatureLayer(featureSource, style)); StreamingRenderer renderer = new StreamingRenderer(); renderer.setRendererHints(renderingHints); renderer.setMapContent(mapContent); renderer.paint(g, viewport.getScreenArea(), viewport.getBounds()); return image; }
@Test public void testSpatialDefaulterForceEPSG() throws Exception { // a spatial filter in the same SRS as the geometry... but with a different axis order // interpretation, if we assume lat/lon we should pick point.4 StyleBuilder sb = new StyleBuilder(); Symbolizer ps = sb.createPointSymbolizer(); Style style = sb.createStyle(ps); Rule rule = style.featureTypeStyles().get(0).rules().get(0); rule.setFilter(ff.bbox("geom", 5, 1, 7, 3, null)); // force EPSG axis order interpretation renderer.setRendererHints( Collections.singletonMap(StreamingRenderer.FORCE_EPSG_AXIS_ORDER_KEY, true)); content.addLayer(new FeatureLayer(pointFS, style)); RendererBaseTest.showRender("Spatial in EPSG order", renderer, TIME, bounds); assertEquals(1, renderedIds.size()); assertEquals("point.4", renderedIds.iterator().next()); }
public void testLabelCacheImpl() throws Exception { Style pStyle = RendererBaseTest.loadStyle(this, "textAnchorRotation.sld"); Style lStyle = RendererBaseTest.loadStyle(this, "lineGray.sld"); DefaultMapContext mc = new DefaultMapContext(DefaultGeographicCRS.WGS84); mc.addLayer(lineFS, lStyle); mc.addLayer(pointFS, pStyle); StreamingRenderer renderer = new StreamingRenderer(); renderer.setContext(mc); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); Map rendererParams = new HashMap(); LabelCacheImpl labelCache = new LabelCacheImpl(); rendererParams.put(StreamingRenderer.LABEL_CACHE_KEY, labelCache); renderer.setRendererHints(rendererParams); RendererBaseTest.showRender("New labeller", renderer, TIME, bounds); } }
rendererParams.put(StreamingRenderer.ADVANCED_PROJECTION_HANDLING_KEY, true); rendererParams.put(StreamingRenderer.CONTINUOUS_MAP_WRAPPING, true); renderer.setRendererHints(rendererParams); renderer.setMapContent(mc);
@Test public void testFillSLD10HighDPI() throws Exception { Style style = RendererBaseTest.loadStyle(this, "margin/fill10.sld"); MapContent mc = new MapContent(); mc.addLayer(new FeatureLayer(bfs, style)); StreamingRenderer renderer = new StreamingRenderer(); renderer.setMapContent(mc); Map hints = Collections.singletonMap(StreamingRenderer.DPI_KEY, 300); renderer.setRendererHints(hints); BufferedImage image = RendererBaseTest.renderImage(renderer, bounds, null, 480, 480); ImageAssert.assertEquals( new File( "./src/test/resources/org/geotools/renderer/lite/test-data/margin/expected-dpi300.png"), image, 100); }
@Test public void testRenderingBufferCircle() throws Exception { Style pStyle = RendererBaseTest.loadStyle(this, "markCircle.sld"); MapContent mc = new MapContent(); mc.addLayer(new FeatureLayer(pointFS, pStyle)); StreamingRenderer renderer = new StreamingRenderer(); renderer.setMapContent(mc); renderer.setRendererHints( Collections.singletonMap(StreamingRenderer.ADVANCED_PROJECTION_HANDLING_KEY, true)); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); bounds = new ReferencedEnvelope(-10, -0.1, -10, -0.1, DefaultGeographicCRS.WGS84); BufferedImage image = RendererBaseTest.showRender( "Decorative marks in the corner", renderer, TIME, bounds); ImageAssert.assertEquals(file("bufferCircle"), image, 50); }
Map<Object, Object> rendererParams = new HashMap<Object, Object>(); rendererParams.put(StreamingRenderer.ADVANCED_PROJECTION_HANDLING_KEY, true); renderer.setRendererHints(rendererParams); BufferedImage image = new BufferedImage(256, 256, BufferedImage.TYPE_4BYTE_ABGR); Graphics2D g2d = (Graphics2D) image.getGraphics();
@Test public void testReprojectedBBOX() throws Exception { // a spatial filter in a different SRS CoordinateReferenceSystem utm31n = CRS.decode("EPSG:32631"); CoordinateReferenceSystem wgs84 = CRS.decode("EPSG:4326"); ReferencedEnvelope envWgs84 = new ReferencedEnvelope(1, 3, 5, 7, wgs84); ReferencedEnvelope envUTM31N = envWgs84.transform(utm31n, true); StyleBuilder sb = new StyleBuilder(); Symbolizer ps = sb.createPointSymbolizer(); Style style = sb.createStyle(ps); Rule rule = style.featureTypeStyles().get(0).rules().get(0); rule.setFilter( ff.bbox( "geom", envUTM31N.getMinX(), envUTM31N.getMinY(), envUTM31N.getMaxX(), envUTM31N.getMaxY(), "EPSG:32631")); // force EPSG axis order interpretation renderer.setRendererHints( Collections.singletonMap(StreamingRenderer.FORCE_EPSG_AXIS_ORDER_KEY, true)); content.addLayer(new FeatureLayer(pointFS, style)); RendererBaseTest.showRender("Spatial in EPSG order", renderer, TIME, bounds); assertEquals(1, renderedIds.size()); assertEquals("point.4", renderedIds.iterator().next()); }
@Test public void testHighOversample() throws Exception { // tiny bbox request MapContent content = new MapContent(); content.getViewport() .setBounds( new ReferencedEnvelope(0, -0.0020, 0.0040, 0, DefaultGeographicCRS.WGS84)); RasterSymbolizer rs = buildRainColorMap(); final Style style = new StyleBuilder().createStyle(rs); content.addLayer(new GridReaderLayer(rainReader, style)); final StreamingRenderer renderer = new StreamingRenderer(); renderer.setMapContent(content); Map<Object, Object> rendererParams = new HashMap<Object, Object>(); rendererParams.put(StreamingRenderer.ADVANCED_PROJECTION_HANDLING_KEY, true); rendererParams.put(StreamingRenderer.CONTINUOUS_MAP_WRAPPING, true); renderer.setRendererHints(rendererParams); BufferedImage image = RendererBaseTest.showRender( "highOversample", renderer, 1000, content.getViewport().getBounds()); ImageAssert.assertEquals( new File("src/test/resources/org/geotools/renderer/lite/rainHighOversample.png"), image, 1000); }
rendererParams.put(StreamingRenderer.ADVANCED_PROJECTION_HANDLING_KEY, true); rendererParams.put(StreamingRenderer.CONTINUOUS_MAP_WRAPPING, true); renderer.setRendererHints(rendererParams);
@Test public void testRenderingBuffer() throws Exception { // prepare the layer MapContent content = new MapContent(); final Style style = getStyle(); content.addLayer(new GridReaderLayer(worldReader, style)); final StreamingRenderer renderer = new StreamingRenderer(); renderer.setMapContent(content); renderer.setRendererHints(Collections.singletonMap("renderingBuffer", 1024)); BufferedImage image = RendererBaseTest.showRender( "testGridCoverageReprojection", renderer, 1000, content.getViewport().getBounds()); ImageAssert.assertEquals( new File("src/test/resources/org/geotools/renderer/lite/rescaled.png"), image, 1000); }
renderer.setRendererHints(rendererHints);