# HG changeset patch # User Sascha L. Teichmann # Date 1547475556 -3600 # Node ID 1333f96f18d0fd59211bbb8efb5ed4ded65c2165 # Parent de4543bfbad5b017fcb8123ed66b0541323b85c5 Waterway axis: Clip features against responsibility area of importing user. diff -r de4543bfbad5 -r 1333f96f18d0 pkg/imports/wx.go --- 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.