Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/TkhCalculation.java @ 9105:ae3565385e6a
Some finetuning an Tkh calculation, preparation for wsp calculation with bed height stations only
author | gernotbelger |
---|---|
date | Tue, 29 May 2018 11:36:42 +0200 |
parents | 5488166d32ee |
children | 0a19a79663dd |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/TkhCalculation.java Tue May 29 11:35:44 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/TkhCalculation.java Tue May 29 11:36:42 2018 +0200 @@ -18,6 +18,7 @@ import java.util.Set; import java.util.TreeSet; +import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.math.DoubleRange; import org.apache.commons.lang.math.NumberRange; import org.dive4elements.artifacts.CallContext; @@ -67,12 +68,13 @@ /* find relevant bed-heights */ final List<BedHeight> defaultBedHeights = new DefaultBedHeights(river).getBedHeights(problems); final Collection<BedHeightsFinder> bedHeights = BedHeightsFinder.createTkhBedHeights(problems, calcRange, defaultBedHeights); + final double[] stations = extractStations(bedHeights); /* misuse winfo-artifact to calculate waterlevels in the same way */ final WINFOArtifact winfo = new WinfoArtifactWrapper(sinfo); /* calculate waterlevels */ - final WQKms[] kms = calculateWaterlevels(winfo, problems); + final WQKms[] kms = calculateWaterlevels(winfo, stations, problems); final RiverInfoProvider infoProvider = RiverInfoProvider.forRange(this.context, river, calcRange); @@ -97,6 +99,16 @@ return new CalculationResult(results, problems); } + private double[] extractStations(final Collection<BedHeightsFinder> bedHeights) { + + final Set<Double> allStations = new TreeSet<>(); + + for (final BedHeightsFinder bedHeight : bedHeights) + allStations.addAll(bedHeight.getStations()); + + return ArrayUtils.toPrimitive(allStations.toArray(new Double[allStations.size()])); + } + /** * Calculation steps are simply the union of all stations of all involved bed-height datasets */ @@ -112,7 +124,10 @@ return allStations; } - private WQKms[] calculateWaterlevels(final WINFOArtifact winfo, final Calculation problems) { + private WQKms[] calculateWaterlevels(final WINFOArtifact winfo, final double[] stations, final Calculation problems) { + + // FIXME: we take kms from step, but instead we would like to take kms from bedheights + // FIXME: this will definitely break the serialization of the winfo artifact final CalculationResult waterlevelData = winfo.getWaterlevelData(this.context);