Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculator.java @ 9252:c2a0028bfa9f
Work on S-Info flood duration curve chart
author | mschaefer |
---|---|
date | Thu, 12 Jul 2018 18:09:48 +0200 |
parents | b515ed950d39 |
children | ef7b65576d4b |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculator.java Thu Jul 12 18:02:58 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculator.java Thu Jul 12 18:09:48 2018 +0200 @@ -25,6 +25,7 @@ import org.dive4elements.river.artifacts.model.Calculation; import org.dive4elements.river.artifacts.model.Calculation.Problem; import org.dive4elements.river.artifacts.model.CalculationResult; +import org.dive4elements.river.artifacts.model.WQDay; import org.dive4elements.river.artifacts.model.WQKms; import org.dive4elements.river.artifacts.sinfo.common.GaugeDurationValuesFinder; import org.dive4elements.river.artifacts.sinfo.common.RiverInfoProvider; @@ -60,8 +61,8 @@ /** * Calculate the infrastructures flood duration result rows */ - public FloodDurationCalculationResult execute(final Calculation problems, final String label, final DoubleRange calcRange, - final RiversideChoiceKey riverside, final WINFOArtifact winfo) { + public void execute(final Calculation problems, final String label, final DoubleRange calcRange, + final RiversideChoiceKey riverside, final WINFOArtifact winfo, final FloodDurationCalculationResults results) { // Find all gauges of the calc range, and create the duration finders final Map<Gauge, GaugeDurationValuesFinder> durFinders = new HashMap<>(); @@ -113,8 +114,29 @@ this.rows.add(row2); } } + results.addResult(new FloodDurationCalculationResult(label, mainValueLabels, this.rows), problems); + calcWQDays(problems, stationsSorted[0], AttributeKey.LEFT, winfo, results); + } - return new FloodDurationCalculationResult(label, mainValueLabels, this.rows); + public void calcWQDays(final Calculation problems, final double station, final AttributeKey riverside, final WINFOArtifact winfo, + final FloodDurationCalculationResults results) { + + winfo.addStringData("ld_locations", Double.toString(station)); + final CalculationResult res = winfo.getDurationCurveData(); + final WQDay underflow = (WQDay) res.getData(); + // Transform underflow days into overflow days and re-sort + final int[] days = new int[underflow.getWs().length]; + final double[] ws = new double[days.length]; + final double[] qs = new double[days.length]; + for (int i = 0, j = days.length - 1; i <= days.length - 1; i++, j--) { + days[j] = 365 - underflow.getDay(i); + ws[j] = underflow.getW(i); + qs[j] = underflow.getQ(i); + } + res.setData(new WQDay(days, ws, qs)); + // TODO Infrastrukturhoehe + // TODO WSPL/Hauptwerte + results.setDurationCurve(res); } /**