Mercurial > dive4elements > river
changeset 6302:d5af7b17efc2
Add conversion function that prepares a WQ table for export at gauge
This substracts the datum of the gauge and converts the W values
to cm. Returns a copy if the WQ table is modified.
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Wed, 12 Jun 2013 16:01:46 +0200 |
parents | 20a32dbdbb59 |
children | 5fda7065b74a |
files | artifacts/src/main/java/org/dive4elements/river/artifacts/model/WQ.java |
diffstat | 1 files changed, 23 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/WQ.java Wed Jun 12 10:54:27 2013 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/WQ.java Wed Jun 12 16:01:46 2013 +0200 @@ -12,6 +12,8 @@ import gnu.trove.TDoubleArrayList; +import java.math.BigDecimal; + import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -108,5 +110,26 @@ public void removeNaNs() { DoubleUtil.removeNaNs(new TDoubleArrayList [] { ws, qs }); } + + /** Returns either a modified copy or the same Object with fixed W values. + * If a conversion takes place converted is set to true + */ + public static WQ getFixedWQforExportAtGauge(WQ wq, BigDecimal datum) { + if (wq.getReferenceSystem() == wq.CENTIMETER_AT_GAUGE) { + // Do nothing + return wq; + } + // If we convert we work on a copy to avoid side effects. + WQ ret = new WQ(wq.size(), wq.getName()); + + // When we convert and have a datum we have a calculated + // result at a gauge so we must subtract the datum. + double subtractDatum = datum == null ? 0 : datum.doubleValue(); + for (int i=0; i < wq.size(); i++) { + ret.add((wq.get(i)[0] - subtractDatum)* 100, wq.get(i)[1]); + } + log.debug("Converted W values to centimeter and substracted: " + subtractDatum); + return ret; + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :