comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculation.java @ 9266:465347d12990

Station specific calculation of flood duration curve and infrastructure annotations
author mschaefer
date Wed, 18 Jul 2018 12:20:01 +0200
parents c2a0028bfa9f
children 83ebeb620b5a
comparison
equal deleted inserted replaced
9265:e5367900dd6d 9266:465347d12990
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the 7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
8 * documentation coming with Dive4Elements River for details. 8 * documentation coming with Dive4Elements River for details.
9 */ 9 */
10 package org.dive4elements.river.artifacts.sinfo.flood_duration; 10 package org.dive4elements.river.artifacts.sinfo.flood_duration;
11 11
12 import java.util.List;
13
12 import org.apache.commons.lang.math.DoubleRange; 14 import org.apache.commons.lang.math.DoubleRange;
13 import org.dive4elements.artifacts.CallContext; 15 import org.dive4elements.artifacts.CallContext;
14 import org.dive4elements.river.artifacts.WINFOArtifact; 16 import org.dive4elements.river.artifacts.WINFOArtifact;
15 import org.dive4elements.river.artifacts.model.Calculation; 17 import org.dive4elements.river.artifacts.model.Calculation;
16 import org.dive4elements.river.artifacts.model.CalculationResult; 18 import org.dive4elements.river.artifacts.model.CalculationResult;
19 import org.dive4elements.river.artifacts.model.WQDay;
17 import org.dive4elements.river.artifacts.resources.Resources; 20 import org.dive4elements.river.artifacts.resources.Resources;
18 import org.dive4elements.river.artifacts.sinfo.SINFOArtifact; 21 import org.dive4elements.river.artifacts.sinfo.SINFOArtifact;
19 import org.dive4elements.river.artifacts.sinfo.common.RiverInfoProvider; 22 import org.dive4elements.river.artifacts.sinfo.common.RiverInfoProvider;
20 import org.dive4elements.river.artifacts.sinfo.flood_duration.RiversideRadioChoice.RiversideChoiceKey; 23 import org.dive4elements.river.artifacts.sinfo.flood_duration.RiversideRadioChoice.RiversideChoiceKey;
21 import org.dive4elements.river.artifacts.sinfo.tkhstate.WinfoArtifactWrapper; 24 import org.dive4elements.river.artifacts.sinfo.tkhstate.WinfoArtifactWrapper;
22 import org.dive4elements.river.artifacts.sinfo.util.CalculationUtils; 25 import org.dive4elements.river.artifacts.sinfo.util.CalculationUtils;
23 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; 26 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
27 import org.dive4elements.river.jfree.StickyAxisAnnotation;
24 import org.dive4elements.river.model.River; 28 import org.dive4elements.river.model.River;
25 29
26 /** 30 /**
27 * Calculation of the flood durations of the infrastructures of the km range of a river 31 * Calculation of the flood durations of the infrastructures of the km range of a river
28 * 32 *
72 final RiversideChoiceKey riverside, final Calculation problems, final WINFOArtifact winfo, final FloodDurationCalculationResults results) { 76 final RiversideChoiceKey riverside, final Calculation problems, final WINFOArtifact winfo, final FloodDurationCalculationResults results) {
73 77
74 final FloodDurationCalculator calculator = new FloodDurationCalculator(this.context, riverInfoProvider); 78 final FloodDurationCalculator calculator = new FloodDurationCalculator(this.context, riverInfoProvider);
75 calculator.execute(problems, label, calcRange, riverside, winfo, results); 79 calculator.execute(problems, label, calcRange, riverside, winfo, results);
76 } 80 }
81
82 /**
83 * Calculates the flood duration curve of a station
84 */
85 public WQDay calcStationCurve(final double station, final SINFOArtifact sinfo) {
86
87 /* access input data */
88 final FloodDurationAccess access = new FloodDurationAccess(sinfo);
89 final River river = access.getRiver();
90 final DoubleRange calcRange = access.getRange();
91 final RiverInfoProvider infoProvider = RiverInfoProvider.forRange(this.context, river, calcRange);
92
93 final Calculation problems = new Calculation();
94
95 // Calculate the selected main values, if any
96 /* misuse winfo-artifact to calculate waterlevels in the same way */
97 final WINFOArtifact winfo = new WinfoArtifactWrapper(sinfo);
98 winfo.addStringData("ld_locations", Double.toString(station));
99
100 final FloodDurationCalculator calculator = new FloodDurationCalculator(this.context, infoProvider);
101 if (!Double.isNaN(station))
102 return calculator.calcWQDays(problems, station, winfo);
103 else
104 return calculator.calcWQDays(problems, calcRange.getMinimumFloat(), winfo);
105 }
106
107 /**
108 * Calculates the annotations of the infrastructure(s) of a station for a flood duration calculation
109 */
110 public List<StickyAxisAnnotation> calcInfrastructureAnnotations(final double station, final FloodDurationCalculationResult result) {
111
112 final Calculation problems = new Calculation();
113
114 final FloodDurationCalculator calculator = new FloodDurationCalculator(this.context, null);
115 return calculator.calcInfrastructureAnnotations(problems, station, result);
116 }
77 } 117 }

http://dive4elements.wald.intevation.org