Mercurial > dive4elements > river
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 } |