annotate artifacts/src/main/java/org/dive4elements/river/exports/DischargeCurveGenerator.java @ 7076:7f600001c807 generator-refactoring

Add LTR inversion code to diagram generator. This code is used in serveral diagrams and as it modifies a whole diagram it should be central. (This should also make maintenance easier). This function can be called by processors to make sure that their data is plotted with an LTR waterflow.
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 20 Sep 2013 16:33:22 +0200
parents 2fed93751ecb
children fa4fbd66e752
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3997
diff changeset
9 package org.dive4elements.river.exports;
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
6887
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
11 import java.util.ArrayList;
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
12 import java.util.List;
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
13
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3997
diff changeset
14 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
15 import org.dive4elements.river.artifacts.D4EArtifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3997
diff changeset
16 import org.dive4elements.river.artifacts.model.FacetTypes;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3997
diff changeset
17 import org.dive4elements.river.artifacts.model.WQKms;
6904
d710bd3df387 Artifacts: Make it compilable again.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6899
diff changeset
18 import org.dive4elements.river.exports.process.DischargeProcessor;
6887
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
19 import org.dive4elements.river.jfree.CollisionFreeXYTextAnnotation;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3997
diff changeset
20 import org.dive4elements.river.jfree.Bounds;
5864
f2e46a668fe6 River artifacts: Renamed FLYSAnnotation to RiverAnnotation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
21 import org.dive4elements.river.jfree.RiverAnnotation;
6453
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
22 import org.dive4elements.river.jfree.StickyAxisAnnotation;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3997
diff changeset
23 import org.dive4elements.river.jfree.StyledXYSeries;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3997
diff changeset
24 import org.dive4elements.river.model.Gauge;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3997
diff changeset
25 import org.dive4elements.river.model.River;
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6904
diff changeset
26 import org.dive4elements.river.themes.ThemeDocument;
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5864
diff changeset
27 import org.dive4elements.river.utils.RiverUtils;
3409
97ad960f5579 Add subtitle to Fix W/Q chart and refactor addSubtitle() method(s)
Christian Lins <christian.lins@intevation.de>
parents: 2728
diff changeset
28
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 import org.apache.log4j.Logger;
6453
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
30 import org.jfree.chart.annotations.XYTextAnnotation;
728
56bcf56b1fe0 #157 Both types of discharge curves will now include the '0' value on the x-axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 723
diff changeset
31 import org.jfree.chart.axis.ValueAxis;
375
60f63539d004 Ws and Qs of a longitudinal section chart are mapped to an own range axis now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 369
diff changeset
32 import org.jfree.chart.plot.XYPlot;
728
56bcf56b1fe0 #157 Both types of discharge curves will now include the '0' value on the x-axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 723
diff changeset
33 import org.jfree.data.Range;
923
7ca4a287cd0e #135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 743
diff changeset
34 import org.jfree.data.xy.XYSeries;
1103
e0243627ba62 Use FLYSUtils.getRiver instead of WINFOArtifact.getRiver.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1070
diff changeset
35
2302
300d50f74dab Handle manual points in discharge curve generator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
36
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 /**
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 * An OutGenerator that generates discharge curves.
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 *
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 */
1812
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
42 public class DischargeCurveGenerator
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
43 extends XYChartGenerator
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
44 implements FacetTypes {
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45
6882
a77dca301419 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6739
diff changeset
46 /** Beware, in this implementation, the W axis is also in cm! */
1933
9e9cfc036a3f Better use multiple axis feature in chart generators.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1931
diff changeset
47 public static enum YAXIS {
6453
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
48 WCm(0),
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
49 W(1);
1933
9e9cfc036a3f Better use multiple axis feature in chart generators.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1931
diff changeset
50 protected int idx;
9e9cfc036a3f Better use multiple axis feature in chart generators.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1931
diff changeset
51 private YAXIS(int c) {
9e9cfc036a3f Better use multiple axis feature in chart generators.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1931
diff changeset
52 idx = c;
9e9cfc036a3f Better use multiple axis feature in chart generators.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1931
diff changeset
53 }
9e9cfc036a3f Better use multiple axis feature in chart generators.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1931
diff changeset
54 }
9e9cfc036a3f Better use multiple axis feature in chart generators.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1931
diff changeset
55
1070
b1ed0ec0236f Smaller Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1055
diff changeset
56 /** The logger used in this generator. */
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 private static Logger logger =
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 Logger.getLogger(DischargeCurveGenerator.class);
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59
408
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
60 public static final String I18N_CHART_TITLE =
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
61 "chart.discharge.curve.title";
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
62
414
0385bcc4229a Added subtitles to the available charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 408
diff changeset
63 public static final String I18N_CHART_SUBTITLE =
0385bcc4229a Added subtitles to the available charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 408
diff changeset
64 "chart.discharge.curve.subtitle";
0385bcc4229a Added subtitles to the available charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 408
diff changeset
65
408
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
66 public static final String I18N_XAXIS_LABEL =
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
67 "chart.discharge.curve.xaxis.label";
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
68
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
69 public static final String I18N_YAXIS_LABEL =
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
70 "chart.discharge.curve.yaxis.label";
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
71
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
72 public static final String I18N_CHART_TITLE_DEFAULT = "Abflusskurven";
664
e006da5679d2 s@m³/s@m\u00b3/s@
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 454
diff changeset
73 public static final String I18N_XAXIS_LABEL_DEFAULT = "Q [m\u00b3/s]";
408
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
74 public static final String I18N_YAXIS_LABEL_DEFAULT = "W [cm]";
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
75
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
76
6445
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
77 /**
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
78 * Returns the PNP (Datum) of gauge, if at gauge, 0 otherwise.
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
79 */
6463
378b0d780e36 add tolerance to getCurrentGaugeDatum .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6453
diff changeset
80 public static double getCurrentGaugeDatum(double km, D4EArtifact artifact, double tolerance) {
6739
be8a5e1911ed issue1418: Fetch correct (not necessarily first) gauge
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6559
diff changeset
81 // Look if there is a gauge at chosen km:
be8a5e1911ed issue1418: Fetch correct (not necessarily first) gauge
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6559
diff changeset
82 // Get gauge which is defined for km
be8a5e1911ed issue1418: Fetch correct (not necessarily first) gauge
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6559
diff changeset
83 Gauge gauge =
be8a5e1911ed issue1418: Fetch correct (not necessarily first) gauge
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6559
diff changeset
84 RiverUtils.getRiver(artifact).determineGauge(km-0.1d, km+0.1d);
6939
765cf5fe26c3 DischargeCurveGenerator: Prevent NPE when no gauge can be found.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6905
diff changeset
85 if (gauge == null) {
765cf5fe26c3 DischargeCurveGenerator: Prevent NPE when no gauge can be found.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6905
diff changeset
86 logger.error("No Gauge could be found at station " + km + "!");
765cf5fe26c3 DischargeCurveGenerator: Prevent NPE when no gauge can be found.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6905
diff changeset
87 return 0d;
765cf5fe26c3 DischargeCurveGenerator: Prevent NPE when no gauge can be found.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6905
diff changeset
88 }
6445
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
89 double subtractPNP = 0d;
6739
be8a5e1911ed issue1418: Fetch correct (not necessarily first) gauge
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6559
diff changeset
90 // Compare to km.
6463
378b0d780e36 add tolerance to getCurrentGaugeDatum .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6453
diff changeset
91 if (Math.abs(km - gauge.getStation().doubleValue()) < tolerance) {
6445
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
92 subtractPNP = gauge.getDatum().doubleValue();
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
93 }
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
94 return subtractPNP;
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
95 }
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
96
6453
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
97
6882
a77dca301419 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6739
diff changeset
98 /** Get the current Gauge datum with default distance tolerance. */
6445
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
99 public double getCurrentGaugeDatum() {
6463
378b0d780e36 add tolerance to getCurrentGaugeDatum .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6453
diff changeset
100 return getCurrentGaugeDatum(getRange()[0],
378b0d780e36 add tolerance to getCurrentGaugeDatum .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6453
diff changeset
101 (D4EArtifact) getMaster(), 1e-4);
6445
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
102 }
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
103
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
104
6559
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
105 /** Overriden to show second axis also if no visible data present. */
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
106 @Override
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
107 protected void adjustAxes(XYPlot plot) {
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
108 super.adjustAxes(plot);
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
109 if (getCurrentGaugeDatum() != 0d) {
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
110 // Show the W[*m] axis even if there is no data.
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
111 plot.setRangeAxis(1, createYAxis(YAXIS.W.idx));
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
112 }
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
113 }
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
114
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
115
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
116 public DischargeCurveGenerator() {
348
635af5381a4d Added an abstract OutGenerator that should be the base class for all generators which create charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 299
diff changeset
117 super();
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
118 }
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
119
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
120
2000
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
121 @Override
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
122 protected YAxisWalker getYAxisWalker() {
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
123 return new YAxisWalker() {
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
124 @Override
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
125 public int length() {
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
126 return YAXIS.values().length;
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
127 }
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
128
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
129 @Override
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
130 public String getId(int idx) {
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
131 YAXIS[] yaxes = YAXIS.values();
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
132 return yaxes[idx].toString();
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
133 }
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
134 };
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
135 }
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
136
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
137
3409
97ad960f5579 Add subtitle to Fix W/Q chart and refactor addSubtitle() method(s)
Christian Lins <christian.lins@intevation.de>
parents: 2728
diff changeset
138 /**
97ad960f5579 Add subtitle to Fix W/Q chart and refactor addSubtitle() method(s)
Christian Lins <christian.lins@intevation.de>
parents: 2728
diff changeset
139 * Returns always null to suppress subtitles.
97ad960f5579 Add subtitle to Fix W/Q chart and refactor addSubtitle() method(s)
Christian Lins <christian.lins@intevation.de>
parents: 2728
diff changeset
140 */
2048
3157a78e6494 Improved chart title and subtitle creation in ChartGenerators - all ChartGenerators make now use of title and subtitle provided by ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2000
diff changeset
141 @Override
3157a78e6494 Improved chart title and subtitle creation in ChartGenerators - all ChartGenerators make now use of title and subtitle provided by ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2000
diff changeset
142 protected String getDefaultChartTitle() {
3409
97ad960f5579 Add subtitle to Fix W/Q chart and refactor addSubtitle() method(s)
Christian Lins <christian.lins@intevation.de>
parents: 2728
diff changeset
143 return null;
414
0385bcc4229a Added subtitles to the available charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 408
diff changeset
144 }
0385bcc4229a Added subtitles to the available charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 408
diff changeset
145
0385bcc4229a Added subtitles to the available charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 408
diff changeset
146
2051
4ba5036109d2 Make use of user defined axes labels during chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
147 @Override
4ba5036109d2 Make use of user defined axes labels during chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
148 protected String getDefaultXAxisLabel() {
408
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
149 return msg(I18N_XAXIS_LABEL, I18N_XAXIS_LABEL_DEFAULT);
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 364
diff changeset
150 }
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 364
diff changeset
151
2051
4ba5036109d2 Make use of user defined axes labels during chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
152 @Override
4ba5036109d2 Make use of user defined axes labels during chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
153 protected String getDefaultYAxisLabel(int pos) {
408
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
154 return msg(I18N_YAXIS_LABEL, I18N_YAXIS_LABEL_DEFAULT);
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 364
diff changeset
155 }
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 364
diff changeset
156
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 364
diff changeset
157
2302
300d50f74dab Handle manual points in discharge curve generator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
158 /* TODO is this one really needed? */
728
56bcf56b1fe0 #157 Both types of discharge curves will now include the '0' value on the x-axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 723
diff changeset
159 @Override
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
160 protected boolean zoomX(XYPlot plot, ValueAxis axis, Bounds bounds, Range x) {
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
161 boolean zoomin = super.zoom(plot, axis, bounds, x);
728
56bcf56b1fe0 #157 Both types of discharge curves will now include the '0' value on the x-axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 723
diff changeset
162
56bcf56b1fe0 #157 Both types of discharge curves will now include the '0' value on the x-axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 723
diff changeset
163 if (!zoomin) {
56bcf56b1fe0 #157 Both types of discharge curves will now include the '0' value on the x-axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 723
diff changeset
164 axis.setLowerBound(0d);
56bcf56b1fe0 #157 Both types of discharge curves will now include the '0' value on the x-axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 723
diff changeset
165 }
56bcf56b1fe0 #157 Both types of discharge curves will now include the '0' value on the x-axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 723
diff changeset
166
56bcf56b1fe0 #157 Both types of discharge curves will now include the '0' value on the x-axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 723
diff changeset
167 return zoomin;
56bcf56b1fe0 #157 Both types of discharge curves will now include the '0' value on the x-axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 723
diff changeset
168 }
56bcf56b1fe0 #157 Both types of discharge curves will now include the '0' value on the x-axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 723
diff changeset
169
6526
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6463
diff changeset
170 /** Translate River annotations if a gauge. */
6453
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
171 public void translateRiverAnnotation(RiverAnnotation riverAnnotation) {
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
172 if (getCurrentGaugeDatum() == 0d) {
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
173 return;
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
174 }
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
175 logger.debug("Translate some river annotation.");
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
176 double translate = getCurrentGaugeDatum();
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
177 double factor = 100d;
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
178 for (StickyAxisAnnotation annotation: riverAnnotation.getAxisTextAnnotations()){
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
179 if (!annotation.atX()) {
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
180 annotation.setPos((annotation.getPos() - translate)*factor);
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
181 }
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
182 }
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
183 for (XYTextAnnotation annotation: riverAnnotation.getTextAnnotations()) {
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
184 annotation.setY((annotation.getY() - translate)*factor);
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
185 }
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
186 }
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
187
2302
300d50f74dab Handle manual points in discharge curve generator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
188
3409
97ad960f5579 Add subtitle to Fix W/Q chart and refactor addSubtitle() method(s)
Christian Lins <christian.lins@intevation.de>
parents: 2728
diff changeset
189 @Override
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1680
diff changeset
190 public void doOut(
1944
21a4d2c677a1 Changed doOut signature, side effect from blackboard feature (to come).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1943
diff changeset
191 ArtifactAndFacet artifactFacet,
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6904
diff changeset
192 ThemeDocument theme,
1944
21a4d2c677a1 Changed doOut signature, side effect from blackboard feature (to come).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1943
diff changeset
193 boolean visible
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1680
diff changeset
194 ) {
1944
21a4d2c677a1 Changed doOut signature, side effect from blackboard feature (to come).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1943
diff changeset
195 String name = artifactFacet.getFacetName();
21a4d2c677a1 Changed doOut signature, side effect from blackboard feature (to come).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1943
diff changeset
196 logger.debug("DischargeCurveGenerator.doOut: " + name);
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
197
6899
0a127b6fa490 DischargeCurveGenerator: Use DischargeProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6892
diff changeset
198 DischargeProcessor dProcessor = new DischargeProcessor(getRange()[0]);
0a127b6fa490 DischargeCurveGenerator: Use DischargeProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6892
diff changeset
199 if (dProcessor.canHandle(name)) {
0a127b6fa490 DischargeCurveGenerator: Use DischargeProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6892
diff changeset
200 // In Base DischargeCurveGenerator, always at gauge, use WCm axis.
0a127b6fa490 DischargeCurveGenerator: Use DischargeProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6892
diff changeset
201 dProcessor.doOut(this, artifactFacet, theme, visible, YAXIS.WCm.idx);
0a127b6fa490 DischargeCurveGenerator: Use DischargeProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6892
diff changeset
202 }
0a127b6fa490 DischargeCurveGenerator: Use DischargeProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6892
diff changeset
203 else if (name.equals(DISCHARGE_CURVE)
3997
a9cdd5fae878 Add Facet type for GaugeDischargeCurveArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3409
diff changeset
204 || name.equals(GAUGE_DISCHARGE_CURVE)) {
1812
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
205 doDischargeOut(
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
206 (D4EArtifact)artifactFacet.getArtifact(),
1944
21a4d2c677a1 Changed doOut signature, side effect from blackboard feature (to come).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1943
diff changeset
207 artifactFacet.getData(context),
21a4d2c677a1 Changed doOut signature, side effect from blackboard feature (to come).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1943
diff changeset
208 artifactFacet.getFacetDescription(),
1812
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
209 theme,
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
210 visible);
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
211 }
2302
300d50f74dab Handle manual points in discharge curve generator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
212 else if (FacetTypes.IS.MANUALPOINTS(name)) {
300d50f74dab Handle manual points in discharge curve generator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
213 doPoints(artifactFacet.getData(context),
2325
1fcaeced48f2 #485 Fixed broken renaming of chart themes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2302
diff changeset
214 artifactFacet,
2302
300d50f74dab Handle manual points in discharge curve generator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
215 theme, visible, YAXIS.W.idx);
300d50f74dab Handle manual points in discharge curve generator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
216 }
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
217 else if (STATIC_WQ.equals(name)) {
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
218 doWQOut(artifactFacet.getData(context),
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
219 artifactFacet,
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
220 theme,
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
221 visible);
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
222 }
1812
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
223 else {
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
224 logger.warn("DischargeCurveGenerator.doOut: Unknown facet name: " + name);
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
225 return;
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
226 }
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
227 }
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
228
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
229
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
230 /**
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
231 * Add series with discharge curve to diagram.
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
232 */
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
233 protected void doDischargeOut(
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
234 D4EArtifact artifact,
1944
21a4d2c677a1 Changed doOut signature, side effect from blackboard feature (to come).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1943
diff changeset
235 Object o,
21a4d2c677a1 Changed doOut signature, side effect from blackboard feature (to come).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1943
diff changeset
236 String description,
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6904
diff changeset
237 ThemeDocument theme,
1944
21a4d2c677a1 Changed doOut signature, side effect from blackboard feature (to come).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1943
diff changeset
238 boolean visible)
1812
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
239 {
6882
a77dca301419 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6739
diff changeset
240 logger.debug("DischargeCurveGenerator.doDischargeOut");
1812
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
241 WQKms wqkms = (WQKms) o;
721
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
242
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
243 String gaugeName = wqkms.getName();
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
244
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5864
diff changeset
245 River river = RiverUtils.getRiver(artifact);
721
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
246
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
247 if (river == null) {
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
248 logger.debug("no river found");
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
249 return;
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
250 }
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
251
721
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
252 Gauge gauge = river.determineGaugeByName(gaugeName);
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
253
721
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
254 if (gauge == null) {
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
255 logger.debug("no gauge found");
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
256 return;
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
257 }
454
2c0c22e0935d Added names for discharge curves (at gauges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 414
diff changeset
258
1812
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
259 XYSeries series = new StyledXYSeries(description, theme);
923
7ca4a287cd0e #135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 743
diff changeset
260
1812
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
261 StyledSeriesBuilder.addPointsQW(series, wqkms);
923
7ca4a287cd0e #135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 743
diff changeset
262
1933
9e9cfc036a3f Better use multiple axis feature in chart generators.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1931
diff changeset
263 addAxisSeries(series, YAXIS.W.idx, visible);
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
264 }
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
265
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
266 /**
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
267 * Add W/Q-Series to plot.
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
268 * @param wqkms actual data
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
269 * @param theme theme to use.
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
270 */
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
271 protected void doQOut(
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
272 Object wqkms,
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
273 ArtifactAndFacet aaf,
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6904
diff changeset
274 ThemeDocument theme,
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
275 boolean visible
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
276 ) {
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
277 logger.debug("DischargeCurveGenerator: doQOut (add W/Q data).");
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
278 XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), theme);
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
279
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
280 StyledSeriesBuilder.addPointsQW(series, (WQKms) wqkms);
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
281
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
282 addAxisSeries(series, YAXIS.W.idx, visible);
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
283 }
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
284
6887
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
285
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
286 /** Add a point annotation at given x and y coordinates. */
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
287 protected void addPointTextAnnotation(
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
288 String title,
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
289 double x,
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
290 double y,
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6904
diff changeset
291 ThemeDocument theme
6887
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
292 ) {
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
293 List<XYTextAnnotation> textAnnos =
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
294 new ArrayList<XYTextAnnotation>();
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
295 XYTextAnnotation anno = new CollisionFreeXYTextAnnotation(
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
296 title,
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
297 x,
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
298 y);
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
299 textAnnos.add(anno);
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
300 RiverAnnotation flysAnno = new RiverAnnotation(
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
301 null, null, null, theme);
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
302 flysAnno.setTextAnnotations(textAnnos);
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
303 addAnnotations(flysAnno);
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
304 }
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
305
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
306
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
307 /**
6981
2fed93751ecb issue1457: Handle symbolic discharge of -1 as 'no discharge'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6939
diff changeset
308 * Return true if all values in data[0] are smaller than zero
2fed93751ecb issue1457: Handle symbolic discharge of -1 as 'no discharge'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6939
diff changeset
309 * (in imported data they are set to -1 symbolically).
6889
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
310 * Return false if data is null or empty
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
311 */
6981
2fed93751ecb issue1457: Handle symbolic discharge of -1 as 'no discharge'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6939
diff changeset
312 private boolean hasNoDischarge(double[][] data) {
6889
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
313 if (data == null || data.length == 0) {
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
314 return false;
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
315 }
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
316
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
317 double[] qs = data[0];
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
318 for (double q: qs) {
6981
2fed93751ecb issue1457: Handle symbolic discharge of -1 as 'no discharge'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6939
diff changeset
319 if (q > 0d) {
2fed93751ecb issue1457: Handle symbolic discharge of -1 as 'no discharge'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6939
diff changeset
320 return false;
6889
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
321 }
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
322 }
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
323
6981
2fed93751ecb issue1457: Handle symbolic discharge of -1 as 'no discharge'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6939
diff changeset
324 return true;
6889
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
325 }
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
326
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
327
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
328 /**
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
329 * Add WQ Data to plot.
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
330 * @param wq data as double[][]
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
331 */
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
332 protected void doWQOut(
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
333 Object wq,
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
334 ArtifactAndFacet aaf,
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6904
diff changeset
335 ThemeDocument theme,
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
336 boolean visible
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
337 ) {
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
338 logger.debug("DischargeCurveGenerator: doWQOut");
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
339 double [][] data = (double [][]) wq;
6887
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
340 String title = aaf.getFacetDescription();
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
341
6889
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
342 double translate = getCurrentGaugeDatum();
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
343
6981
2fed93751ecb issue1457: Handle symbolic discharge of -1 as 'no discharge'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6939
diff changeset
344 // If no Q values (i.e. all -1) found, add annotations.
2fed93751ecb issue1457: Handle symbolic discharge of -1 as 'no discharge'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6939
diff changeset
345 if (hasNoDischarge(data)) {
6889
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
346 List<StickyAxisAnnotation> xy = new ArrayList<StickyAxisAnnotation>();
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
347
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
348 for (double y: data[1]) {
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
349 if (translate != 0d) {
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
350 y = (y-translate)*100d;
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
351 }
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
352
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
353 xy.add(new StickyAxisAnnotation(
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
354 title,
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
355 (float) y,
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
356 StickyAxisAnnotation.SimpleAxis.Y_AXIS));
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
357 }
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
358
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
359 doAnnotations(
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
360 new RiverAnnotation(title, xy),
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
361 aaf, theme, visible);
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
362 return;
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
363 }
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
364
feaf76b70190 issue1378: Add axis markers for additional long-sect. without Q (e.g. dike heights).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6888
diff changeset
365 // Otherwise add points.
6887
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
366 XYSeries series = new StyledXYSeries(title, theme);
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
367
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
368 if (translate != 0d) {
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
369 StyledSeriesBuilder.addPointsQW(series, data, -translate, 100d);
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
370 addAxisSeries(series, YAXIS.W.idx, visible);
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
371 }
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
372 else {
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
373 StyledSeriesBuilder.addPoints(series, data, true);
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
374 addAxisSeries(series, YAXIS.W.idx, visible);
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
375 }
6887
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
376
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6904
diff changeset
377 if (visible && theme.parseShowPointLabel()
6887
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
378 && data != null && data.length != 0) {
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
379
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
380 double[] xs = data[0];
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
381 double[] ys = data[1];
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
382 for (int i = 0; i < xs.length; i++) {
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
383 double x = xs[i];
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
384 double y = ys[i];
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
385
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
386 if (translate != 0d) {
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
387 y = (y-translate)*100d;
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
388 }
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
389
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
390 addPointTextAnnotation(title, x, y, theme);
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
391 }
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
392 }
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
393 }
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
394 }
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
395 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org