Mercurial > dive4elements > river
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 } |