comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/GaugeDischargeValuesFinder.java @ 9533:d9fda7af24ca

No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
author mschaefer
date Thu, 04 Oct 2018 12:48:57 +0200
parents b4402594213b
children f2473dc34535
comparison
equal deleted inserted replaced
9532:8e6b9cb9486a 9533:d9fda7af24ca
15 import org.apache.commons.math.analysis.interpolation.LinearInterpolator; 15 import org.apache.commons.math.analysis.interpolation.LinearInterpolator;
16 import org.dive4elements.river.artifacts.model.Calculation; 16 import org.dive4elements.river.artifacts.model.Calculation;
17 import org.dive4elements.river.model.DischargeTable; 17 import org.dive4elements.river.model.DischargeTable;
18 import org.dive4elements.river.model.DischargeTableValue; 18 import org.dive4elements.river.model.DischargeTableValue;
19 import org.dive4elements.river.model.Gauge; 19 import org.dive4elements.river.model.Gauge;
20 import org.dive4elements.river.model.River;
20 21
21 import gnu.trove.TDoubleArrayList; 22 import gnu.trove.TDoubleArrayList;
22 23
23 /** 24 /**
24 * Loading and search/interpolation of a gauge's discharge table (.at) 25 * Loading and search/interpolation of a gauge's discharge table (.at)
76 * Loads the the main discharge table of a gauge ({gauge}.at) 77 * Loads the the main discharge table of a gauge ({gauge}.at)
77 * 78 *
78 * @return The discharge table values finder of the gauge, or null 79 * @return The discharge table values finder of the gauge, or null
79 */ 80 */
80 public static GaugeDischargeValuesFinder loadValues(final Gauge gauge, final Calculation problems) { 81 public static GaugeDischargeValuesFinder loadValues(final Gauge gauge, final Calculation problems) {
81 final DischargeTable table = gauge.fetchMasterDischargeTable(); 82 return loadValues(gauge, gauge.getName(), problems);
83 }
84
85 /**
86 * Loads the the main discharge table of a river's gauge ({gauge}.at)
87 *
88 * @return The discharge table values finder of the gauge, or null
89 */
90 public static GaugeDischargeValuesFinder loadValues(final River river, final String gaugeName, final Calculation problems) {
91 final Gauge gauge = river.determineGaugeByName(gaugeName);
92 return loadValues(gauge, gaugeName, problems);
93 }
94
95 private static GaugeDischargeValuesFinder loadValues(final Gauge gauge, final String gaugeName, final Calculation problems) {
96 final DischargeTable table = (gauge != null) ? gauge.fetchMasterDischargeTable() : null;
82 if ((table == null) || (table.getDischargeTableValues().size() == 0)) { 97 if ((table == null) || (table.getDischargeTableValues().size() == 0)) {
83 problems.addProblem("gauge_discharge_table.missing", gauge.getName()); 98 problems.addProblem("gauge_discharge_table.missing", gaugeName);
84 return null; 99 return null;
85 } 100 }
86 else 101 else
87 return new GaugeDischargeValuesFinder(gauge, problems, table); 102 return new GaugeDischargeValuesFinder(gauge, problems, table);
88 } 103 }
101 * W in cm above gauge datum 116 * W in cm above gauge datum
102 * @return Q, or NegInf for w less than all, or PosInf for w greater then all, or NaN in case of exception 117 * @return Q, or NegInf for w less than all, or PosInf for w greater then all, or NaN in case of exception
103 */ 118 */
104 public double getDischarge(final double w) { 119 public double getDischarge(final double w) {
105 try { 120 try {
106 if (this.wInterpolator == null) 121 if (!this.isValid())
107 return Double.NaN; 122 return Double.NaN;
108 else if (w < this.wRange.getMinimumDouble()) 123 else if (w < this.wRange.getMinimumDouble())
109 return Double.NEGATIVE_INFINITY; 124 return Double.NEGATIVE_INFINITY;
110 else if (w > this.wRange.getMaximumDouble()) 125 else if (w > this.wRange.getMaximumDouble())
111 return Double.POSITIVE_INFINITY; 126 return Double.POSITIVE_INFINITY;

http://dive4elements.wald.intevation.org