changeset 1795:1333f96f18d0

Waterway axis: Clip features against responsibility area of importing user.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 14 Jan 2019 15:19:16 +0100
parents de4543bfbad5
children 904c7e853adc
files pkg/imports/wx.go
diffstat 1 files changed, 32 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/pkg/imports/wx.go	Mon Jan 14 13:10:21 2019 +0100
+++ b/pkg/imports/wx.go	Mon Jan 14 15:19:16 2019 +0100
@@ -80,14 +80,40 @@
 }
 
 const (
-	deleteWaterwayAxisSQL = `DELETE FROM waterway.waterway_axis`
+	deleteWaterwayAxisSQL = `
+WITH resp AS (
+  SELECT best_utm(area::geometry) AS t,
+         ST_Transform(area::geometry, best_utm(area::geometry)) AS a
+  FROM users.responsibility_areas
+  WHERE country = users.current_user_country()
+)
+DELETE FROM waterway.waterway_axis
+WHERE ST_Covers(
+  (SELECT a FROM resp),
+  ST_Transform(wtwaxs::geometry, (SELECT t FROM resp)))
+`
+
 	insertWaterwayAxisSQL = `
+WITH resp AS (
+  SELECT best_utm(area::geometry) AS t,
+         ST_Transform(area::geometry, best_utm(area::geometry)) AS a
+  FROM users.responsibility_areas
+  WHERE country = users.current_user_country()
+)
 INSERT INTO waterway.waterway_axis (wtwaxs, objnam, nobjnam)
-VALUES (
-  ST_Transform(ST_GeomFromWKB($1, $2::integer), 4326)::geography,
-  $3,
-  $4
-)`
+SELECT ST_Transform(clipped.geom, 4326), $3, $4 FROM (
+    SELECT (ST_Dump(
+       ST_Intersection(
+         (SELECT a FROM resp),
+         ST_Transform(
+           ST_GeomFromWKB($1, $2::integer),
+           (SELECT t FROM resp)
+         )
+       )
+     )).geom AS geom
+  ) AS clipped
+  WHERE clipped.geom IS NOT NULL
+`
 )
 
 // Do executes the actual waterway axis import.