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())

http://dive4elements.wald.intevation.org