# HG changeset patch # User Tom Gottfried # Date 1584373697 -3600 # Node ID 776db50c01f03a0bc9bfc016a6545d371083949b # Parent e8661379a6c5c6fe48a60475570a479af320aa07 Fix repairing geometries ST_Transform() and ST_MakeValid() can both collapse geometries to a lower dimension than polygonal and the output of ST_Transform() can be invalid geometries. Respect that in the order in which functions are stacked here. diff -r e8661379a6c5 -r 776db50c01f0 pkg/imports/fd.go --- a/pkg/imports/fd.go Mon Mar 16 15:24:08 2020 +0100 +++ b/pkg/imports/fd.go Mon Mar 16 16:48:17 2020 +0100 @@ -174,17 +174,16 @@ min_depth, date_info, source_organization) -SELECT ST_Transform(dmp.geom, 4326), $3, $4, $5, $6, $7, $8 +SELECT dmp.geom, $3, $4, $5, $6, $7, $8 FROM ST_GeomFromWKB($1, $2::integer) AS new_fd (new_fd), - ST_Dump( + ST_Dump(ST_CollectionExtract(ST_MakeValid(ST_Transform( CASE WHEN pg_has_role('sys_admin', 'MEMBER') - THEN ST_MakeValid(ST_Transform( - new_fd, best_utm(ST_Transform(new_fd, 4326)))) - ELSE ST_CollectionExtract(ST_Intersection( + THEN new_fd + ELSE ST_Intersection( (SELECT ST_Buffer(a, -0.0001) FROM resp), - ST_MakeValid(ST_Transform(new_fd, (SELECT ST_SRID(a) FROM resp)))), - 3) - END) AS dmp + ST_MakeValid(ST_Transform(new_fd, (SELECT ST_SRID(a) FROM resp)))) + END, + 4326)), 3)) AS dmp RETURNING id, ST_X(ST_Centroid(area::geometry)), ST_Y(ST_Centroid(area::geometry)) @@ -271,6 +270,9 @@ feedback.Info("Using EPSG: %d", epsg) + feedback.Info( + "Found %d features in data source", len(rfc.Features)) + savepoint := Savepoint(ctx, tx, "feature") features: