Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/charts/CrossSectionApp.java @ 1881:0e9c0b49b4ef
CrossSectionApp: draw ground with StableXYDifferenceRenderer
flys-artifacts/trunk@3240 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sat, 12 Nov 2011 12:05:37 +0000 |
parents | 94871b7ce9e9 |
children | eb671699fbc2 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/charts/CrossSectionApp.java Fri Nov 11 12:07:06 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/charts/CrossSectionApp.java Sat Nov 12 12:05:37 2011 +0000 @@ -10,6 +10,8 @@ import de.intevation.flys.utils.Pair; +import de.intevation.flys.jfree.StableXYDifferenceRenderer; + import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; @@ -60,6 +62,7 @@ import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.plot.XYPlot; +import org.jfree.data.xy.DefaultXYDataset; import org.jfree.data.xy.XYSeries; import org.jfree.data.xy.XYDataset; import org.jfree.data.xy.XYSeriesCollection; @@ -402,11 +405,12 @@ } } - public XYDataset generateWaterLevels( - List<Point2D> points + public void generateWaterLevels( + List<Point2D> points, + List<Pair<XYDataset, XYItemRenderer>> datasets ) { if (points == null || points.isEmpty() || lastWaterLevel == null) { - return null; + return; } double [][] data = Lines.createWaterLines(points, lastWaterLevel); @@ -419,15 +423,17 @@ series.add(x[i], y[i], false); } - return new XYSeriesCollection(series); + datasets.add(new Pair<XYDataset, XYItemRenderer>( + new XYSeriesCollection(series), null)); } - public XYDataset generateProfile( - List<Point2D> points, - String legend + public void generateProfile( + List<Point2D> points, + String legend, + List<Pair<XYDataset, XYItemRenderer>> datasets ) { if (points == null || points.isEmpty()) { - return null; + return; } double [][] values = CrossSectionLine.fetchCrossSectionProfile(points); @@ -440,17 +446,32 @@ series.add(x[i], y[i], false); } - return new XYSeriesCollection(series); + datasets.add(new Pair<XYDataset, XYItemRenderer>( + new XYSeriesCollection(series), null));; + } + + public void generateGround( + List<Point2D> points, + String legend, + List<Pair<XYDataset, XYItemRenderer>> datasets + ) { + if (points == null || points.isEmpty()) { + return; + } + + double [][] values = CrossSectionLine.fetchCrossSectionProfile(points); + + DefaultXYDataset dataset = new DefaultXYDataset(); + dataset.addSeries(legend, values); + + StableXYDifferenceRenderer renderer = + new StableXYDifferenceRenderer(); + + datasets.add(new Pair<XYDataset, XYItemRenderer>( + dataset, renderer)); } public List<Pair<XYDataset, XYItemRenderer>> generateDatasets() { - List<Pair<XYDataset, XYItemRenderer>> pairs = - new ArrayList<Pair<XYDataset, XYItemRenderer>>(); - - return pairs; - } - - public List<Pair<XYDataset, XYItemRenderer>> generateDataset() { List<Pair<XYDataset, XYItemRenderer>> datasets = new ArrayList<Pair<XYDataset, XYItemRenderer>>(); @@ -460,41 +481,46 @@ for (int i = 0; i < drawCrossSection.length; ++i) { List<Point2D> points = null; + CrossSection cs = crossSections.get(i); if (drawCrossSection[i]) { - CrossSection cs = crossSections.get(i); for (Pair<CrossSection, CrossSectionLine> csl: csli.lines) { if (csl.getA() == cs) { points = csl.getB().fetchCrossSectionLinesPoints(); - XYDataset dataset = generateProfile( - points, cs.getDescription()); - if (dataset != null) { - datasets.add(new Pair<XYDataset, XYItemRenderer>( - dataset, null)); - } + generateProfile( + points, cs.getDescription(), datasets); break; } } } if (drawWaterLevel[i]) { - CrossSection cs = crossSections.get(i); for (Pair<CrossSection, CrossSectionLine> csl: csli.lines) { if (csl.getA() == cs) { if (points != null) { points = csl.getB().fetchCrossSectionLinesPoints(); } - XYDataset dataset = generateWaterLevels(points); - if (dataset != null) { - datasets.add(new Pair<XYDataset, XYItemRenderer>( - dataset, null)); - } + generateWaterLevels(points, datasets); break; } } } + if (drawGround[i]) { + for (Pair<CrossSection, CrossSectionLine> csl: csli.lines) { + if (csl.getA() == cs) { + if (points != null) { + points = csl.getB().fetchCrossSectionLinesPoints(); + } + generateGround( + points, + cs.getDescription() + "/Boden", + datasets); + break; + } + } + } } return datasets; @@ -527,7 +553,7 @@ false); List<Pair<XYDataset, XYItemRenderer>> datasets = - generateDataset(); + generateDatasets(); XYPlot plot = chart.getXYPlot();