comparison pkg/imports/fd.go @ 2923:9bd98daf0b0f

Let sys_admin import fairway dimensions without restrictions
author Tom Gottfried <tom@intevation.de>
date Wed, 03 Apr 2019 17:19:26 +0200
parents 372dc8382389
children 4acbee65275d
comparison
equal deleted inserted replaced
2922:372dc8382389 2923:9bd98daf0b0f
140 deleteFairwayDimensionSQL = ` 140 deleteFairwayDimensionSQL = `
141 WITH resp AS ( 141 WITH resp AS (
142 SELECT users.current_user_area_utm() AS a 142 SELECT users.current_user_area_utm() AS a
143 ) 143 )
144 DELETE FROM waterway.fairway_dimensions 144 DELETE FROM waterway.fairway_dimensions
145 WHERE ST_Covers( 145 WHERE (pg_has_role('sys_admin', 'MEMBER')
146 (SELECT a FROM resp), 146 OR ST_Covers((SELECT a FROM resp),
147 ST_Transform(area::geometry, (SELECT ST_SRID(a) FROM resp))) 147 ST_Transform(area::geometry, (SELECT ST_SRID(a) FROM resp))))
148 AND staging_done 148 AND staging_done
149 AND level_of_service = $1::smallint` 149 AND level_of_service = $1::smallint`
150 150
151 // The ST_MakeValid and ST_Buffer below are a workarround to 151 // The ST_MakeValid and ST_Buffer below are a workarround to
152 // avoid errors due to reprojection. 152 // avoid errors due to reprojection.
153 insertFairwayDimensionSQL = ` 153 insertFairwayDimensionSQL = `
154 WITH resp AS ( 154 WITH resp AS (
155 SELECT users.current_user_area_utm() AS a 155 SELECT users.current_user_area_utm() AS a
156 ) 156 )
157 INSERT INTO waterway.fairway_dimensions (area, level_of_service, min_width, max_width, min_depth, date_info, source_organization) 157 INSERT INTO waterway.fairway_dimensions (
158 SELECT ST_Transform(clipped.geom, 4326)::geography, $3, $4, $5, $6, $7, $8 FROM ( 158 area,
159 SELECT (ST_Dump( 159 level_of_service,
160 ST_Intersection( 160 min_width,
161 (SELECT ST_Buffer(a, -0.0001) FROM resp), 161 max_width,
162 ST_MakeValid(ST_Transform( 162 min_depth,
163 ST_GeomFromWKB($1, $2::integer), 163 date_info,
164 (SELECT ST_SRID(a) FROM resp) 164 source_organization)
165 )) 165 SELECT ST_Transform(dmp.geom, 4326), $3, $4, $5, $6, $7, $8
166 ) 166 FROM ST_GeomFromWKB($1, $2::integer) AS new_fd (new_fd),
167 )).geom AS geom 167 ST_Dump(
168 ) AS clipped 168 CASE WHEN pg_has_role('sys_admin', 'MEMBER')
169 WHERE clipped.geom IS NOT NULL 169 THEN ST_MakeValid(ST_Transform(
170 new_fd, best_utm(ST_Transform(new_fd, 4326))))
171 ELSE ST_CollectionExtract(ST_Intersection(
172 (SELECT ST_Buffer(a, -0.0001) FROM resp),
173 ST_MakeValid(ST_Transform(new_fd, (SELECT ST_SRID(a) FROM resp)))),
174 3)
175 END) AS dmp
170 RETURNING id, 176 RETURNING id,
171 ST_X(ST_Centroid(area::geometry)), 177 ST_X(ST_Centroid(area::geometry)),
172 ST_Y(ST_Centroid(area::geometry)) 178 ST_Y(ST_Centroid(area::geometry))
173 ` 179 `
174 ) 180 )