Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQKms.java @ 686:3dc61e00385e facets-slt
Merged with trunk and introduced hashing of computed values.
flys-artifacts/branches/facets-slt@2126 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 15 Jun 2011 15:28:54 +0000 |
parents | 5606ba4139e0 |
children | eab5e5089d77 |
comparison
equal
deleted
inserted
replaced
667:434146596838 | 686:3dc61e00385e |
---|---|
51 this.w = new TDoubleArrayList(capacity); | 51 this.w = new TDoubleArrayList(capacity); |
52 this.q = new TDoubleArrayList(capacity); | 52 this.q = new TDoubleArrayList(capacity); |
53 this.kms = new TDoubleArrayList(capacity); | 53 this.kms = new TDoubleArrayList(capacity); |
54 } | 54 } |
55 | 55 |
56 public static void removeNaNs(TDoubleArrayList [] arrays) { | |
57 | |
58 int dest = 0; | |
59 | |
60 int A = arrays.length; | |
61 int N = arrays[0].size(); | |
62 | |
63 OUTER: for (int i = 0; i < N; ++i) { | |
64 for (int j = 0; j < A; ++j) { | |
65 TDoubleArrayList a = arrays[j]; | |
66 double v = a.getQuick(i); | |
67 if (Double.isNaN(v)) { | |
68 continue OUTER; | |
69 } | |
70 a.setQuick(dest, v); | |
71 } | |
72 ++dest; | |
73 } | |
74 | |
75 if (dest < N) { | |
76 for (int i = 0; i < A; ++i) { | |
77 arrays[i].remove(dest, N-dest); | |
78 } | |
79 } | |
80 } | |
81 | |
82 public void removeNaNs() { | |
83 removeNaNs(new TDoubleArrayList [] { w, q, kms }); | |
84 } | |
85 | |
56 | 86 |
57 public WQKms(double[] kms, double[] qs, double[] ws) { | 87 public WQKms(double[] kms, double[] qs, double[] ws) { |
58 this(kms, qs, ws, ""); | 88 this(kms, qs, ws, ""); |
59 } | 89 } |
60 | 90 |
79 this.w.add(w); | 109 this.w.add(w); |
80 this.q.add(q); | 110 this.q.add(q); |
81 this.kms.add(kms); | 111 this.kms.add(kms); |
82 } | 112 } |
83 | 113 |
84 | |
85 public void add(double[] w, double[] q, double[] kms) { | |
86 this.w.add(w); | |
87 this.q.add(q); | |
88 this.kms.add(kms); | |
89 } | |
90 | |
91 | |
92 /** | 114 /** |
93 * Returns the number of triples stored in this data pool. | 115 * Returns the number of triples stored in this data pool. |
94 * | 116 * |
95 * @return the number of triples stored in this data pool. | 117 * @return the number of triples stored in this data pool. |
96 */ | 118 */ |
105 * @param dst destination array | 127 * @param dst destination array |
106 * | 128 * |
107 * @return a triple of [W, Q, Kms] in dst. | 129 * @return a triple of [W, Q, Kms] in dst. |
108 */ | 130 */ |
109 public double[] get(int idx, double [] dst) { | 131 public double[] get(int idx, double [] dst) { |
110 dst[0] = w .get(idx); | 132 dst[0] = w .getQuick(idx); |
111 dst[1] = q .get(idx); | 133 dst[1] = q .getQuick(idx); |
112 dst[2] = kms.get(idx); | 134 dst[2] = kms.getQuick(idx); |
113 return dst; | 135 return dst; |
114 } | 136 } |
115 | 137 |
116 | 138 |
117 public double getKms(int idx) { | 139 public double getKms(int idx) { |
118 return kms.get(idx); | 140 return kms.getQuick(idx); |
119 } | 141 } |
120 | 142 |
121 | 143 |
122 public double[] getKms() { | 144 public double[] getKms() { |
123 return kms.toNativeArray(); | 145 return kms.toNativeArray(); |
140 * @return a string that consist of the first and last kilometer. | 162 * @return a string that consist of the first and last kilometer. |
141 */ | 163 */ |
142 public String toString() { | 164 public String toString() { |
143 double from = getKms(0); | 165 double from = getKms(0); |
144 double to = getKms(size()-1); | 166 double to = getKms(size()-1); |
145 return Double.toString(from) + " - " + Double.toString(to); | 167 return from + " - " + to; |
146 } | |
147 | |
148 | |
149 /** | |
150 * Merges the WQKms objects of an incoming 2dim array (table) where the | |
151 * objects of a column belong together. | |
152 * | |
153 * @param toMerge The objects that need to be merged. | |
154 * | |
155 * @return an array of merged WQKms objects. | |
156 */ | |
157 public static WQKms[] merge(WQKms[][] toMerge) { | |
158 int num = toMerge[0].length; | |
159 | |
160 // TODO IS THE LENGTH CORRECT? | |
161 WQKms[] merged = new WQKms[num]; | |
162 for (int i = 0; i < num; i++) { | |
163 merged[i] = new WQKms(); | |
164 } | |
165 | |
166 for (int i = 0; i < toMerge.length; i++) { | |
167 WQKms[] tmp = toMerge[i]; | |
168 | |
169 for (int j = 0; j < num; j++) { | |
170 WQKms toAdd = tmp[j]; | |
171 merged[j].add(toAdd.getWs(), toAdd.getQs(), toAdd.getKms()); | |
172 } | |
173 } | |
174 | |
175 return merged; | |
176 } | 168 } |
177 } | 169 } |
178 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 170 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |