Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/states/WQSelect.java @ 9130:f61bc0c63188
WQSelect can now handle distance-only data
author | gernotbelger |
---|---|
date | Wed, 06 Jun 2018 14:16:28 +0200 |
parents | e3519c3e7a0a |
children | 2323d005f9a5 |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/WQSelect.java Wed Jun 06 14:15:58 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/WQSelect.java Wed Jun 06 14:16:28 2018 +0200 @@ -32,6 +32,7 @@ import org.dive4elements.river.artifacts.D4EArtifact; import org.dive4elements.river.artifacts.access.RangeAccess; +import org.dive4elements.river.artifacts.access.RangeAccess.KM_MODE; import org.dive4elements.river.artifacts.access.ComputationRangeAccess; import org.dive4elements.river.artifacts.model.WstFactory; import org.dive4elements.river.artifacts.model.WstValueTable; @@ -432,16 +433,10 @@ double[] minmaxW = null; if(valueTable != null) { - double[] km = null; - if(access.isRange()) { - km = access.getFromToStep(); - // Use the start km to determine the min max values. - minmaxW = valueTable.getMinMaxW(km[0]); - } - else { - km = access.getKms(); - minmaxW = valueTable.getMinMaxW(km[0]); - } + + final double startKm = access.getStartKm(); + // Use the start km to determine the min max values. + minmaxW = valueTable.getMinMaxW(startKm); } return minmaxW != null ? minmaxW @@ -490,20 +485,28 @@ protected double[] determineMinMaxQ(D4EArtifact winfo) { log.debug("WQSelect.determineMinMaxQ"); - WstValueTable valueTable = WstValueTableFactory.getTable( - RiverUtils.getRiver(winfo)); + final WstValueTable valueTable = WstValueTableFactory.getTable(RiverUtils.getRiver(winfo)); - ComputationRangeAccess access = new ComputationRangeAccess(winfo); + final ComputationRangeAccess access = new ComputationRangeAccess(winfo); double[] minmaxQ = null; if(valueTable != null) { - double[] km = null; - if(access.isRange()) { - km = new ComputationRangeAccess(winfo).getFromToStep(); + + final KM_MODE mode = access.getKmRangeMode(); + switch (mode) { + case RANGE: { + final double[] km = access.getFromToStep(); minmaxQ = valueTable.getMinMaxQ(km[0], km[1], km[2]); + break; } - else { - km = access.getKms(); + + case DISTANCE_ONLY: { + minmaxQ = valueTable.getMinMaxQ(access.getFrom(), access.getTo(), 0.1); + break; + } + + default: { + final double[] km = access.getKms(); minmaxQ = valueTable.getMinMaxQ(km[0]); for (int i = 1; i < km.length; i++) { double[] tmp = valueTable.getMinMaxQ(km[i]); @@ -514,6 +517,8 @@ minmaxQ[1] = tmp[1]; } } + break; + } } } return minmaxQ != null