Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/Calculation3.java @ 6302:d5af7b17efc2
Add conversion function that prepares a WQ table for export at gauge
This substracts the datum of the gauge and converts the W values
to cm. Returns a copy if the WQ table is modified.
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Wed, 12 Jun 2013 16:01:46 +0200 |
parents | af13ceeba52a |
children | e4606eae8ea5 |
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:
5863
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:
5863
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:
2166
diff
changeset
|
9 package org.dive4elements.river.artifacts.model; |
676
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
10 |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
11 import org.apache.log4j.Logger; |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
12 |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
13 public class Calculation3 |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
14 extends Calculation |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
15 { |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
16 private static Logger logger = Logger.getLogger(Calculation3.class); |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
17 |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
18 protected double km; |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
19 protected int [] days; |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
20 protected double [] qs; |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
21 |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
22 public Calculation3() { |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
23 } |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
24 |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
25 public Calculation3(double km, int [] days, double [] qs) { |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
26 this.km = km; |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
27 this.days = days; |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
28 this.qs = qs; |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
29 } |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
30 |
709
3b7e9ddf6bb1
New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
676
diff
changeset
|
31 public CalculationResult calculate(WstValueTable wst) { |
676
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
32 |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
33 double [] ws = wst.interpolateW(km, qs, new double[qs.length], this); |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
34 |
1669
0296684a5553
Bugfix: #330 Add problem if no data was found for duration curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
709
diff
changeset
|
35 if (days == null || days.length == 0) { |
2166
2898b1ff6013
I18N for WINFO calculation result messages.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1669
diff
changeset
|
36 addProblem(km, "cannot.find.ds"); |
1669
0296684a5553
Bugfix: #330 Add problem if no data was found for duration curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
709
diff
changeset
|
37 } |
0296684a5553
Bugfix: #330 Add problem if no data was found for duration curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
709
diff
changeset
|
38 |
0296684a5553
Bugfix: #330 Add problem if no data was found for duration curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
709
diff
changeset
|
39 if (logger.isDebugEnabled()) { |
0296684a5553
Bugfix: #330 Add problem if no data was found for duration curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
709
diff
changeset
|
40 logger.debug("Calculate duration curve data:"); |
0296684a5553
Bugfix: #330 Add problem if no data was found for duration curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
709
diff
changeset
|
41 logger.debug(" km : " + km); |
0296684a5553
Bugfix: #330 Add problem if no data was found for duration curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
709
diff
changeset
|
42 logger.debug(" num Days : " + (days != null ? days.length : 0)); |
0296684a5553
Bugfix: #330 Add problem if no data was found for duration curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
709
diff
changeset
|
43 logger.debug(" num Qs : " + (qs != null ? qs.length : 0)); |
0296684a5553
Bugfix: #330 Add problem if no data was found for duration curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
709
diff
changeset
|
44 logger.debug(" result Ws: " + (ws != null ? ws.length : 0)); |
0296684a5553
Bugfix: #330 Add problem if no data was found for duration curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
709
diff
changeset
|
45 } |
0296684a5553
Bugfix: #330 Add problem if no data was found for duration curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
709
diff
changeset
|
46 |
676
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
47 WQDay wqday = new WQDay(days, ws, qs); |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
48 |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
49 if (hasProblems()) { |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
50 logger.debug("calculation caused "+numProblems()+" problem(s)."); |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
51 wqday.removeNaNs(); |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
52 } |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
53 |
709
3b7e9ddf6bb1
New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
676
diff
changeset
|
54 return new CalculationResult(wqday, this); |
676
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
55 } |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
56 } |
c501f27c1f71
Added error reporting to 'Dauerzahlen' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
57 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |