Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/LongitudinalSectionGenerator2.java @ 8722:a83d519155ab
(issue1754) Do not base smoothing radius on calculation range
Using the calculation parameters for startkm and endkm in the
case that the domain axis had the default extend caused weird
behavior when zooming and led to too large radius values for
most data that only had valid values on a subset of the caluclation
range.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Tue, 28 Apr 2015 14:22:47 +0200 |
parents | cfb3a4d0c637 |
children | 686d8876edf9 |
rev | line source |
---|---|
7105
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
3 * |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
7 */ |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
8 |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
9 package org.dive4elements.river.exports; |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
10 |
7157
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
11 import org.dive4elements.river.artifacts.D4EArtifact; |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
12 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
13 import org.dive4elements.river.artifacts.access.RangeAccess; |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
14 import org.dive4elements.river.jfree.Bounds; |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
15 import org.dive4elements.river.jfree.DoubleBounds; |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
16 import org.dive4elements.river.themes.ThemeDocument; |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
17 |
7105
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
18 public class LongitudinalSectionGenerator2 extends DiagramGenerator |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
19 { |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
20 public static final String I18N_CHART_SHORT_SUBTITLE = |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
21 "chart.longitudinal.section.shortsubtitle"; |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
22 |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
23 public static final String I18N_CHART_LOCATION_SUBTITLE = |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
24 "chart.longitudinal.section.locsubtitle"; |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
25 |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
26 @Override |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
27 public String getDefaultChartSubtitle() { |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
28 double[] dist = getRange(); |
7807
ad4a3980092f
Concatenate the subtitle parts and add them to the default subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents:
7168
diff
changeset
|
29 String parts = ""; |
ad4a3980092f
Concatenate the subtitle parts and add them to the default subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents:
7168
diff
changeset
|
30 if (subTitleParts != null && !subTitleParts.isEmpty()) { |
ad4a3980092f
Concatenate the subtitle parts and add them to the default subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents:
7168
diff
changeset
|
31 for (String p : subTitleParts) { |
ad4a3980092f
Concatenate the subtitle parts and add them to the default subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents:
7168
diff
changeset
|
32 parts += ", " + p; |
ad4a3980092f
Concatenate the subtitle parts and add them to the default subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents:
7168
diff
changeset
|
33 } |
ad4a3980092f
Concatenate the subtitle parts and add them to the default subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents:
7168
diff
changeset
|
34 } |
7105
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
35 if (dist == null || dist.length != 2 || |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
36 Double.isNaN(dist[0]) || Double.isNaN(dist[1])) { |
7118
4605d6ca4ee9
Removed obsolete imports. Minor code cosmetics.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7107
diff
changeset
|
37 Object [] args = new Object[] {getRiverName()}; |
7807
ad4a3980092f
Concatenate the subtitle parts and add them to the default subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents:
7168
diff
changeset
|
38 return msg(I18N_CHART_SHORT_SUBTITLE, "", args) + parts; |
7118
4605d6ca4ee9
Removed obsolete imports. Minor code cosmetics.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7107
diff
changeset
|
39 } |
4605d6ca4ee9
Removed obsolete imports. Minor code cosmetics.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7107
diff
changeset
|
40 |
4605d6ca4ee9
Removed obsolete imports. Minor code cosmetics.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7107
diff
changeset
|
41 if (Math.abs(dist[0] - dist[1]) < 1E-5) { |
4605d6ca4ee9
Removed obsolete imports. Minor code cosmetics.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7107
diff
changeset
|
42 Object [] args = new Object[] {getRiverName(), dist[1]}; |
7807
ad4a3980092f
Concatenate the subtitle parts and add them to the default subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents:
7168
diff
changeset
|
43 return msg(I18N_CHART_LOCATION_SUBTITLE, "", args) + parts; |
7105
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
44 } |
7118
4605d6ca4ee9
Removed obsolete imports. Minor code cosmetics.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7107
diff
changeset
|
45 |
7105
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
46 return super.getDefaultChartSubtitle(); |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
47 } |
7157
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
48 |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
49 /* We override doOut here to save the startkm and endkm in the |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
50 * context. Some facets will deliver different data because of |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
51 * that setting. It is mainly used in MINFO where it causes |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
52 * adaptive smoothing on the data if you are zoomed out do |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
53 * reduce the static in the curve. */ |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
54 @Override |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
55 public void doOut( |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
56 ArtifactAndFacet bundle, |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
57 ThemeDocument theme, |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
58 boolean visible |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
59 ) { |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
60 /* Aheinecke (25.09.2013): I do not understand why this has to be |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
61 * done so difficult and if it really must be done for every |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
62 * facet. At least it has to be done _before_ the super class |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
63 * actually does the output and accesses the facet data. |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
64 */ |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
65 D4EArtifact artifact = (D4EArtifact)bundle.getArtifact(); |
8165
cfb3a4d0c637
Added new diagramm generator for Q symmetry.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7877
diff
changeset
|
66 Object ctxV = context.getContextValue("bounds_defined"); |
cfb3a4d0c637
Added new diagramm generator for Q symmetry.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7877
diff
changeset
|
67 if (ctxV != null && (Boolean)ctxV) { |
7877
43f18dc56c5a
Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents:
7807
diff
changeset
|
68 super.doOut(bundle, theme, visible); |
43f18dc56c5a
Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents:
7807
diff
changeset
|
69 return; |
43f18dc56c5a
Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents:
7807
diff
changeset
|
70 } |
7157
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
71 if (getXBounds(0) != null && getDomainAxisRange() != null) { |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
72 Bounds bounds = |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
73 calculateZoom(getXBounds(0), getDomainAxisRange()); |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
74 context.putContextValue("startkm", bounds.getLower()); |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
75 context.putContextValue("endkm", bounds.getUpper()); |
7877
43f18dc56c5a
Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents:
7807
diff
changeset
|
76 context.putContextValue("bounds_defined", true); |
7157
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
77 } |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
78 else if (getXBounds(0) != null && getDomainAxisRange() == null) { |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
79 context.putContextValue("startkm", getXBounds(0).getLower()); |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
80 context.putContextValue("endkm", getXBounds(0).getUpper()); |
7877
43f18dc56c5a
Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents:
7807
diff
changeset
|
81 context.putContextValue("bounds_defined", true); |
7157
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
82 } |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
83 else if (getXBounds(0) == null && getDomainAxisRange() != null){ |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
84 RangeAccess access = new RangeAccess(artifact); |
7168
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
85 if (access.hasFrom() && access.hasTo()) { |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
86 Bounds b = new DoubleBounds(access.getFrom(), access.getTo()); |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
87 Bounds bounds = |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
88 calculateZoom(b, getDomainAxisRange()); |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
89 context.putContextValue("startkm", bounds.getLower()); |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
90 context.putContextValue("endkm", bounds.getUpper()); |
7877
43f18dc56c5a
Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents:
7807
diff
changeset
|
91 context.putContextValue("bounds_defined", true); |
7168
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
92 } |
7157
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
93 } |
8722
a83d519155ab
(issue1754) Do not base smoothing radius on calculation range
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8165
diff
changeset
|
94 /* |
a83d519155ab
(issue1754) Do not base smoothing radius on calculation range
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8165
diff
changeset
|
95 else if (getXBounds(0) == null && getDomainAxisRange() == null) { |
a83d519155ab
(issue1754) Do not base smoothing radius on calculation range
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8165
diff
changeset
|
96 .. In this case the automatic zoom of the diagram will provide |
a83d519155ab
(issue1754) Do not base smoothing radius on calculation range
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8165
diff
changeset
|
97 decent values for the zooom calculation. |
a83d519155ab
(issue1754) Do not base smoothing radius on calculation range
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8165
diff
changeset
|
98 } |
a83d519155ab
(issue1754) Do not base smoothing radius on calculation range
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8165
diff
changeset
|
99 */ |
7157
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
100 super.doOut(bundle, theme, visible); |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
101 } |
7105
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
102 } |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
103 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |