Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculator.java @ 9506:8b7bf26b8782
Predefined artifact for standard vegetation zones.
Some minor adaptions.
author | gernotbelger |
---|---|
date | Fri, 28 Sep 2018 13:44:12 +0200 |
parents | 76c0665888a3 |
children | ee6508687e3f |
comparison
equal
deleted
inserted
replaced
9505:3f230fe8eb19 | 9506:8b7bf26b8782 |
---|---|
8 * documentation coming with Dive4Elements River for details. | 8 * documentation coming with Dive4Elements River for details. |
9 */ | 9 */ |
10 package org.dive4elements.river.artifacts.uinfo.salix; | 10 package org.dive4elements.river.artifacts.uinfo.salix; |
11 | 11 |
12 import java.util.ArrayList; | 12 import java.util.ArrayList; |
13 import java.util.Collection; | |
14 import java.util.List; | 13 import java.util.List; |
15 import java.util.Map.Entry; | 14 import java.util.Map.Entry; |
16 import java.util.NavigableMap; | 15 import java.util.NavigableMap; |
17 | 16 |
18 import org.dive4elements.river.artifacts.WINFOArtifact; | 17 import org.dive4elements.river.artifacts.WINFOArtifact; |
41 private static final String MAIN_VALUE_MHQ = "MHQ"; | 40 private static final String MAIN_VALUE_MHQ = "MHQ"; |
42 | 41 |
43 private static final String MAIN_VALUE_HQ5 = "HQ5"; | 42 private static final String MAIN_VALUE_HQ5 = "HQ5"; |
44 | 43 |
45 private static final double SALIX_DISTANCE = 2.31; | 44 private static final double SALIX_DISTANCE = 2.31; |
46 private final List<ResultRow> rows = new ArrayList<>(); | |
47 | 45 |
48 private final RiverInfoProvider riverInfoProvider; | 46 private final RiverInfoProvider riverInfoProvider; |
49 | |
50 | 47 |
51 public SalixLineCalculator(final RiverInfoProvider riverInfoProvider) { | 48 public SalixLineCalculator(final RiverInfoProvider riverInfoProvider) { |
52 this.riverInfoProvider = riverInfoProvider; | 49 this.riverInfoProvider = riverInfoProvider; |
53 } | 50 } |
54 | |
55 | 51 |
56 /** | 52 /** |
57 * Calculate the salix line result rows | 53 * Calculate the salix line result rows |
58 */ | 54 */ |
59 public void execute(final Calculation problems, final UINFOArtifact uinfo, final NavigableMap<Double, List<Double>> rangeScenarios, | 55 public void execute(final Calculation problems, final UINFOArtifact uinfo, final NavigableMap<Double, List<Double>> rangeScenarios, |
63 final MainWstValuesCalculator mainWstValues = fetchGaugeMainValuePositions2(problems); | 59 final MainWstValuesCalculator mainWstValues = fetchGaugeMainValuePositions2(problems); |
64 | 60 |
65 final WINFOArtifact winfo = new WinfoArtifactWrapper(uinfo); | 61 final WINFOArtifact winfo = new WinfoArtifactWrapper(uinfo); |
66 winfo.addStringData("ld_mode", "distance"); | 62 winfo.addStringData("ld_mode", "distance"); |
67 winfo.addStringData("ld_step", "100"); | 63 winfo.addStringData("ld_step", "100"); |
68 for (final double station : new ComputationRangeAccess(winfo).getKms()) { | 64 |
69 this.rows.add(createRow(mainWstValues, station, rangeScenarios)); | 65 final List<ResultRow> rows = new ArrayList<>(); |
70 } | 66 for (final double station : new ComputationRangeAccess(winfo).getKms()) |
71 if (scenarioType == ScenarioType.REGIONAL) | 67 rows.add(createRow(mainWstValues, station, rangeScenarios)); |
72 results.addResult(new SalixLineCalculationRegionalResult("Salix-regional", scenarioLabels, rangeString, additionalString, this.rows), problems); | 68 |
73 else if (scenarioType == ScenarioType.SUPRAREGIONAL) | 69 final SalixLineCalculationResult result = createResult(scenarioType, scenarioLabels, rangeString, additionalString, rows); |
74 results.addResult(new SalixLineCalculationSupraRegionalResult("Salix-supra", scenarioLabels, rangeString, additionalString, this.rows), problems); | 70 results.addResult(result, problems); |
75 else if (scenarioType == ScenarioType.HISTORICAL) | 71 } |
76 results.addResult(new SalixLineCalculationHistoricalResult("Salix-hist", scenarioLabels, rangeString, additionalString, this.rows), problems); | 72 |
77 else | 73 private SalixLineCalculationResult createResult(final ScenarioType scenarioType, final String[] scenarioLabels, final String rangeString, |
78 results.addResult(new SalixLineCalculationResult("Salix-simple", this.rows), problems); | 74 final String additionalString, final List<ResultRow> rows) { |
75 | |
76 switch (scenarioType) { | |
77 case REGIONAL: | |
78 return new SalixLineCalculationRegionalResult("Salix-regional", scenarioLabels, rangeString, additionalString, rows); | |
79 | |
80 case SUPRAREGIONAL: | |
81 return new SalixLineCalculationSupraRegionalResult("Salix-supra", scenarioLabels, rangeString, additionalString, rows); | |
82 | |
83 case HISTORICAL: | |
84 return new SalixLineCalculationHistoricalResult("Salix-hist", scenarioLabels, rangeString, additionalString, rows); | |
85 default: | |
86 return new SalixLineCalculationResult("Salix-simple", rows); | |
87 } | |
79 } | 88 } |
80 | 89 |
81 private MainWstValuesCalculator fetchGaugeMainValuePositions2(final Calculation problems) { | 90 private MainWstValuesCalculator fetchGaugeMainValuePositions2(final Calculation problems) { |
82 final MainWstValuesCalculator mainWstValues = MainWstValuesCalculator.forRiverInfo(this.riverInfoProvider, MAIN_VALUE_MQ, MAIN_VALUE_MNQ, | 91 final MainWstValuesCalculator mainWstValues = MainWstValuesCalculator.forRiverInfo(this.riverInfoProvider, MAIN_VALUE_MQ, MAIN_VALUE_MNQ, |
83 MAIN_VALUE_MHQ, MAIN_VALUE_HQ5); | 92 MAIN_VALUE_MHQ, MAIN_VALUE_HQ5); |
167 final List<Double> noScen = new ArrayList<>(); | 176 final List<Double> noScen = new ArrayList<>(); |
168 noScen.add(null); | 177 noScen.add(null); |
169 return noScen; | 178 return noScen; |
170 } | 179 } |
171 | 180 |
172 /** | 181 // /** |
173 * Searches the row of a station in a result rows collection | 182 // * Find and return a height (iota, w main value) of a station in a previously calculated result |
174 */ | 183 // */ |
175 private ResultRow searchStation(final double station, final Collection<ResultRow> rows) { | 184 // public double fetchStationHeight(final double station, final AbstractResultType resultType, |
176 for (final ResultRow row : rows) { | 185 // final SalixLineCalculationResult result) { |
177 if (row.getDoubleValue(GeneralResultType.station) > station + 0.0001) | 186 // |
178 return row; | 187 // // Search the station in the previously calculated result rows |
179 } | 188 // final ResultRow stationRow = searchStation(station, result.getRows()); |
180 return null; | 189 // if (stationRow != null) |
181 } | 190 // return stationRow.getDoubleValue(resultType); |
191 // return Double.NaN; | |
192 // } | |
193 | |
194 // /** | |
195 // * Searches the row of a station in a result rows collection | |
196 // */ | |
197 // private ResultRow searchStation(final double station, final Collection<ResultRow> rows) { | |
198 // for (final ResultRow row : rows) { | |
199 // if (row.getDoubleValue(GeneralResultType.station) > station + 0.0001) | |
200 // return row; | |
201 // } | |
202 // return null; | |
203 // } | |
182 } | 204 } |