Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstCalculation.java @ 9528:55c187a0a31e
Fixed: consistent gauge assignment with downstream gauge as reference gauge for calc range starting at a gauge range limit
author | mschaefer |
---|---|
date | Tue, 02 Oct 2018 16:39:51 +0200 |
parents | 3f230fe8eb19 |
children | 3fa8551c3d1b |
comparison
equal
deleted
inserted
replaced
9527:7c8d62867876 | 9528:55c187a0a31e |
---|---|
33 import org.dive4elements.river.artifacts.sinfo.tkhstate.BedHeightsFinder; | 33 import org.dive4elements.river.artifacts.sinfo.tkhstate.BedHeightsFinder; |
34 import org.dive4elements.river.artifacts.sinfo.tkhstate.WinfoArtifactWrapper; | 34 import org.dive4elements.river.artifacts.sinfo.tkhstate.WinfoArtifactWrapper; |
35 import org.dive4elements.river.artifacts.sinfo.util.CalculationUtils; | 35 import org.dive4elements.river.artifacts.sinfo.util.CalculationUtils; |
36 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; | 36 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; |
37 import org.dive4elements.river.artifacts.sinfo.util.WstInfo; | 37 import org.dive4elements.river.artifacts.sinfo.util.WstInfo; |
38 import org.dive4elements.river.artifacts.states.WaterlevelData; | |
38 import org.dive4elements.river.exports.WaterlevelDescriptionBuilder; | 39 import org.dive4elements.river.exports.WaterlevelDescriptionBuilder; |
39 import org.dive4elements.river.model.BedHeightValueType; | 40 import org.dive4elements.river.model.BedHeightValueType; |
40 import org.dive4elements.river.model.River; | 41 import org.dive4elements.river.model.River; |
41 import org.dive4elements.river.utils.DoubleUtil; | 42 import org.dive4elements.river.utils.DoubleUtil; |
42 | 43 |
91 final Calculation problems = new Calculation(); | 92 final Calculation problems = new Calculation(); |
92 | 93 |
93 // Calculate the wspl for the selected river range as in fixa awspl | 94 // Calculate the wspl for the selected river range as in fixa awspl |
94 bunduartifact.addStringData("wq_isq", "true"); | 95 bunduartifact.addStringData("wq_isq", "true"); |
95 final WinfoArtifactWrapper winfo = new WinfoArtifactWrapper(bunduartifact); | 96 final WinfoArtifactWrapper winfo = new WinfoArtifactWrapper(bunduartifact); |
96 final RiverInfoProvider riverInfoProvider = RiverInfoProvider.forRange(this.context, river, access.getRange(), true); | 97 final RiverInfoProvider riverInfoProvider = RiverInfoProvider.forRange(this.context, river, access.getRange()); |
97 final FixRealizingResult fixResult = calculateWspl(bunduartifact, problems); | 98 final FixRealizingResult fixResult = calculateWspl(bunduartifact, problems); |
98 if (fixResult == null) | 99 if (fixResult == null) |
99 return new CalculationResult(results, problems); | 100 return new CalculationResult(results, problems); |
100 | 101 |
101 final WQKms wqkms = fixResult.getWQKms()[0]; | 102 final WQKms wqkms = fixResult.getWQKms()[0]; |
102 final WstInfo wstInfo = new WstInfo(wqkms.getName(), 0, riverInfoProvider.getReferenceGauge(), true); | 103 // We have no wst year as the wst is created by a calculation; we do not need it though |
104 final int wspYear = -1; | |
105 // Remark: showAllGauges true for Fixierungsanalyse, false for WInfo, so true here as well | |
106 final boolean showAllGauges = true; | |
107 final WaterlevelData waterlevel = new WaterlevelData(wqkms, wspYear, showAllGauges, true); | |
108 final RiverInfoProvider riverInfoProvider2 = riverInfoProvider.forWaterlevel(waterlevel); | |
109 final WstInfo wstInfo = new WstInfo(wqkms.getName(), 0, riverInfoProvider2.getReferenceGauge(), true); | |
103 | 110 |
104 // Fetch the bed heights of the selected sounding | 111 // Fetch the bed heights of the selected sounding |
105 final Integer bedHeightId = access.getBedHeightID(); | 112 final Integer bedHeightId = access.getBedHeightID(); |
106 final BedHeightsFinder bedHeightsFinder = (bedHeightId != null) ? BedHeightsFinder.forId(problems, bedHeightId, access.getRange()) | 113 final BedHeightsFinder bedHeightsFinder = (bedHeightId != null) ? BedHeightsFinder.forId(problems, bedHeightId, access.getRange()) |
107 : BedHeightsFinder.NullFinder(); | 114 : BedHeightsFinder.NullFinder(); |
111 if (channelFinder == null) | 118 if (channelFinder == null) |
112 return new CalculationResult(results, problems); | 119 return new CalculationResult(results, problems); |
113 | 120 |
114 // Compute the result rows | 121 // Compute the result rows |
115 for (int i = 0; i <= wqkms.size() - 1; i++) { | 122 for (int i = 0; i <= wqkms.size() - 1; i++) { |
116 this.rows.add(createRow(wqkms.getKm(i), wqkms.getW(i), wqkms.getQ(i), bedHeightsFinder, channelFinder, riverInfoProvider, wstInfo)); | 123 this.rows.add(createRow(wqkms.getKm(i), wqkms.getW(i), wqkms.getQ(i), bedHeightsFinder, channelFinder, riverInfoProvider2, wstInfo)); |
117 } | 124 } |
118 | 125 |
119 // Compute the missing volumes | 126 // Compute the missing volumes |
120 if (access.isCalculateMissingVolume()) { | 127 if (access.isCalculateMissingVolume()) { |
121 if ((bedHeightsFinder == null) || bedHeightsFinder.isNull()) | 128 if ((bedHeightsFinder == null) || bedHeightsFinder.isNull()) |