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 }

http://dive4elements.wald.intevation.org