Search in sources :

Example 1 with MapDef

use of org.geotoolkit.report.graphic.map.MapDef in project geotoolkit by Geomatys.

the class LegendFieldRenderer method createValue.

@Override
public Object createValue(final JRField field, final Feature feature) {
    final String name = field.getName();
    final Attribute prop = (Attribute) feature.getProperty(name);
    final LegendDef legend = (LegendDef) prop.getValue();
    if (legend != null && legend.getDelegate() == null) {
        // only create delegate if not yet assigned
        final LegendRenderer renderable = new LegendRenderer();
        final Attribute mapChar = (Attribute) prop.characteristics().get(MAP_ATTRIBUTE);
        final Attribute mapProp = (Attribute) feature.getProperty((String) mapChar.getValue());
        if (mapProp != null && mapProp.getValue() instanceof MapDef) {
            final MapDef md = (MapDef) mapProp.getValue();
            renderable.setContext(md.getSceneDef().getContext());
        }
        legend.setDelegate(renderable);
    }
    if (legend != null && legend.getDelegate() == null) {
        legend.setDelegate(EmptyRenderable.INSTANCE);
    }
    return legend;
}
Also used : Attribute(org.opengis.feature.Attribute) MapDef(org.geotoolkit.report.graphic.map.MapDef)

Example 2 with MapDef

use of org.geotoolkit.report.graphic.map.MapDef in project geotoolkit by Geomatys.

the class NorthArrowFieldRenderer method createValue.

@Override
public Object createValue(final JRField field, final Feature feature) {
    final String name = field.getName();
    final Attribute prop = (Attribute) feature.getProperty(name);
    final NorthArrowDef na = (NorthArrowDef) prop.getValue();
    if (na != null && na.getDelegate() == null) {
        // only create delegate if not yet assigned
        final NorthArrowRenderer renderable = new NorthArrowRenderer();
        final Attribute mapChar = (Attribute) prop.characteristics().get(MAP_ATTRIBUTE);
        final Attribute mapProp = (Attribute) feature.getProperty((String) mapChar.getValue());
        if (mapProp != null && mapProp.getValue() instanceof MapDef) {
            final MapDef md = (MapDef) mapProp.getValue();
            renderable.setRotation(md.getCanvasDef().getAzimuth());
        }
        na.setDelegate(renderable);
    }
    if (na != null && na.getDelegate() == null) {
        na.setDelegate(EmptyRenderable.INSTANCE);
    }
    return na;
}
Also used : Attribute(org.opengis.feature.Attribute) MapDef(org.geotoolkit.report.graphic.map.MapDef)

Example 3 with MapDef

use of org.geotoolkit.report.graphic.map.MapDef in project geotoolkit by Geomatys.

the class ScaleBarFieldRenderer method createValue.

@Override
public Object createValue(final JRField field, final Feature feature) {
    final String name = field.getName();
    final Attribute prop = (Attribute) feature.getProperty(name);
    final ScaleBarDef sb = (ScaleBarDef) prop.getValue();
    if (sb != null && sb.getDelegate() == null) {
        // only create delegate if not yet assigned
        final ScaleBarRenderer renderable = new ScaleBarRenderer();
        final Attribute mapChar = (Attribute) prop.characteristics().get(MAP_ATTRIBUTE);
        final Attribute mapProp = (Attribute) feature.getProperty((String) mapChar.getValue());
        if (mapProp != null && mapProp.getValue() instanceof MapDef) {
            final MapDef md = (MapDef) mapProp.getValue();
            renderable.setCanvas((CanvasRenderer) md.getDelegate());
        }
        sb.setDelegate(renderable);
    }
    if (sb != null && sb.getDelegate() == null) {
        sb.setDelegate(EmptyRenderable.INSTANCE);
    }
    return sb;
}
Also used : Attribute(org.opengis.feature.Attribute) MapDef(org.geotoolkit.report.graphic.map.MapDef)

Example 4 with MapDef

use of org.geotoolkit.report.graphic.map.MapDef in project geotoolkit by Geomatys.

the class JasperReportServiceTest method testPDF.

@Test
public void testPDF() throws JRException, IOException, DataStoreException {
    final MapLayers context = createContext();
    final URL template = JasperReportServiceTest.class.getResource("/report/MapReport.jrxml");
    final Entry<JasperReport, FeatureType> entry = JasperReportService.prepareTemplate(template);
    final JasperReport report = entry.getKey();
    final FeatureType type = entry.getValue();
    List<Feature> collection = new ArrayList<>();
    Feature feature = type.newInstance();
    CanvasDef cdef = new CanvasDef(new Dimension(1, 1), context.getEnvelope().get());
    cdef.setBackground(Color.RED);
    feature.setPropertyValue("map", new MapDef(cdef, new SceneDef(context), null));
    collection.add(feature);
    final File tempfile = File.createTempFile("report", ".pdf");
    tempfile.deleteOnExit();
    OutputDef output = new OutputDef(JasperReportService.MIME_PDF, tempfile);
    JasperReportService.generateReport(report, collection, null, output);
    // just test it's not empty
    assertTrue(tempfile.length() > 1000);
}
Also used : FeatureType(org.opengis.feature.FeatureType) ArrayList(java.util.ArrayList) JasperReport(net.sf.jasperreports.engine.JasperReport) Dimension(java.awt.Dimension) Feature(org.opengis.feature.Feature) URL(java.net.URL) MapDef(org.geotoolkit.report.graphic.map.MapDef) SceneDef(org.geotoolkit.display2d.service.SceneDef) OutputDef(org.geotoolkit.display2d.service.OutputDef) CanvasDef(org.geotoolkit.display2d.service.CanvasDef) File(java.io.File) MapLayers(org.apache.sis.portrayal.MapLayers) Test(org.junit.Test)

Example 5 with MapDef

use of org.geotoolkit.report.graphic.map.MapDef in project geotoolkit by Geomatys.

the class ReportDemo method main.

public static void main(String[] args) throws Exception {
    Demos.init();
    final InputStream template = ReportDemo.class.getResourceAsStream("/data/report/complexReport.jrxml");
    final Entry<JasperReport, FeatureType> entry = JasperReportService.prepareTemplate(template);
    final JasperReport report = entry.getKey();
    final FeatureType type = entry.getValue();
    System.out.println(type);
    // source to make an atlas ----------------------------------------------------
    final FeatureStore store = (FeatureStore) DataStores.open((Map) Collections.singletonMap("path", ReportDemo.class.getResource("/data/world/Countries.shp").toURI()));
    final GenericName name = store.getNames().iterator().next();
    final FeatureCollection countries = store.createSession(true).getFeatureCollection(new Query(name));
    // Iterator over all the countries --------------------------------------------
    final FeatureIterator ite = countries.iterator();
    // We map the feature type to the report type ---------------------------------
    final GenericMappingFeatureIterator mapped = new GenericMappingFeatureIterator(ite, new FeatureMapper() {

        @Override
        public FeatureType getSourceType() {
            return countries.getType();
        }

        @Override
        public FeatureType getTargetType() {
            return type;
        }

        @Override
        public Feature transform(Feature feature) {
            final Feature modified = type.newInstance();
            // create the main map with a single feature ------------------
            final FeatureCollection col = FeatureStoreUtilities.collection(feature);
            final MapLayers context = MapBuilder.createContext();
            final MutableStyle style = RandomStyleBuilder.createRandomVectorStyle(col.getType());
            final MapLayer layer = MapBuilder.createLayer(col);
            layer.setStyle(style);
            context.getComponents().add(layer);
            try {
                // add a custom decoration on our map.
                final GridTemplate gridTemplate = new DefaultGridTemplate(CommonCRS.WGS84.normalizedGeographic(), new BasicStroke(1.5f), new Color(120, 120, 120, 200), new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 3, new float[] { 5, 5 }, 0), new Color(120, 120, 120, 60), new Font("serial", Font.BOLD, 12), Color.GRAY, 0, Color.WHITE, new Font("serial", Font.ITALIC, 10), Color.GRAY, 0, Color.WHITE);
                final PortrayalExtension ext = new PortrayalExtension() {

                    @Override
                    public void completeCanvas(J2DCanvas canvas) throws PortrayalException {
                        canvas.getContainer().getRoot().getChildren().add(new GraphicGridJ2D(canvas, gridTemplate));
                    }
                };
                final CanvasDef canvasDef = new CanvasDef(new Dimension(1, 1), null);
                canvasDef.setBackground(Color.WHITE);
                canvasDef.setStretchImage(false);
                canvasDef.setEnvelope(Envelopes.transform(context.getEnvelope().get(), CRS.forCode("EPSG:3395")));
                final SceneDef sceneDef = new SceneDef(context, null, ext);
                final MapDef mapdef = new MapDef(canvasDef, sceneDef, null);
                modified.setPropertyValue("map3", mapdef);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            // casual attributs -------------------
            modified.setPropertyValue("CNTRY_NAME", feature.getProperty("CNTRY_NAME").getValue());
            modified.setPropertyValue("POP_CNTRY", feature.getProperty("POP_CNTRY").getValue());
            // chart -------------------------
            final DefaultPieDataset pds = new DefaultPieDataset();
            pds.setValue((Comparable) feature.getProperty("SOVEREIGN").getValue(), Math.random());
            pds.setValue((Comparable) feature.getProperty("ISO_3DIGIT").getValue(), Math.random());
            final JFreeChart chart = ChartFactory.createPieChart("Info", pds, true, true, Locale.FRENCH);
            modified.setPropertyValue("chart4", new ChartDef(chart));
            // legend --------------------------
            modified.setPropertyValue("legend5", new LegendDef());
            // scale bar -------------------
            modified.setPropertyValue("scalebar6", new ScaleBarDef());
            // north arow -------------------
            modified.setPropertyValue("northarrow7", new NorthArrowDef());
            // subtable --------------
            final FeatureTypeBuilder ftb = new FeatureTypeBuilder();
            ftb.setName("subdata");
            ftb.addAttribute(Integer.class).setName("men");
            ftb.addAttribute(Integer.class).setName("women");
            ftb.addAttribute(String.class).setName("desc");
            final FeatureType subType = ftb.build();
            final FeatureCollection subcol = FeatureStoreUtilities.collection("sub", subType);
            try {
                FeatureWriter fw = subcol.getSession().getFeatureStore().getFeatureWriter(Query.filtered(subType.getName().toString(), Filter.exclude()));
                for (int i = 0, n = new Random().nextInt(20); i < n; i++) {
                    Feature f = fw.next();
                    f.setPropertyValue("men", new Random().nextInt());
                    f.setPropertyValue("women", new Random().nextInt());
                    f.setPropertyValue("desc", "some text from attribut");
                    fw.write();
                }
                fw.close();
            } catch (DataStoreException ex) {
                ex.printStackTrace();
            }
            modified.setPropertyValue("table8", new CollectionDataSource(subcol));
            return modified;
        }
    });
    // Generate the report --------------------------------------------------------
    final OutputDef output = new OutputDef(JasperReportService.MIME_PDF, new File("atlas.pdf"));
    JasperReportService.generateReport(report, mapped, null, output);
}
Also used : BasicStroke(java.awt.BasicStroke) FeatureType(org.opengis.feature.FeatureType) FeatureWriter(org.geotoolkit.storage.feature.FeatureWriter) Query(org.geotoolkit.storage.feature.query.Query) ScaleBarDef(org.geotoolkit.report.graphic.scalebar.ScaleBarDef) MapLayer(org.apache.sis.portrayal.MapLayer) LegendDef(org.geotoolkit.report.graphic.legend.LegendDef) CollectionDataSource(org.geotoolkit.report.CollectionDataSource) JasperReport(net.sf.jasperreports.engine.JasperReport) DefaultGridTemplate(org.geotoolkit.display2d.ext.grid.DefaultGridTemplate) GridTemplate(org.geotoolkit.display2d.ext.grid.GridTemplate) Feature(org.opengis.feature.Feature) Font(java.awt.Font) FeatureIterator(org.geotoolkit.storage.feature.FeatureIterator) GenericMappingFeatureIterator(org.geotoolkit.storage.memory.GenericMappingFeatureIterator) GenericName(org.opengis.util.GenericName) MutableStyle(org.geotoolkit.style.MutableStyle) Random(java.util.Random) SceneDef(org.geotoolkit.display2d.service.SceneDef) MapDef(org.geotoolkit.report.graphic.map.MapDef) PortrayalExtension(org.geotoolkit.display2d.service.PortrayalExtension) FeatureMapper(org.geotoolkit.storage.memory.mapping.FeatureMapper) J2DCanvas(org.geotoolkit.display2d.canvas.J2DCanvas) FeatureStore(org.geotoolkit.storage.feature.FeatureStore) ChartDef(org.geotoolkit.report.graphic.chart.ChartDef) GraphicGridJ2D(org.geotoolkit.display2d.ext.grid.GraphicGridJ2D) FeatureTypeBuilder(org.apache.sis.feature.builder.FeatureTypeBuilder) DefaultPieDataset(org.jfree.data.general.DefaultPieDataset) DataStoreException(org.apache.sis.storage.DataStoreException) InputStream(java.io.InputStream) DefaultGridTemplate(org.geotoolkit.display2d.ext.grid.DefaultGridTemplate) Color(java.awt.Color) GenericMappingFeatureIterator(org.geotoolkit.storage.memory.GenericMappingFeatureIterator) Dimension(java.awt.Dimension) NorthArrowDef(org.geotoolkit.report.graphic.northarrow.NorthArrowDef) PortrayalException(org.geotoolkit.display.PortrayalException) DataStoreException(org.apache.sis.storage.DataStoreException) JFreeChart(org.jfree.chart.JFreeChart) FeatureCollection(org.geotoolkit.storage.feature.FeatureCollection) OutputDef(org.geotoolkit.display2d.service.OutputDef) Map(java.util.Map) CanvasDef(org.geotoolkit.display2d.service.CanvasDef) File(java.io.File) MapLayers(org.apache.sis.portrayal.MapLayers) PortrayalException(org.geotoolkit.display.PortrayalException)

Aggregations

MapDef (org.geotoolkit.report.graphic.map.MapDef)6 Dimension (java.awt.Dimension)3 File (java.io.File)3 JasperReport (net.sf.jasperreports.engine.JasperReport)3 MapLayers (org.apache.sis.portrayal.MapLayers)3 CanvasDef (org.geotoolkit.display2d.service.CanvasDef)3 OutputDef (org.geotoolkit.display2d.service.OutputDef)3 SceneDef (org.geotoolkit.display2d.service.SceneDef)3 Attribute (org.opengis.feature.Attribute)3 Feature (org.opengis.feature.Feature)3 FeatureType (org.opengis.feature.FeatureType)3 URL (java.net.URL)2 ArrayList (java.util.ArrayList)2 BasicStroke (java.awt.BasicStroke)1 Color (java.awt.Color)1 Font (java.awt.Font)1 InputStream (java.io.InputStream)1 Map (java.util.Map)1 Random (java.util.Random)1 FeatureTypeBuilder (org.apache.sis.feature.builder.FeatureTypeBuilder)1