comparison flys-artifacts/src/main/java/de/intevation/flys/exports/minfo/SedimentLoadLSGenerator.java @ 5631:ca4b6263996c

Added old calculations to datacage 'M-INFO Sedimentfracht'. * Added facets to artifact config. * Added macros to datacage config. * Create subfolders for old calculations in datacage. * New outputs in sediment load generator.
author Raimund Renkert <rrenkert@intevation.de>
date Wed, 10 Apr 2013 15:04:56 +0200
parents a3dc382bc1ca
children 696d710470f5
comparison
equal deleted inserted replaced
5630:619da3fa7a8b 5631:ca4b6263996c
1 package de.intevation.flys.exports.minfo; 1 package de.intevation.flys.exports.minfo;
2
3 import java.util.Arrays;
2 4
3 import org.apache.log4j.Logger; 5 import org.apache.log4j.Logger;
4 import org.jfree.data.xy.XYSeries; 6 import org.jfree.data.xy.XYSeries;
5 import org.w3c.dom.Document; 7 import org.w3c.dom.Document;
6 8
7 import de.intevation.artifactdatabase.state.ArtifactAndFacet; 9 import de.intevation.artifactdatabase.state.ArtifactAndFacet;
8 import de.intevation.artifactdatabase.state.Facet; 10 import de.intevation.artifactdatabase.state.Facet;
9 import de.intevation.flys.artifacts.FLYSArtifact; 11 import de.intevation.flys.artifacts.FLYSArtifact;
12 import de.intevation.flys.artifacts.access.RangeAccess;
13 import de.intevation.flys.artifacts.access.RiverAccess;
10 import de.intevation.flys.artifacts.access.SedimentLoadAccess; 14 import de.intevation.flys.artifacts.access.SedimentLoadAccess;
11 import de.intevation.flys.artifacts.model.FacetTypes; 15 import de.intevation.flys.artifacts.model.FacetTypes;
16 import de.intevation.flys.artifacts.model.FlowVelocityData;
17 import de.intevation.flys.artifacts.model.WKms;
18 import de.intevation.flys.artifacts.model.minfo.BedDiffEpochResult;
19 import de.intevation.flys.artifacts.model.minfo.BedDiffYearResult;
12 import de.intevation.flys.artifacts.model.minfo.SedimentLoadResult; 20 import de.intevation.flys.artifacts.model.minfo.SedimentLoadResult;
13 import de.intevation.flys.exports.StyledSeriesBuilder; 21 import de.intevation.flys.exports.StyledSeriesBuilder;
14 import de.intevation.flys.exports.XYChartGenerator; 22 import de.intevation.flys.exports.XYChartGenerator;
23 import de.intevation.flys.jfree.Bounds;
24 import de.intevation.flys.jfree.DoubleBounds;
15 import de.intevation.flys.jfree.FLYSAnnotation; 25 import de.intevation.flys.jfree.FLYSAnnotation;
16 import de.intevation.flys.jfree.StyledXYSeries; 26 import de.intevation.flys.jfree.StyledXYSeries;
27 import de.intevation.flys.utils.DataUtil;
17 28
18 29
19 public class SedimentLoadLSGenerator 30 public class SedimentLoadLSGenerator
20 extends XYChartGenerator 31 extends XYChartGenerator
21 implements FacetTypes 32 implements FacetTypes
22 { 33 {
23 public enum YAXIS { 34 public enum YAXIS {
24 L(0); 35 L(0),
36 D(1),
37 DW(2),
38 V(3);
25 39
26 protected int idx; 40 protected int idx;
27 41
28 private YAXIS(int c) { 42 private YAXIS(int c) {
29 idx = c; 43 idx = c;
30 } 44 }
31 } 45 }
32 /** The logger that is used in this generator. */ 46 /** The logger that is used in this generator. */
33 private static Logger logger = Logger.getLogger(BedQualityGenerator.class); 47 private static Logger logger = Logger.getLogger(SedimentLoadLSGenerator.class);
34 48
35 public static final String I18N_CHART_TITLE = "chart.sedimentload.ls.title"; 49 public static final String I18N_CHART_TITLE = "chart.sedimentload.ls.title";
36 public static final String I18N_XAXIS_LABEL = "chart.sedimentload.ls.xaxis.label"; 50 public static final String I18N_XAXIS_LABEL = "chart.sedimentload.ls.xaxis.label";
37 public static final String I18N_YAXIS_LABEL_1 = "chart.sedimentload.ls.yaxis.label.tpera"; 51 public static final String I18N_YAXIS_LABEL_1 = "chart.sedimentload.ls.yaxis.label.tpera";
38 public static final String I18N_YAXIS_LABEL_2 = "chart.sedimentload.ls.yaxis.label.m3pera"; 52 public static final String I18N_YAXIS_LABEL_2 = "chart.sedimentload.ls.yaxis.label.m3pera";
39 53 public static final String I18N_YAXIS_D_LABEL = "chart.beddifference.yaxis.label.diff";
54 public static final String I18N_YAXIS_V_LABEL =
55 "chart.flow_velocity.section.yaxis.label";
56 public final static String I18N_WDIFF_YAXIS_LABEL =
57 "chart.w_differences.yaxis.label";
58
59 public final static String I18N_WDIFF_YAXIS_LABEL_DEFAULT = "m";
40 public static final String I18N_CHART_TITLE_DEFAULT = "Sedimentfracht"; 60 public static final String I18N_CHART_TITLE_DEFAULT = "Sedimentfracht";
41 public static final String I18N_XAXIS_LABEL_DEFAULT = "Fluss-Km"; 61 public static final String I18N_XAXIS_LABEL_DEFAULT = "Fluss-Km";
42 public static final String I18N_YAXIS_LABEL_DEFAULT_1 = "[t/a]"; 62 public static final String I18N_YAXIS_LABEL_DEFAULT_1 = "[t/a]";
43 public static final String I18N_YAXIS_LABEL_DEFAULT_2 = "[m\u00b3/a]"; 63 public static final String I18N_YAXIS_LABEL_DEFAULT_2 = "[m\u00b3/a]";
64 public static final String I18N_YAXIS_D_LABEL_DEFAULT = "delta S [m]";
65 public static final String I18N_YAXIS_V_LABEL_DEFAULT = "Geschwindigkeit v [m/s]";
44 66
45 private FLYSArtifact artifact; 67 private FLYSArtifact artifact;
46 68
47 @Override 69 @Override
48 protected YAxisWalker getYAxisWalker() { 70 protected YAxisWalker getYAxisWalker() {
76 artifact = (FLYSArtifact)bundle.getArtifact(); 98 artifact = (FLYSArtifact)bundle.getArtifact();
77 99
78 if (facet == null) { 100 if (facet == null) {
79 return; 101 return;
80 } 102 }
81 103 if (getXBounds(0) != null && getDomainAxisRange() != null) {
104 logger.debug(Arrays.toString(getDomainAxisRangeFromRequest()));
105 Bounds bounds =
106 calculateZoom(getXBounds(0), getDomainAxisRange());
107 context.putContextValue("startkm", bounds.getLower());
108 context.putContextValue("endkm", bounds.getUpper());
109 }
110 else if (getXBounds(0) != null && getDomainAxisRange() == null) {
111 context.putContextValue("startkm", getXBounds(0).getLower());
112 context.putContextValue("endkm", getXBounds(0).getUpper());
113 }
114 else if (getXBounds(0) == null && getDomainAxisRange() == null) {
115 FLYSArtifact artifact = (FLYSArtifact)bundle.getArtifact();
116 RangeAccess access = new RangeAccess(artifact, context);
117 context.putContextValue("startkm", access.getFrom());
118 context.putContextValue("endkm", access.getTo());
119 }
120 else if (getXBounds(0) == null && getDomainAxisRange() != null){
121 FLYSArtifact artifact = (FLYSArtifact)bundle.getArtifact();
122 RangeAccess access = new RangeAccess(artifact, context);
123 Bounds b = new DoubleBounds(access.getFrom(), access.getTo());
124 Bounds bounds =
125 calculateZoom(b, getDomainAxisRange());
126 context.putContextValue("startkm", bounds.getLower());
127 context.putContextValue("endkm", bounds.getUpper());
128 }
82 if (name.equals(SEDIMENT_LOAD_COARSE)) { 129 if (name.equals(SEDIMENT_LOAD_COARSE)) {
83 doSedimentLoadCoarseOut( 130 doSedimentLoadCoarseOut(
84 (SedimentLoadResult) bundle.getData(context), 131 (SedimentLoadResult) bundle.getData(context),
85 bundle, 132 bundle,
86 attr, 133 attr,
129 visible); 176 visible);
130 } 177 }
131 else if (name.equals(SEDIMENT_LOAD_TOTAL)) { 178 else if (name.equals(SEDIMENT_LOAD_TOTAL)) {
132 doSedimentLoadTotalOut( 179 doSedimentLoadTotalOut(
133 (SedimentLoadResult) bundle.getData(context), 180 (SedimentLoadResult) bundle.getData(context),
181 bundle,
182 attr,
183 visible);
184 }
185 else if (name.equals(FLOW_VELOCITY_TOTALCHANNEL)) {
186 doFlowVelocityTotalOut(
187 (FlowVelocityData) bundle.getData(context),
188 bundle,
189 attr,
190 visible);
191 }
192 else if (name.equals(FLOW_VELOCITY_TOTALCHANNEL_FILTERED)) {
193 doFlowVelocityTotalOut(
194 (FlowVelocityData) bundle.getData(context),
195 bundle,
196 attr,
197 visible);
198 }
199 else if (name.equals(FLOW_VELOCITY_MAINCHANNEL)) {
200 doFlowVelocityMainOut(
201 (FlowVelocityData) bundle.getData(context),
202 bundle,
203 attr,
204 visible);
205 }
206 else if (name.equals(FLOW_VELOCITY_MAINCHANNEL_FILTERED)) {
207 doFlowVelocityMainOut(
208 (FlowVelocityData) bundle.getData(context),
209 bundle,
210 attr,
211 visible);
212 }
213 else if (name.equals(BED_DIFFERENCE_YEAR)) {
214 doBedDifferenceYearOut(
215 (BedDiffYearResult) bundle.getData(context),
216 bundle,
217 attr,
218 visible);
219 }
220 else if (name.equals(BED_DIFFERENCE_YEAR_FILTERED)) {
221 doBedDifferenceYearOut(
222 (BedDiffYearResult) bundle.getData(context),
223 bundle,
224 attr,
225 visible);
226 }
227 else if (name.equals(BED_DIFFERENCE_EPOCH)) {
228 doBedDifferenceEpochOut(
229 (BedDiffEpochResult) bundle.getData(context),
230 bundle,
231 attr,
232 visible);
233 }
234 else if (name.equals(W_DIFFERENCES)) {
235 doWDifferencesOut(
236 (WKms) bundle.getData(context),
134 bundle, 237 bundle,
135 attr, 238 attr,
136 visible); 239 visible);
137 } 240 }
138 else if (name.equals(LONGITUDINAL_ANNOTATION)) { 241 else if (name.equals(LONGITUDINAL_ANNOTATION)) {
172 } 275 }
173 else { 276 else {
174 label = msg(I18N_YAXIS_LABEL_1, I18N_YAXIS_LABEL_DEFAULT_1); 277 label = msg(I18N_YAXIS_LABEL_1, I18N_YAXIS_LABEL_DEFAULT_1);
175 } 278 }
176 } 279 }
280 else if (pos == YAXIS.V.idx) {
281 label = msg(I18N_YAXIS_V_LABEL, I18N_YAXIS_V_LABEL_DEFAULT);
282 }
283 else if (pos == YAXIS.D.idx) {
284 label = msg(I18N_YAXIS_D_LABEL, I18N_YAXIS_D_LABEL_DEFAULT);
285 }
286 else if (pos == YAXIS.DW.idx) {
287 label = msg(I18N_WDIFF_YAXIS_LABEL, I18N_WDIFF_YAXIS_LABEL_DEFAULT);
288 }
289
177 return label; 290 return label;
178 } 291 }
179 292
180 protected void doSedimentLoadCoarseOut(SedimentLoadResult data, 293 protected void doSedimentLoadCoarseOut(SedimentLoadResult data,
181 ArtifactAndFacet aandf, Document theme, boolean visible) { 294 ArtifactAndFacet aandf, Document theme, boolean visible) {
247 StyledSeriesBuilder.addPoints(series, data.getTotalData(), true); 360 StyledSeriesBuilder.addPoints(series, data.getTotalData(), true);
248 361
249 addAxisSeries(series, YAXIS.L.idx, visible); 362 addAxisSeries(series, YAXIS.L.idx, visible);
250 } 363 }
251 364
365 protected void doFlowVelocityMainOut(
366 FlowVelocityData data,
367 ArtifactAndFacet aandf,
368 Document theme,
369 boolean visible
370 ) {
371 XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme);
372 StyledSeriesBuilder.addPoints(series, data.getMainChannelPoints(), true);
373
374 addAxisSeries(series, YAXIS.V.idx, visible);
375 }
376
377 protected void doFlowVelocityTotalOut(
378 FlowVelocityData data,
379 ArtifactAndFacet aandf,
380 Document theme,
381 boolean visible
382 ) {
383 if (data == null) {
384 logger.warn("No data to add to FlowVelocity chart.");
385 return;
386 }
387
388 XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme);
389 StyledSeriesBuilder.addPoints(series, data.getTotalChannelPoints(), true);
390
391 addAxisSeries(series, YAXIS.V.idx, visible);
392 }
393
394 protected void doBedDifferenceYearOut(
395 BedDiffYearResult data,
396 ArtifactAndFacet aandf,
397 Document theme,
398 boolean visible
399 ) {
400 XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme);
401 StyledSeriesBuilder.addPoints(series, data.getDifferencesData(), true);
402
403 addAxisSeries(series, YAXIS.D.idx, visible);
404 }
405
406 protected void doBedDifferenceEpochOut(
407 BedDiffEpochResult data,
408 ArtifactAndFacet aandf,
409 Document theme,
410 boolean visible
411 ) {
412 XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme);
413 StyledSeriesBuilder.addPoints(series, data.getDifferencesData(), true);
414
415 addAxisSeries(series, YAXIS.D.idx, visible);
416 }
417
418 protected void doWDifferencesOut(
419 WKms wkms,
420 ArtifactAndFacet aandf,
421 Document theme,
422 boolean visible
423 ) {
424 if (wkms == null) {
425 logger.warn("No data to add to WDifferencesChart.");
426 return;
427 }
428
429 XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme);
430
431 StyledSeriesBuilder.addPoints(series, wkms);
432
433 addAxisSeries(series, YAXIS.D.idx, visible);
434 if (DataUtil.guessWaterIncreasing(wkms.allWs())) {
435 setInverted(true);
436 }
437 }
438
252 } 439 }

http://dive4elements.wald.intevation.org