diff pkg/imports/bn.go @ 2563:dc4fae4bdb8f

Expose axis snapping tolerance to users
author Tom Gottfried <tom@intevation.de>
date Fri, 08 Mar 2019 19:15:47 +0100
parents 6b34d0fb4498
children 02d012272dd4
line wrap: on
line diff
--- a/pkg/imports/bn.go	Fri Mar 08 18:57:58 2019 +0100
+++ b/pkg/imports/bn.go	Fri Mar 08 19:15:47 2019 +0100
@@ -30,6 +30,8 @@
 type Bottleneck struct {
 	// URL is the URL of the SOAP service.
 	URL string `json:"url"`
+	// Tolerance used for axis snapping
+	Tolerance float64 `json:"tolerance"`
 	// Insecure indicates if HTTPS traffic
 	// should validate certificates or not.
 	Insecure bool `json:"insecure"`
@@ -64,7 +66,7 @@
   $4,
   isrsrange(isrs_fromText($5), isrs_fromText($6)),
   ISRSrange_area(
-    isrsrange(isrs_fromText($5), isrs_fromText($6)),
+    ISRSrange_axis(isrsrange(isrs_fromText($5), isrs_fromText($6)), $14),
     (SELECT ST_Collect(CAST(area AS geometry))
         FROM waterway.waterway_area)),
   $7,
@@ -162,7 +164,7 @@
 		return resp.Export_bn_by_isrsResult.BottleNeckType, nil
 	}
 
-	return storeBottlenecks(ctx, fetch, importID, conn, feedback)
+	return storeBottlenecks(ctx, fetch, importID, conn, feedback, bn.Tolerance)
 }
 
 func storeBottlenecks(
@@ -171,6 +173,7 @@
 	importID int64,
 	conn *sql.Conn,
 	feedback Feedback,
+	tolerance float64,
 ) (interface{}, error) {
 	start := time.Now()
 
@@ -202,7 +205,7 @@
 
 	for _, bn := range bns {
 		if err := storeBottleneck(
-			ctx, importID, conn, feedback, bn, &nids,
+			ctx, importID, conn, feedback, bn, &nids, tolerance,
 			hasStmt, insertStmt, trackStmt); err != nil {
 			return nil, err
 		}
@@ -228,6 +231,7 @@
 	feedback Feedback,
 	bn *ifbn.BottleNeckType,
 	nids *[]string,
+	tolerance float64,
 	hasStmt, insertStmt, trackStmt *sql.Stmt,
 ) error {
 
@@ -278,6 +282,7 @@
 		limiting,
 		bn.Date_Info,
 		bn.Source,
+		tolerance,
 	).Scan(&nid)
 	if err != nil {
 		feedback.Warn("Failed to insert '%s' into database", bn.OBJNAM)