Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedHeight.java @ 3886:633fbb61a0cc
Split bed heights into bed height epochs and single bed heights.
flys-artifacts/trunk@5536 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Thu, 20 Sep 2012 09:31:18 +0000 |
parents | ebfce31c7eec |
children | bce2dd4310a6 |
line wrap: on
line source
package de.intevation.flys.artifacts.model.minfo; import org.apache.log4j.Logger; import gnu.trove.TDoubleArrayList; import de.intevation.flys.artifacts.model.NamedObjectImpl; public class BedHeight extends NamedObjectImpl { private static Logger log = Logger.getLogger(BedHeight.class); protected TDoubleArrayList heights; protected TDoubleArrayList station; protected TDoubleArrayList data_gap; protected TDoubleArrayList morphWidth; public BedHeight() { heights = new TDoubleArrayList(); station = new TDoubleArrayList(); data_gap = new TDoubleArrayList(); morphWidth = new TDoubleArrayList(); } public BedHeight(String name) { super(name); heights = new TDoubleArrayList(); station = new TDoubleArrayList(); data_gap = new TDoubleArrayList(); morphWidth = new TDoubleArrayList(); } public BedHeight(int capacity) { this(capacity, ""); } public BedHeight(int capacity, String name) { super(name); heights = new TDoubleArrayList(capacity); station = new TDoubleArrayList(capacity); data_gap = new TDoubleArrayList(capacity); morphWidth = new TDoubleArrayList(); } public void add(double value, double station, double gap, double width) { this.heights.add(value); this.station.add(station); this.data_gap.add(gap); this.morphWidth.add(width); } public int size() { return heights.size(); } public double getHeight(int idx) { return heights.getQuick(idx); } public double [] getHeights() { return heights.toNativeArray(); } public double [] get(int idx) { return get(idx, new double [3]); } public double [] get(int idx, double [] dst) { dst[0] = heights.getQuick(idx); dst[1] = station.getQuick(idx); dst[2] = data_gap.getQuick(idx); dst[3] = morphWidth.getQuick(idx); return dst; } public double getMorphWidth(int idx) { return this.morphWidth.get(idx); } public double getDataGap(int idx) { return this.data_gap.get(idx); } public double minHeights() { return heights.min(); } public TDoubleArrayList getStations() { return this.station; } public double getHeight(double station) { if (this.station.indexOf(station) >= 0) { return this.heights.get(this.station.indexOf(station)); } return Double.NaN; } public static void removeNaNs(TDoubleArrayList [] arrays) { int dest = 0; int A = arrays.length; int N = arrays[0].size(); OUTER: for (int i = 0; i < N; ++i) { for (int j = 0; j < A; ++j) { TDoubleArrayList a = arrays[j]; double v = a.getQuick(i); if (Double.isNaN(v)) { continue OUTER; } a.setQuick(dest, v); } ++dest; } if (dest < N) { for (int i = 0; i < A; ++i) { arrays[i].remove(dest, N-dest); } } } public void removeNaNs() { removeNaNs(new TDoubleArrayList [] { heights }); } }