annotate artifacts/src/main/java/org/dive4elements/river/exports/DischargeCurveGenerator.java @ 9556:9b8e8fc1f408

Use facetName in all processors as themeType for legend aggregation.
author gernotbelger
date Tue, 23 Oct 2018 16:26:58 +0200
parents 740d65e4aa14
children
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
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
14 import org.apache.log4j.Logger;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3997
diff changeset
15 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
16 import org.dive4elements.artifactdatabase.state.State;
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
17 import org.dive4elements.artifacts.CallContext;
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
18 import org.dive4elements.river.artifacts.D4EArtifact;
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
19 import org.dive4elements.river.artifacts.GaugeDischargeCurveArtifact;
8726
7f1fb07e4e3d Remove misuse of method for determining gauge for a long range.
Tom Gottfried <tom@intevation.de>
parents: 8202
diff changeset
20 import org.dive4elements.river.artifacts.access.RiverAccess;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3997
diff changeset
21 import org.dive4elements.river.artifacts.model.FacetTypes;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3997
diff changeset
22 import org.dive4elements.river.artifacts.model.WQKms;
8181
209f8a9e8a75 Added new processor to plot misc discharge data, e.g. from datacage or recommendations.
Raimund Renkert <rrenkert@intevation.de>
parents: 7930
diff changeset
23 import org.dive4elements.river.exports.process.MiscDischargeProcessor;
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
24 import org.dive4elements.river.jfree.Bounds;
6887
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
25 import org.dive4elements.river.jfree.CollisionFreeXYTextAnnotation;
7691
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
26 import org.dive4elements.river.jfree.DoubleBounds;
5864
f2e46a668fe6 River artifacts: Renamed FLYSAnnotation to RiverAnnotation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
27 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
28 import org.dive4elements.river.jfree.StickyAxisAnnotation;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3997
diff changeset
29 import org.dive4elements.river.jfree.StyledXYSeries;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3997
diff changeset
30 import org.dive4elements.river.model.Gauge;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3997
diff changeset
31 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
32 import org.dive4elements.river.themes.ThemeDocument;
6453
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
33 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
34 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
35 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
36 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
37 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
38
299
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 * An OutGenerator that generates discharge curves.
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 *
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 * @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
43 */
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
44 public class DischargeCurveGenerator extends XYChartGenerator 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 {
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
48 WCm(0), W(1);
1933
9e9cfc036a3f Better use multiple axis feature in chart generators.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1931
diff changeset
49 protected int idx;
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
50
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
51 private YAXIS(final int c) {
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
52 this.idx = c;
1933
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
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8194
diff changeset
56 /** The log used in this generator. */
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
57 private static Logger log = Logger.getLogger(DischargeCurveGenerator.class);
414
0385bcc4229a Added subtitles to the available charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 408
diff changeset
58
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
59 public static final String I18N_CHART_TITLE = "chart.discharge.curve.title";
408
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
60
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
61 public static final String I18N_CHART_SUBTITLE = "chart.discharge.curve.subtitle";
408
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
62
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
63 public static final String I18N_XAXIS_LABEL = "common.export.csv.header.q";
408
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
64
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
65 public static final String I18N_YAXIS_LABEL = "chart.discharge.curve.yaxis.label";
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
66
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
67 public static final String I18N_CHART_TITLE_DEFAULT = "Abflusskurven";
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
68 public static final String I18N_XAXIS_LABEL_DEFAULT = "Q [m\u00b3/s]";
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
69 public static final String I18N_YAXIS_LABEL_DEFAULT = "W [cm]";
408
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
70
6445
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
71 /**
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
72 * 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
73 */
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
74 public static double getCurrentGaugeDatum(final double km, final D4EArtifact artifact, final double tolerance) {
6739
be8a5e1911ed issue1418: Fetch correct (not necessarily first) gauge
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6559
diff changeset
75 // 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
76 // Get gauge which is defined for km
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
77 final Gauge gauge = new RiverAccess(artifact).getRiver().determineGaugeAtStation(km);
6939
765cf5fe26c3 DischargeCurveGenerator: Prevent NPE when no gauge can be found.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6905
diff changeset
78 if (gauge == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8194
diff changeset
79 log.error("No Gauge could be found at station " + km + "!");
6939
765cf5fe26c3 DischargeCurveGenerator: Prevent NPE when no gauge can be found.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6905
diff changeset
80 return 0d;
765cf5fe26c3 DischargeCurveGenerator: Prevent NPE when no gauge can be found.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6905
diff changeset
81 }
6445
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
82 double subtractPNP = 0d;
6739
be8a5e1911ed issue1418: Fetch correct (not necessarily first) gauge
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6559
diff changeset
83 // Compare to km.
6463
378b0d780e36 add tolerance to getCurrentGaugeDatum .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6453
diff changeset
84 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
85 subtractPNP = gauge.getDatum().doubleValue();
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
86 }
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
87 return subtractPNP;
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
88 }
192fbd23d97f Moved code from ComputedDischargeCurveGenerator to DischargeCurveGenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6427
diff changeset
89
6882
a77dca301419 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6739
diff changeset
90 /** 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
91 public double getCurrentGaugeDatum() {
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
92 return getCurrentGaugeDatum(getRange()[0], (D4EArtifact) getMaster(), 1e-4);
6445
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
6559
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
95 /** 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
96 @Override
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
97 protected void adjustAxes(final XYPlot plot) {
6559
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
98 super.adjustAxes(plot);
7701
e47b1ea5baf4 (issue1579) Add Hack to not syncronize and add second axis in static GaugeDischarge
Andre Heinecke <aheinecke@intevation.de>
parents: 7691
diff changeset
99 // XXX Hacking around that there were two axes shown in official Gauge
e47b1ea5baf4 (issue1579) Add Hack to not syncronize and add second axis in static GaugeDischarge
Andre Heinecke <aheinecke@intevation.de>
parents: 7691
diff changeset
100 // Discharge, the one from the WINFO module.
e47b1ea5baf4 (issue1579) Add Hack to not syncronize and add second axis in static GaugeDischarge
Andre Heinecke <aheinecke@intevation.de>
parents: 7691
diff changeset
101 // This should be made unecessary in a Q Diagram refactoring with
e47b1ea5baf4 (issue1579) Add Hack to not syncronize and add second axis in static GaugeDischarge
Andre Heinecke <aheinecke@intevation.de>
parents: 7691
diff changeset
102 // decent inheritance.
e47b1ea5baf4 (issue1579) Add Hack to not syncronize and add second axis in static GaugeDischarge
Andre Heinecke <aheinecke@intevation.de>
parents: 7691
diff changeset
103 if (getMaster() instanceof GaugeDischargeCurveArtifact) {
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
104 final GaugeDischargeCurveArtifact myMaster = (GaugeDischargeCurveArtifact) getMaster();
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
105 final State state = myMaster.getCurrentState(getContext());
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 8856
diff changeset
106 if (GaugeDischargeCurveArtifact.STATIC_STATE_NAME.equals(state.getID())) {
7701
e47b1ea5baf4 (issue1579) Add Hack to not syncronize and add second axis in static GaugeDischarge
Andre Heinecke <aheinecke@intevation.de>
parents: 7691
diff changeset
107 return;
e47b1ea5baf4 (issue1579) Add Hack to not syncronize and add second axis in static GaugeDischarge
Andre Heinecke <aheinecke@intevation.de>
parents: 7691
diff changeset
108 }
e47b1ea5baf4 (issue1579) Add Hack to not syncronize and add second axis in static GaugeDischarge
Andre Heinecke <aheinecke@intevation.de>
parents: 7691
diff changeset
109 }
e47b1ea5baf4 (issue1579) Add Hack to not syncronize and add second axis in static GaugeDischarge
Andre Heinecke <aheinecke@intevation.de>
parents: 7691
diff changeset
110 // End Hack
e47b1ea5baf4 (issue1579) Add Hack to not syncronize and add second axis in static GaugeDischarge
Andre Heinecke <aheinecke@intevation.de>
parents: 7691
diff changeset
111
6559
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
112 if (getCurrentGaugeDatum() != 0d) {
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
113 // 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
114 plot.setRangeAxis(1, createYAxis(YAXIS.W.idx));
7691
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
115 syncWAxisRanges();
6559
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
116 }
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
117 }
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
118
7691
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
119 protected void syncWAxisRanges() {
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
120 // Syncronizes the ranges of both W Axes to make sure
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
121 // that the Data matches for both axes.
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
122 Bounds boundsInMGauge = getYBounds(YAXIS.W.idx);
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
123 Bounds boundsInCM = getYBounds(YAXIS.WCm.idx);
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
124
7701
e47b1ea5baf4 (issue1579) Add Hack to not syncronize and add second axis in static GaugeDischarge
Andre Heinecke <aheinecke@intevation.de>
parents: 7691
diff changeset
125 if (boundsInMGauge == null || boundsInCM == null) {
e47b1ea5baf4 (issue1579) Add Hack to not syncronize and add second axis in static GaugeDischarge
Andre Heinecke <aheinecke@intevation.de>
parents: 7691
diff changeset
126 // One axis does not exist. Nothing to sync
e47b1ea5baf4 (issue1579) Add Hack to not syncronize and add second axis in static GaugeDischarge
Andre Heinecke <aheinecke@intevation.de>
parents: 7691
diff changeset
127 return;
e47b1ea5baf4 (issue1579) Add Hack to not syncronize and add second axis in static GaugeDischarge
Andre Heinecke <aheinecke@intevation.de>
parents: 7691
diff changeset
128 }
e47b1ea5baf4 (issue1579) Add Hack to not syncronize and add second axis in static GaugeDischarge
Andre Heinecke <aheinecke@intevation.de>
parents: 7691
diff changeset
129
7691
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
130 // XXX Q-Symetry: I am assuming here that there can only
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
131 // be a fixed Range for WinM as this is currently the only
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
132 // thing that is configureable.
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
133 final Range fixedWinMRange = getRangeForAxisFromSettings(getYAxisWalker().getId(YAXIS.W.idx));
7691
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
134
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
135 // The combination of Range and Bounds is crazy..
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
136 if (fixedWinMRange != null) {
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
137 boundsInMGauge = new DoubleBounds(fixedWinMRange.getLowerBound(), fixedWinMRange.getUpperBound());
7691
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
138 }
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
139
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
140 log.debug("Syncing Axis Bounds. Bounds W: " + boundsInMGauge.toString() + " Bounds Wcm: " + boundsInCM.toString());
7691
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
141
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
142 final double datum = getCurrentGaugeDatum();
7691
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
143
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
144 // Convert boundsInMGauge to Datum+cm
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
145 final double convertedLower = ((Double) boundsInMGauge.getLower() - datum) * 100;
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
146 final double convertedUpper = ((Double) boundsInMGauge.getUpper() - datum) * 100;
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
147 final Bounds convertedBounds = new DoubleBounds(convertedLower, convertedUpper);
7691
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
148
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
149 // Now combine both Ranges
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
150 boundsInCM = boundsInCM.combine(convertedBounds);
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
151
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
152 // Recalculate absolute bounds
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
153 boundsInMGauge = new DoubleBounds((Double) boundsInCM.getLower() / 100d + datum, (Double) boundsInCM.getUpper() / 100d + datum);
7691
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
154
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
155 // Set the new combined bounds
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
156 setYBounds(YAXIS.W.idx, boundsInMGauge);
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
157 setYBounds(YAXIS.WCm.idx, boundsInCM);
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
158 log.debug("Synced Bounds W: " + boundsInMGauge.toString() + " Bounds Wcm: " + boundsInCM.toString());
7691
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 6981
diff changeset
159 }
6559
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6526
diff changeset
160
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
161 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
162 super();
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
163 }
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
164
2000
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
165 @Override
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
166 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
167 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
168 @Override
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
169 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
170 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
171 }
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
172
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
173 @Override
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
174 public String getId(final int idx) {
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
175 final YAXIS[] yaxes = YAXIS.values();
2000
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
176 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
177 }
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
178 };
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
179 }
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
180
3409
97ad960f5579 Add subtitle to Fix W/Q chart and refactor addSubtitle() method(s)
Christian Lins <christian.lins@intevation.de>
parents: 2728
diff changeset
181 /**
97ad960f5579 Add subtitle to Fix W/Q chart and refactor addSubtitle() method(s)
Christian Lins <christian.lins@intevation.de>
parents: 2728
diff changeset
182 * 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
183 */
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
184 @Override
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 8856
diff changeset
185 protected String getDefaultChartTitle(final CallContext context) {
3409
97ad960f5579 Add subtitle to Fix W/Q chart and refactor addSubtitle() method(s)
Christian Lins <christian.lins@intevation.de>
parents: 2728
diff changeset
186 return null;
414
0385bcc4229a Added subtitles to the available charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 408
diff changeset
187 }
0385bcc4229a Added subtitles to the available charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 408
diff changeset
188
2051
4ba5036109d2 Make use of user defined axes labels during chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
189 @Override
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 8856
diff changeset
190 protected String getDefaultXAxisLabel(final CallContext context) {
408
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
191 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
192 }
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 364
diff changeset
193
2051
4ba5036109d2 Make use of user defined axes labels during chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
194 @Override
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
195 protected String getDefaultYAxisLabel(final int pos) {
408
fc3ac59c3c8b Enabled i18n support for charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 381
diff changeset
196 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
197 }
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 364
diff changeset
198
2302
300d50f74dab Handle manual points in discharge curve generator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
199 /* 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
200 @Override
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
201 protected boolean zoomX(final XYPlot plot, final ValueAxis axis, final Bounds bounds, final Range x) {
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
202 final 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
203
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
204 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
205 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
206 }
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
207
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
208 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
209 }
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
210
6526
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6463
diff changeset
211 /** Translate River annotations if a gauge. */
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
212 public void translateRiverAnnotation(final RiverAnnotation 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
213 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
214 return;
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
215 }
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8194
diff changeset
216 log.debug("Translate some river annotation.");
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
217 final double translate = getCurrentGaugeDatum();
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
218 final double factor = 100d;
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
219 for (final StickyAxisAnnotation annotation : riverAnnotation.getAxisTextAnnotations()) {
6453
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
220 if (!annotation.atX()) {
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
221 annotation.setPos((annotation.getPos() - translate) * factor);
6453
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
222 }
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
223 }
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
224 for (final XYTextAnnotation annotation : riverAnnotation.getTextAnnotations()) {
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
225 annotation.setY((annotation.getY() - translate) * factor);
6453
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
226 }
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
227 }
f11165468f0a issue1370: swap default axis (now in cm), translate annotations if in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6445
diff changeset
228
3409
97ad960f5579 Add subtitle to Fix W/Q chart and refactor addSubtitle() method(s)
Christian Lins <christian.lins@intevation.de>
parents: 2728
diff changeset
229 @Override
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
230 public void doOut(final ArtifactAndFacet artifactFacet, final ThemeDocument theme, final boolean visible) {
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
231 final String name = artifactFacet.getFacetName();
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8194
diff changeset
232 log.debug("DischargeCurveGenerator.doOut: " + name);
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
233
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 8856
diff changeset
234 final CallContext context = getContext();
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
235
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
236 final MiscDischargeProcessor dProcessor = new MiscDischargeProcessor(getRange()[0]);
6899
0a127b6fa490 DischargeCurveGenerator: Use DischargeProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6892
diff changeset
237 if (dProcessor.canHandle(name)) {
0a127b6fa490 DischargeCurveGenerator: Use DischargeProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6892
diff changeset
238 // In Base DischargeCurveGenerator, always at gauge, use WCm axis.
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
239 dProcessor.doOut(this, artifactFacet, theme, visible, YAXIS.WCm.idx);
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
240 } else if (name.equals(DISCHARGE_CURVE) || name.equals(GAUGE_DISCHARGE_CURVE)) {
9556
9b8e8fc1f408 Use facetName in all processors as themeType for legend aggregation.
gernotbelger
parents: 9312
diff changeset
241 doDischargeOut(artifactFacet.getFacetName(),(D4EArtifact) artifactFacet.getArtifact(), artifactFacet.getData(context), artifactFacet.getFacetDescription(), theme, visible);
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
242 } else if (FacetTypes.IS.MANUALPOINTS(name)) {
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
243 doPoints(artifactFacet.getData(context), artifactFacet, theme, visible, YAXIS.W.idx);
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
244 } else if (STATIC_WQ.equals(name)) {
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
245 doWQOut(artifactFacet.getData(context), artifactFacet, theme, visible);
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
246 } else {
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
247 log.warn("DischargeCurveGenerator.doOut: Unknown facet name: " + name);
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
248 return;
1812
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
249 }
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
250 }
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
251
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
252 /**
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
253 * Add series with discharge curve to diagram.
9556
9b8e8fc1f408 Use facetName in all processors as themeType for legend aggregation.
gernotbelger
parents: 9312
diff changeset
254 * @param string
1812
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
255 */
9556
9b8e8fc1f408 Use facetName in all processors as themeType for legend aggregation.
gernotbelger
parents: 9312
diff changeset
256 protected void doDischargeOut(String facetName, final D4EArtifact artifact, final Object o, final String description, final ThemeDocument theme, final boolean visible) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8194
diff changeset
257 log.debug("DischargeCurveGenerator.doDischargeOut");
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
258 final 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
259
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
260 final String gaugeName = wqkms.getName();
721
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
261
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
262 final River river = new RiverAccess(artifact).getRiver();
721
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
263
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
264 if (river == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8194
diff changeset
265 log.debug("no river found");
721
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
266 return;
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
267 }
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
268
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
269 final Gauge gauge = river.determineGaugeByName(gaugeName);
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
270
721
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
271 if (gauge == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8194
diff changeset
272 log.debug("no gauge found");
721
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
273 return;
7298d58a1f5a Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 695
diff changeset
274 }
454
2c0c22e0935d Added names for discharge curves (at gauges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 414
diff changeset
275
9556
9b8e8fc1f408 Use facetName in all processors as themeType for legend aggregation.
gernotbelger
parents: 9312
diff changeset
276 final XYSeries series = new StyledXYSeries(facetName, 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
277
1812
dd084cf3f284 Refactored to allow mainvalues in discharge curve diagrams, too.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1768
diff changeset
278 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
279
1933
9e9cfc036a3f Better use multiple axis feature in chart generators.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1931
diff changeset
280 addAxisSeries(series, YAXIS.W.idx, visible);
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
281 }
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
282
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 * Add W/Q-Series to plot.
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
285 *
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
286 * @param wqkms
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
287 * actual data
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
288 * @param theme
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
289 * theme to use.
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
290 */
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
291 protected void doQOut(final Object wqkms, final ArtifactAndFacet aaf, final ThemeDocument theme, final boolean visible) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8194
diff changeset
292 log.debug("DischargeCurveGenerator: doQOut (add W/Q data).");
9556
9b8e8fc1f408 Use facetName in all processors as themeType for legend aggregation.
gernotbelger
parents: 9312
diff changeset
293 final XYSeries series = new StyledXYSeries(aaf.getFacetName(), aaf.getFacetDescription(), theme);
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
294
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
295 StyledSeriesBuilder.addPointsQW(series, (WQKms) wqkms);
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
296
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
297 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
298 }
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
299
6887
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
300 /** Add a point annotation at given x and y coordinates. */
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
301 protected void addPointTextAnnotation(final String title, final double x, final double y, final ThemeDocument theme) {
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 8856
diff changeset
302 final List<XYTextAnnotation> textAnnos = new ArrayList<>();
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
303 final XYTextAnnotation anno = new CollisionFreeXYTextAnnotation(title, x, y);
6887
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
304 textAnnos.add(anno);
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
305 final RiverAnnotation flysAnno = new RiverAnnotation(null, null, null, theme);
6887
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
306 flysAnno.setTextAnnotations(textAnnos);
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
307 addAnnotations(flysAnno);
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
308 }
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
309
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
310 /**
6981
2fed93751ecb issue1457: Handle symbolic discharge of -1 as 'no discharge'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6939
diff changeset
311 * 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
312 * (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
313 * 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
314 */
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
315 private static boolean hasNoDischarge(final 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
316 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
317 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
318 }
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
319
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
320 final double[] qs = data[0];
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
321 for (final double q : qs) {
6981
2fed93751ecb issue1457: Handle symbolic discharge of -1 as 'no discharge'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6939
diff changeset
322 if (q > 0d) {
2fed93751ecb issue1457: Handle symbolic discharge of -1 as 'no discharge'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6939
diff changeset
323 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
324 }
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
6981
2fed93751ecb issue1457: Handle symbolic discharge of -1 as 'no discharge'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6939
diff changeset
327 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
328 }
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
329
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
330 /**
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
331 * Add WQ Data to plot.
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
332 *
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
333 * @param wq
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
334 * data as double[][]
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
335 */
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
336 protected void doWQOut(final Object wq, final ArtifactAndFacet aaf, final ThemeDocument theme, final boolean visible) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8194
diff changeset
337 log.debug("DischargeCurveGenerator: doWQOut");
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
338 final double[][] data = (double[][]) wq;
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
339 final String title = aaf.getFacetDescription();
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
340
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
341 final double translate = getCurrentGaugeDatum();
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
6981
2fed93751ecb issue1457: Handle symbolic discharge of -1 as 'no discharge'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6939
diff changeset
343 // 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
344 if (hasNoDischarge(data)) {
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 8856
diff changeset
345 final List<StickyAxisAnnotation> xy = new ArrayList<>();
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
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
347 for (double y : data[1]) {
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
348 if (translate != 0d) {
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
349 y = (y - translate) * 100d;
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
350 }
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
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
352 xy.add(new StickyAxisAnnotation(title, (float) y, StickyAxisAnnotation.SimpleAxis.Y_AXIS));
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
353 }
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
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
355 doAnnotations(new RiverAnnotation(title, xy), aaf, theme, visible);
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
356 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
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 // Otherwise add points.
9556
9b8e8fc1f408 Use facetName in all processors as themeType for legend aggregation.
gernotbelger
parents: 9312
diff changeset
360 final XYSeries series = new StyledXYSeries(aaf.getFacetName(),title, theme);
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
361
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
362 if (translate != 0d) {
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
363 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
364 addAxisSeries(series, YAXIS.W.idx, visible);
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
365 } else {
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
366 StyledSeriesBuilder.addPoints(series, data, true);
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
367 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
368 }
6887
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
369
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
370 if (visible && theme.parseShowPointLabel() && data != null && data.length != 0) {
6887
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
371
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
372 final double[] xs = data[0];
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
373 final double[] ys = data[1];
6887
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
374 for (int i = 0; i < xs.length; i++) {
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
375 final double x = xs[i];
6887
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
376 double y = ys[i];
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
377
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
378 if (translate != 0d) {
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9123
diff changeset
379 y = (y - translate) * 100d;
6887
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
380 }
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
381
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
382 addPointTextAnnotation(title, x, y, theme);
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
383 }
5a1078fd53e1 issue1378: Also add ability to add text-annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6883
diff changeset
384 }
6883
3df41681f326 issue1378: Prepare DischargeCurveGenerator to digest wq-interpolated data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6882
diff changeset
385 }
299
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
386 }
8940b0885865 Added a DischargeCurveGenerator that creates discharge curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
387 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org