diff artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculation.java @ 9421:53e26734e4d2

Fixed NaN handling in salix historical scenarion calculation, added problem report
author mschaefer
date Fri, 17 Aug 2018 11:13:31 +0200
parents 6e7094368e97
children 853f2dafc16e
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculation.java	Fri Aug 17 09:41:40 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculation.java	Fri Aug 17 11:13:31 2018 +0200
@@ -166,7 +166,16 @@
         rangeScenarios.put(Double.valueOf(calcRange.getLowerKm() - 0.0001), nulls);
         for (final Double station : stations) {
             rangeScenarios.put(station, new ArrayList<Double>());
-            rangeScenarios.get(station).add(Double.valueOf(bedHeightDifference(station.doubleValue(), currentFinders, historicalFinder)));
+            final double delta = bedHeightDifference(station, currentFinders, historicalFinder);
+            if (Double.isNaN(delta)) {
+                rangeScenarios.get(station).add(null);
+                if (!this.problems.hasProblems()) {
+                    final String msg = Resources.getMsg(this.context.getMeta(), "uinfo_salix_calc.warning.missing_bedheights");
+                    this.problems.addProblem(station, msg);
+                }
+            }
+            else
+                rangeScenarios.get(station).add(Double.valueOf(delta));
         }
         rangeScenarios.put(Double.valueOf(partTo + 0.0001), nulls);
     }
@@ -181,7 +190,12 @@
             if (!Double.isNaN(currentMSH))
                 break;
         }
-        return Formatter.roundFlowDepth(historicalFinder.getMeanBedHeight(station)).subtract(Formatter.roundFlowDepth(currentMSH)).doubleValue();
+        if (Double.isNaN(currentMSH))
+            return Double.NaN;
+        final double historicalMSH = historicalFinder.getMeanBedHeight(station);
+        if (Double.isNaN(historicalMSH))
+            return Double.NaN;
+        return Formatter.roundFlowDepth(historicalMSH).subtract(Formatter.roundFlowDepth(currentMSH)).doubleValue();
     }
 
     /**

http://dive4elements.wald.intevation.org