Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/exports/DischargeCurveGenerator.java @ 6887:5a1078fd53e1
issue1378: Also add ability to add text-annotations.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Wed, 21 Aug 2013 12:24:45 +0200 |
parents | 3df41681f326 |
children | 281190b96f4d |
comparison
equal
deleted
inserted
replaced
6885:b410729bdcdd | 6887:5a1078fd53e1 |
---|---|
6 * documentation coming with Dive4Elements River for details. | 6 * documentation coming with Dive4Elements River for details. |
7 */ | 7 */ |
8 | 8 |
9 package org.dive4elements.river.exports; | 9 package org.dive4elements.river.exports; |
10 | 10 |
11 import java.util.ArrayList; | |
12 import java.util.List; | |
13 | |
11 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; | 14 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; |
12 import org.dive4elements.river.artifacts.D4EArtifact; | 15 import org.dive4elements.river.artifacts.D4EArtifact; |
13 import org.dive4elements.river.artifacts.model.FacetTypes; | 16 import org.dive4elements.river.artifacts.model.FacetTypes; |
14 import org.dive4elements.river.artifacts.model.WQKms; | 17 import org.dive4elements.river.artifacts.model.WQKms; |
18 import org.dive4elements.river.exports.process.DischargeProcessor; | |
19 import org.dive4elements.river.jfree.CollisionFreeXYTextAnnotation; | |
15 import org.dive4elements.river.jfree.Bounds; | 20 import org.dive4elements.river.jfree.Bounds; |
16 import org.dive4elements.river.jfree.RiverAnnotation; | 21 import org.dive4elements.river.jfree.RiverAnnotation; |
17 import org.dive4elements.river.jfree.StickyAxisAnnotation; | 22 import org.dive4elements.river.jfree.StickyAxisAnnotation; |
18 import org.dive4elements.river.jfree.StyledXYSeries; | 23 import org.dive4elements.river.jfree.StyledXYSeries; |
19 import org.dive4elements.river.model.Gauge; | 24 import org.dive4elements.river.model.Gauge; |
20 import org.dive4elements.river.model.River; | 25 import org.dive4elements.river.model.River; |
21 import org.dive4elements.river.utils.RiverUtils; | 26 import org.dive4elements.river.utils.RiverUtils; |
27 import org.dive4elements.river.utils.ThemeUtil; | |
22 | 28 |
23 import org.apache.log4j.Logger; | 29 import org.apache.log4j.Logger; |
24 import org.jfree.chart.annotations.XYTextAnnotation; | 30 import org.jfree.chart.annotations.XYTextAnnotation; |
25 import org.jfree.chart.axis.ValueAxis; | 31 import org.jfree.chart.axis.ValueAxis; |
26 import org.jfree.chart.plot.XYPlot; | 32 import org.jfree.chart.plot.XYPlot; |
277 StyledSeriesBuilder.addPointsQW(series, (WQKms) wqkms); | 283 StyledSeriesBuilder.addPointsQW(series, (WQKms) wqkms); |
278 | 284 |
279 addAxisSeries(series, YAXIS.W.idx, visible); | 285 addAxisSeries(series, YAXIS.W.idx, visible); |
280 } | 286 } |
281 | 287 |
288 | |
289 /** Add a point annotation at given x and y coordinates. */ | |
290 protected void addPointTextAnnotation( | |
291 String title, | |
292 double x, | |
293 double y, | |
294 Document theme | |
295 ) { | |
296 List<XYTextAnnotation> textAnnos = | |
297 new ArrayList<XYTextAnnotation>(); | |
298 XYTextAnnotation anno = new CollisionFreeXYTextAnnotation( | |
299 title, | |
300 x, | |
301 y); | |
302 textAnnos.add(anno); | |
303 RiverAnnotation flysAnno = new RiverAnnotation( | |
304 null, null, null, theme); | |
305 flysAnno.setTextAnnotations(textAnnos); | |
306 addAnnotations(flysAnno); | |
307 } | |
308 | |
309 | |
282 /** | 310 /** |
283 * Add WQ Data to plot. | 311 * Add WQ Data to plot. |
284 * @param wq data as double[][] | 312 * @param wq data as double[][] |
285 */ | 313 */ |
286 protected void doWQOut( | 314 protected void doWQOut( |
289 Document theme, | 317 Document theme, |
290 boolean visible | 318 boolean visible |
291 ) { | 319 ) { |
292 logger.debug("DischargeCurveGenerator: doWQOut"); | 320 logger.debug("DischargeCurveGenerator: doWQOut"); |
293 double [][] data = (double [][]) wq; | 321 double [][] data = (double [][]) wq; |
294 | 322 String title = aaf.getFacetDescription(); |
295 XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), theme); | 323 |
324 XYSeries series = new StyledXYSeries(title, theme); | |
296 | 325 |
297 double translate = getCurrentGaugeDatum(); | 326 double translate = getCurrentGaugeDatum(); |
298 if (translate != 0d) { | 327 if (translate != 0d) { |
299 StyledSeriesBuilder.addPointsQW(series, data, -translate, 100d); | 328 StyledSeriesBuilder.addPointsQW(series, data, -translate, 100d); |
300 addAxisSeries(series, YAXIS.W.idx, visible); | 329 addAxisSeries(series, YAXIS.W.idx, visible); |
301 } | 330 } |
302 else { | 331 else { |
303 StyledSeriesBuilder.addPoints(series, data, true); | 332 StyledSeriesBuilder.addPoints(series, data, true); |
304 addAxisSeries(series, YAXIS.W.idx, visible); | 333 addAxisSeries(series, YAXIS.W.idx, visible); |
305 } | 334 } |
335 | |
336 if(visible && ThemeUtil.parseShowPointLabel(theme) | |
337 && data != null && data.length != 0) { | |
338 | |
339 double[] xs = data[0]; | |
340 double[] ys = data[1]; | |
341 for (int i = 0; i < xs.length; i++) { | |
342 double x = xs[i]; | |
343 double y = ys[i]; | |
344 | |
345 if (translate != 0d) { | |
346 y = (y-translate)*100d; | |
347 } | |
348 | |
349 addPointTextAnnotation(title, x, y, theme); | |
350 } | |
351 } | |
306 } | 352 } |
307 | 353 |
308 } | 354 } |
309 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 355 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |