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 :

http://dive4elements.wald.intevation.org