changeset 3370:ac630f0f5dbf

Waterlevel classification: Handle case of same values in adjoint meassure dates correctly.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 22 May 2019 12:33:59 +0200
parents 33c398df5cb5
children f76a694f7f7b
files pkg/controllers/bottlenecks.go
diffstat 1 files changed, 15 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/pkg/controllers/bottlenecks.go	Wed May 22 11:56:52 2019 +0200
+++ b/pkg/controllers/bottlenecks.go	Wed May 22 12:33:59 2019 +0200
@@ -157,9 +157,22 @@
 			continue
 		}
 
+		lo, hi := maxTime(p1.when, from), minTime(p2.when, to)
+
+		m1, m2 := access(p1), access(p2)
+		if m1 == m2 { // The whole interval is in only one class.
+			for j := 0; j < len(classes)-1; j++ {
+				if classes[j] <= m1 && m1 <= classes[j+1] {
+					result[j] += hi.Sub(lo)
+					break
+				}
+			}
+			continue
+		}
+
 		f := common.InterpolateTime(
-			p1.when, access(p1),
-			p2.when, access(p2),
+			p1.when, m1,
+			p2.when, m2,
 		)
 
 		for j, c := range classes {
@@ -169,8 +182,6 @@
 		for j := 0; j < len(values)-1; j++ {
 			start, end := orderTime(values[j], values[j+1])
 
-			lo, hi := maxTime(p1.when, from), minTime(p2.when, to)
-
 			if start.After(hi) || end.Before(lo) {
 				continue
 			}