annotate flys-artifacts/src/main/java/de/intevation/flys/exports/fixings/FixATWriter.java @ 3641:1dc904370a64

Fixed issue687: Rewrote AT export in FixA flys-artifacts/trunk@5361 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 04 Sep 2012 17:32:37 +0000
parents 0c8a6145098b
children 83c0735092a3
rev   line source
3220
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.exports.fixings;
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 import de.intevation.artifacts.CallMeta;
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
4
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
5 import de.intevation.flys.artifacts.math.fitting.Function;
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
6
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
7 import de.intevation.flys.artifacts.model.Parameters;
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9 import de.intevation.flys.artifacts.resources.Resources;
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 import de.intevation.flys.exports.ATWriter;
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13 import java.io.IOException;
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 import java.io.PrintWriter;
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15 import java.io.Writer;
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17 import java.util.Locale;
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 import org.apache.log4j.Logger;
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21 public class FixATWriter
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22 {
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23 private static Logger log = Logger.getLogger(FixATWriter.class);
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25 public static final String I18N_HEADER_KEY =
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
26 "fix.export.at.header";
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 public static final String I18N_HEADER_DEFAULT =
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29 "Exported fixings discharge curve for {0} {0}-km: {1}";
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
31 public static final String [] Q_MAX_COLUMN = new String [] { "max_q" };
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32
3641
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
33 private static final int MAX_ITERATIONS = 10000;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
34 private static final double EPSILON = 1e-8;
3220
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
36 protected Function function;
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
37 protected Parameters parameters;
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
38
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39 public FixATWriter() {
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40 }
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
42 public FixATWriter(Function function, Parameters parameters) {
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
43 this.function = function;
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
44 this.parameters = parameters;
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
45 }
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
46
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
47 public void write(
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
48 Writer writer,
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
49 CallMeta meta,
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
50 String river,
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
51 double km
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
52 )
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
53 throws IOException {
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
54 PrintWriter out = new PrintWriter(writer);
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
55 printHeader(out, meta, river, km);
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
56
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
57 double [] coeffs = parameters.interpolate(
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
58 "km", km, function.getParameterNames());
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
59
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
60 double [] qMax = parameters.interpolate(
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
61 "km", km, Q_MAX_COLUMN);
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
62
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
63 if (coeffs == null || qMax == null) {
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
64 log.debug("No data found at km " + km + ".");
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
65 return;
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
66 }
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
67
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
68 de.intevation.flys.artifacts.math.Function funcInst =
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
69 function.instantiate(coeffs);
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
70
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
71 double wMax = funcInst.value(qMax[0]);
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
72
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
73 if (Double.isNaN(wMax) || wMax < 0d) {
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
74 log.debug("function '" + function.getName() +
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
75 "' eval failed at " + wMax);
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
76 return;
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
77 }
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
78
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
79 Function inverse = function.getInverse();
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
80
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
81 de.intevation.flys.artifacts.math.Function invInst =
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
82 inverse.instantiate(coeffs);
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
83
3641
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
84 double wMin = minW(invInst, wMax, qMax[0]);
3220
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
85
3641
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
86 double wMinCM = wMin * 100d;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
87 double wMaxCM = wMax * 100d;
3220
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
88
3641
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
89 int wRow = ((int)wMinCM / 10) * 10;
3220
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
90
3641
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
91 if ((wMinCM - (int)wMinCM) > 0d) {
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
92 wMinCM = (int)wMinCM + 1d;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
93 }
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
94
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
95 double w = wMinCM / 100.0;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
96
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
97 int wcm = ((int)wMinCM) % 10;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
98
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
99 if (log.isDebugEnabled()) {
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
100 log.debug("wMinCM: " + wMinCM);
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
101 log.debug("wMaxCM: " + wMaxCM);
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
102 log.debug("wcm: " + wcm);
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
103 }
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
104
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
105 out.printf(Locale.US, "%8d", wRow);
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
106
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
107 if (wcm > 0) {
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
108 int rest = 10 - wcm;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
109 while (rest-- > 0) {
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
110 out.print(ATWriter.EMPTY);
3220
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
111 }
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
112 }
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
113
3641
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
114 for (;;) {
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
115 while (wcm++ < 10) {
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
116 if (w > wMax) {
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
117 break;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
118 }
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
119 double q = invInst.value(w);
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
120 if (Double.isNaN(w)) {
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
121 out.print(ATWriter.EMPTY);
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
122 }
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
123 else {
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
124 ATWriter.printQ(out, q);
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
125 }
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
126 w += 0.01d;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
127 }
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
128 out.println();
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
129 if (w > wMax) {
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
130 break;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
131 }
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
132 out.printf(Locale.US, "%8d", wRow += 10);
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
133 wcm = 0;
3220
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
134 }
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
135
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
136 out.flush();
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
137 }
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
138
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
139 protected void printHeader(
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
140 PrintWriter out,
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
141 CallMeta meta,
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
142 String river,
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
143 double km
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
144 ) {
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
145 out.println(Resources.format(
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
146 meta,
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
147 I18N_HEADER_KEY,
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
148 I18N_HEADER_DEFAULT,
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
149 river, km));
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
150 }
3641
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
151
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
152 private static double minW(
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
153 de.intevation.flys.artifacts.math.Function function,
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
154 double maxW,
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
155 double maxQ
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
156 ) {
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
157 double stepWidth = 10d;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
158
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
159 double lastW = maxW;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
160 double lastQ = maxQ;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
161
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
162 for (int i = 0; i < MAX_ITERATIONS; ++i) {
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
163 double w = lastW - stepWidth;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
164 double q = function.value(w);
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
165
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
166 if (Double.isNaN(q) || q > lastQ || q < 0d) {
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
167 if (stepWidth < EPSILON) {
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
168 break;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
169 }
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
170 stepWidth *= 0.5d;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
171 continue;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
172 }
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
173
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
174 lastW = w;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
175 lastQ = q;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
176 }
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
177
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
178 return lastW;
1dc904370a64 Fixed issue687: Rewrote AT export in FixA
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3220
diff changeset
179 }
3220
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
180 }
0c8a6145098b FixA: Added AT writer for fitted functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
181 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org