diff --git a/layers/building/building.sql b/layers/building/building.sql index 3f63cac..0e0685d 100644 --- a/layers/building/building.sql +++ b/layers/building/building.sql @@ -46,22 +46,6 @@ CREATE OR REPLACE VIEW osm_all_buildings AS ( osm_building_associatedstreet WHERE role = 'house' AND ST_GeometryType(geometry) = 'ST_Polygon' UNION ALL - -- etldoc: osm_building_polygon -> layer_building:z14_ - -- Buildings that are from multipolygons - SELECT osm_id,geometry, - COALESCE(nullif(as_numeric(height),-1),nullif(as_numeric(buildingheight),-1)) as height, - COALESCE(nullif(as_numeric(min_height),-1),nullif(as_numeric(buildingmin_height),-1)) as min_height, - COALESCE(nullif(as_numeric(levels),-1),nullif(as_numeric(buildinglevels),-1)) as levels, - COALESCE(nullif(as_numeric(min_level),-1),nullif(as_numeric(buildingmin_level),-1)) as min_level, - nullif(material, '') AS material, - nullif(colour, '') AS colour, - FALSE as hide_3d - FROM - osm_building_polygon obp - -- OSM mulipolygons once imported can give unique postgis polygons with holes, or multi parts polygons - WHERE osm_id < 0 AND ST_GeometryType(geometry) IN ('ST_Polygon', 'ST_MultiPolygon') - - UNION ALL -- etldoc: osm_building_polygon -> layer_building:z14_ -- Standalone buildings SELECT obp.osm_id,obp.geometry, @@ -74,9 +58,11 @@ CREATE OR REPLACE VIEW osm_all_buildings AS ( obr.role IS NOT NULL AS hide_3d FROM osm_building_polygon obp - LEFT JOIN osm_building_relation obr ON obr.member = obp.osm_id AND obr.role = 'outline' - -- Only check for ST_Polygon as we exclude buildings from relations keeping only positive ids - WHERE obp.osm_id >= 0 AND ST_GeometryType(obp.geometry) = 'ST_Polygon' + LEFT JOIN osm_building_relation obr ON + obp.osm_id >= 0 AND + obr.member = obp.osm_id AND + obr.role = 'outline' + WHERE ST_GeometryType(obp.geometry) IN ('ST_Polygon', 'ST_MultiPolygon') ); CREATE OR REPLACE FUNCTION layer_building(bbox geometry, zoom_level int)