diff --git a/layers/place/update_island_polygon.sql b/layers/place/update_island_polygon.sql index 9176674..2644f35 100644 --- a/layers/place/update_island_polygon.sql +++ b/layers/place/update_island_polygon.sql @@ -15,7 +15,8 @@ $$ UPDATE osm_island_polygon SET geometry = ST_PointOnSurface(geometry) WHERE (full_update OR osm_id IN (SELECT osm_id FROM place_island_polygon.osm_ids)) - AND ST_GeometryType(geometry) <> 'ST_Point'; + AND ST_GeometryType(geometry) <> 'ST_Point' + AND ST_IsValid(geometry); UPDATE osm_island_polygon SET tags = update_tags(tags, geometry) diff --git a/layers/poi/update_poi_polygon.sql b/layers/poi/update_poi_polygon.sql index 01cbf1c..cf6c223 100644 --- a/layers/poi/update_poi_polygon.sql +++ b/layers/poi/update_poi_polygon.sql @@ -21,7 +21,8 @@ $$ ELSE ST_PointOnSurface(geometry) END WHERE (full_update OR osm_id IN (SELECT osm_id FROM poi_polygon.osm_ids)) - AND ST_GeometryType(geometry) <> 'ST_Point'; + AND ST_GeometryType(geometry) <> 'ST_Point' + AND ST_IsValid(geometry); UPDATE osm_poi_polygon SET subclass = 'subway' diff --git a/layers/water_name/update_water_point.sql b/layers/water_name/update_water_point.sql index 7ef72a5..5accc80 100644 --- a/layers/water_name/update_water_point.sql +++ b/layers/water_name/update_water_point.sql @@ -14,7 +14,8 @@ SELECT wp.osm_id, FROM osm_water_polygon AS wp LEFT JOIN lake_centerline ll ON wp.osm_id = ll.osm_id WHERE ll.osm_id IS NULL - AND wp.name <> ''; + AND wp.name <> '' + AND ST_IsValid(wp.geometry); -- etldoc: osm_water_polygon -> osm_water_point -- etldoc: lake_centerline -> osm_water_point