Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedHeight.java @ 3614:68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
flys-artifacts/trunk@5276 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Tue, 28 Aug 2012 11:45:23 +0000 |
parents | |
children | ebfce31c7eec |
comparison
equal
deleted
inserted
replaced
3613:dd6e25980c91 | 3614:68beaa827751 |
---|---|
1 package de.intevation.flys.artifacts.model.minfo; | |
2 | |
3 import org.apache.log4j.Logger; | |
4 | |
5 import gnu.trove.TDoubleArrayList; | |
6 import de.intevation.flys.artifacts.model.NamedObjectImpl; | |
7 | |
8 public class BedHeight | |
9 extends NamedObjectImpl | |
10 { | |
11 private static Logger log = Logger.getLogger(BedHeight.class); | |
12 | |
13 protected TDoubleArrayList heights; | |
14 protected TDoubleArrayList station; | |
15 protected TDoubleArrayList data_gap; | |
16 | |
17 public BedHeight() { | |
18 heights = new TDoubleArrayList(); | |
19 station = new TDoubleArrayList(); | |
20 data_gap = new TDoubleArrayList(); | |
21 } | |
22 | |
23 public BedHeight(String name) { | |
24 super(name); | |
25 heights = new TDoubleArrayList(); | |
26 station = new TDoubleArrayList(); | |
27 data_gap = new TDoubleArrayList(); | |
28 } | |
29 | |
30 public BedHeight(int capacity) { | |
31 this(capacity, ""); | |
32 } | |
33 | |
34 public BedHeight(int capacity, String name) { | |
35 super(name); | |
36 heights = new TDoubleArrayList(capacity); | |
37 station = new TDoubleArrayList(capacity); | |
38 data_gap = new TDoubleArrayList(capacity); | |
39 } | |
40 | |
41 public void add(double value, double station, double gap) { | |
42 this.heights.add(value); | |
43 this.station.add(station); | |
44 this.data_gap.add(gap); | |
45 } | |
46 | |
47 public int size() { | |
48 return heights.size(); | |
49 } | |
50 | |
51 public double getHeight(int idx) { | |
52 return heights.getQuick(idx); | |
53 } | |
54 | |
55 public double [] getHeights() { | |
56 return heights.toNativeArray(); | |
57 } | |
58 | |
59 public double [] get(int idx) { | |
60 return get(idx, new double [3]); | |
61 } | |
62 | |
63 public double [] get(int idx, double [] dst) { | |
64 dst[0] = heights.getQuick(idx); | |
65 dst[1] = station.getQuick(idx); | |
66 dst[2] = data_gap.getQuick(idx); | |
67 return dst; | |
68 } | |
69 | |
70 public double minHeights() { | |
71 return heights.min(); | |
72 } | |
73 | |
74 public static void removeNaNs(TDoubleArrayList [] arrays) { | |
75 | |
76 int dest = 0; | |
77 | |
78 int A = arrays.length; | |
79 int N = arrays[0].size(); | |
80 | |
81 OUTER: for (int i = 0; i < N; ++i) { | |
82 for (int j = 0; j < A; ++j) { | |
83 TDoubleArrayList a = arrays[j]; | |
84 double v = a.getQuick(i); | |
85 if (Double.isNaN(v)) { | |
86 continue OUTER; | |
87 } | |
88 a.setQuick(dest, v); | |
89 } | |
90 ++dest; | |
91 } | |
92 | |
93 if (dest < N) { | |
94 for (int i = 0; i < A; ++i) { | |
95 arrays[i].remove(dest, N-dest); | |
96 } | |
97 } | |
98 } | |
99 | |
100 public void removeNaNs() { | |
101 removeNaNs(new TDoubleArrayList [] { heights }); | |
102 } | |
103 } |