From 5c67f2769e5861076df0dbb872ffe8f163407a47 Mon Sep 17 00:00:00 2001 From: jirik Date: Wed, 31 Jan 2018 16:51:46 +0100 Subject: [PATCH] Add st_isvalid check to imposm3 generalized tables Fix #386 --- layers/aeroway/mapping.yaml | 3 ++- layers/building/mapping.yaml | 2 +- layers/landcover/mapping.yaml | 2 +- layers/landuse/mapping.yaml | 2 +- layers/park/mapping.yaml | 2 +- layers/transportation/mapping.yaml | 6 ++++-- layers/transportation/update_transportation_merge.sql | 2 +- layers/water/mapping.yaml | 2 +- layers/water_name/update_water_lakeline.sql | 2 +- layers/waterway/mapping.yaml | 2 +- layers/waterway/update_important_waterway.sql | 2 +- 11 files changed, 15 insertions(+), 12 deletions(-) diff --git a/layers/aeroway/mapping.yaml b/layers/aeroway/mapping.yaml index d67e9f6..ea5897e 100644 --- a/layers/aeroway/mapping.yaml +++ b/layers/aeroway/mapping.yaml @@ -12,6 +12,7 @@ generalized_tables: # etldoc: imposm3 -> osm_aeroway_linestring_gen1 aeroway_linestring_gen1: source: aeroway_linestring + sql_filter: ST_IsValid(geometry) tolerance: ZRES13 # etldoc: imposm3 -> osm_aeroway_polygon_gen3 @@ -29,7 +30,7 @@ generalized_tables: # etldoc: imposm3 -> osm_aeroway_polygon_gen1 aeroway_polygon_gen1: source: aeroway_polygon - sql_filter: area>power(ZRES12,2) + sql_filter: area>power(ZRES12,2) AND ST_IsValid(geometry) tolerance: ZRES13 ref_field: &ref diff --git a/layers/building/mapping.yaml b/layers/building/mapping.yaml index cfd191d..e3dd771 100644 --- a/layers/building/mapping.yaml +++ b/layers/building/mapping.yaml @@ -2,7 +2,7 @@ generalized_tables: # etldoc: imposm3 -> osm_building_polygon_gen1 building_polygon_gen1: source: building_polygon - sql_filter: area>power(ZRES12,2) + sql_filter: area>power(ZRES12,2) AND ST_IsValid(geometry) tolerance: ZRES14 tables: diff --git a/layers/landcover/mapping.yaml b/layers/landcover/mapping.yaml index 3504f18..3b07c29 100644 --- a/layers/landcover/mapping.yaml +++ b/layers/landcover/mapping.yaml @@ -40,7 +40,7 @@ generalized_tables: # etldoc: imposm3 -> osm_landcover_polygon_gen1 landcover_polygon_gen1: source: landcover_polygon - sql_filter: area>power(ZRES10,2) + sql_filter: area>power(ZRES10,2) AND ST_IsValid(geometry) tolerance: ZRES13 tables: diff --git a/layers/landuse/mapping.yaml b/layers/landuse/mapping.yaml index 077896e..aa31dd3 100644 --- a/layers/landuse/mapping.yaml +++ b/layers/landuse/mapping.yaml @@ -22,7 +22,7 @@ generalized_tables: # etldoc: imposm3 -> osm_landuse_polygon_gen1 landuse_polygon_gen1: source: landuse_polygon - sql_filter: area>power(ZRES11,2) + sql_filter: area>power(ZRES11,2) AND ST_IsValid(geometry) tolerance: ZRES13 tables: diff --git a/layers/park/mapping.yaml b/layers/park/mapping.yaml index 9b2b785..a2639a5 100644 --- a/layers/park/mapping.yaml +++ b/layers/park/mapping.yaml @@ -44,7 +44,7 @@ generalized_tables: # etldoc: imposm3 -> osm_park_polygon_gen1 park_polygon_gen1: source: park_polygon - sql_filter: area>power(ZRES12,2) + sql_filter: area>power(ZRES12,2) AND ST_IsValid(geometry) tolerance: ZRES13 tables: diff --git a/layers/transportation/mapping.yaml b/layers/transportation/mapping.yaml index ba8c2b2..02c6b6b 100644 --- a/layers/transportation/mapping.yaml +++ b/layers/transportation/mapping.yaml @@ -22,12 +22,13 @@ generalized_tables: # etldoc: imposm3 -> osm_railway_linestring_gen1 railway_linestring_gen1: source: railway_linestring - sql_filter: railway IN ('rail', 'narrow_gauge', 'light_rail') AND service='' + sql_filter: railway IN ('rail', 'narrow_gauge', 'light_rail') AND service='' AND ST_IsValid(geometry) tolerance: ZRES13 # etldoc: imposm3 -> osm_aerialway_linestring_gen1 aerialway_linestring_gen1: source: aerialway_linestring + sql_filter: ST_IsValid(geometry) tolerance: ZRES13 # etldoc: imposm3 -> osm_shipway_linestring_gen2 @@ -38,6 +39,7 @@ generalized_tables: # etldoc: imposm3 -> osm_shipway_linestring_gen1 shipway_linestring_gen1: source: shipway_linestring + sql_filter: ST_IsValid(geometry) tolerance: ZRES13 # etldoc: imposm3 -> osm_highway_linestring_gen2 @@ -49,7 +51,7 @@ generalized_tables: # etldoc: imposm3 -> osm_highway_linestring_gen1 highway_linestring_gen1: source: highway_linestring - sql_filter: highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_link') AND NOT is_area + sql_filter: highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_link') AND NOT is_area AND ST_IsValid(geometry) tolerance: ZRES12 name_field: &name diff --git a/layers/transportation/update_transportation_merge.sql b/layers/transportation/update_transportation_merge.sql index 6cae6ea..36d0931 100644 --- a/layers/transportation/update_transportation_merge.sql +++ b/layers/transportation/update_transportation_merge.sql @@ -37,7 +37,7 @@ CREATE MATERIALIZED VIEW osm_transportation_merge_linestring AS ( highway, min(z_order) AS z_order FROM osm_highway_linestring - WHERE highway IN ('motorway','trunk', 'primary') + WHERE highway IN ('motorway','trunk', 'primary') AND ST_IsValid(geometry) group by highway ) AS highway_union ); diff --git a/layers/water/mapping.yaml b/layers/water/mapping.yaml index 24f5dcf..1123aa9 100644 --- a/layers/water/mapping.yaml +++ b/layers/water/mapping.yaml @@ -33,7 +33,7 @@ generalized_tables: # etldoc: imposm3 -> osm_water_polygon_gen1 water_polygon_gen1: source: water_polygon - sql_filter: area>power(ZRES10,2) + sql_filter: area>power(ZRES10,2) AND ST_IsValid(geometry) tolerance: ZRES12 tables: diff --git a/layers/water_name/update_water_lakeline.sql b/layers/water_name/update_water_lakeline.sql index ff7b25a..979ac7e 100644 --- a/layers/water_name/update_water_lakeline.sql +++ b/layers/water_name/update_water_lakeline.sql @@ -13,7 +13,7 @@ CREATE MATERIALIZED VIEW osm_water_lakeline AS ( ST_Area(wp.geometry) AS area FROM osm_water_polygon AS wp INNER JOIN lake_centerline ll ON wp.osm_id = ll.osm_id - WHERE wp.name <> '' + WHERE wp.name <> '' AND ST_IsValid(wp.geometry) ); CREATE INDEX IF NOT EXISTS osm_water_lakeline_geometry_idx ON osm_water_lakeline USING gist(geometry); diff --git a/layers/waterway/mapping.yaml b/layers/waterway/mapping.yaml index c5f980d..cfb17e9 100644 --- a/layers/waterway/mapping.yaml +++ b/layers/waterway/mapping.yaml @@ -12,7 +12,7 @@ generalized_tables: # etldoc: imposm3 -> osm_waterway_linestring_gen1 waterway_linestring_gen1: source: waterway_linestring - sql_filter: waterway IN ('river') + sql_filter: waterway IN ('river') AND ST_IsValid(geometry) tolerance: ZRES11 tunnel_field: &tunnel diff --git a/layers/waterway/update_important_waterway.sql b/layers/waterway/update_important_waterway.sql index a798aa4..1c6f2c5 100644 --- a/layers/waterway/update_important_waterway.sql +++ b/layers/waterway/update_important_waterway.sql @@ -27,7 +27,7 @@ CREATE MATERIALIZED VIEW osm_important_waterway_linestring AS ( ST_LineMerge(ST_Union(geometry)) AS geometry, name, name_en, name_de, slice_language_tags(tags) AS tags FROM osm_waterway_linestring - WHERE name <> '' AND waterway = 'river' + WHERE name <> '' AND waterway = 'river' AND ST_IsValid(geometry) GROUP BY name, name_en, name_de, slice_language_tags(tags) ) AS waterway_union );