diff --git a/layers/water/etl_diagram.png b/layers/water/etl_diagram.png index 8fad1791..e3ea3e27 100644 Binary files a/layers/water/etl_diagram.png and b/layers/water/etl_diagram.png differ diff --git a/layers/water/water.sql b/layers/water/water.sql index d13f4d0b..31daeca6 100644 --- a/layers/water/water.sql +++ b/layers/water/water.sql @@ -20,147 +20,261 @@ $$ LANGUAGE SQL IMMUTABLE STRICT; CREATE OR REPLACE VIEW water_z0 AS ( -- etldoc: ne_110m_ocean -> water_z0 - SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + 'ocean'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM ne_110m_ocean UNION ALL -- etldoc: ne_110m_lakes -> water_z0 - SELECT geometry, 'lake'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + 'lake'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM ne_110m_lakes ); CREATE OR REPLACE VIEW water_z1 AS ( -- etldoc: ne_110m_ocean -> water_z1 - SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + 'ocean'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM ne_110m_ocean UNION ALL -- etldoc: ne_110m_lakes -> water_z1 - SELECT geometry, 'lake'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + 'lake'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM ne_110m_lakes ); CREATE OR REPLACE VIEW water_z2 AS ( -- etldoc: ne_50m_ocean -> water_z2 - SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + 'ocean'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM ne_50m_ocean UNION ALL -- etldoc: ne_50m_lakes -> water_z2 - SELECT geometry, 'lake'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + 'lake'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM ne_50m_lakes ); CREATE OR REPLACE VIEW water_z4 AS ( -- etldoc: ne_50m_ocean -> water_z4 - SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + 'ocean'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM ne_50m_ocean UNION ALL -- etldoc: ne_50m_lakes -> water_z4 - SELECT geometry, 'lake'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + 'lake'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM ne_50m_lakes ); CREATE OR REPLACE VIEW water_z5 AS ( -- etldoc: ne_10m_ocean -> water_z5 - SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + 'ocean'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM ne_10m_ocean UNION ALL -- etldoc: ne_10m_lakes -> water_z5 - SELECT geometry, 'lake'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + 'lake'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM ne_10m_lakes ); CREATE OR REPLACE VIEW water_z6 AS ( - -- etldoc: ne_10m_ocean -> water_z6 - SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel - FROM ne_10m_ocean + -- etldoc: osm_ocean_polygon_gen4 -> water_z6 + SELECT geometry, + 'ocean'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel + FROM osm_ocean_polygon_gen4 UNION ALL -- etldoc: osm_water_polygon_gen6 -> water_z6 - SELECT geometry, water_class(waterway) AS class, is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + water_class(waterway) AS class, + is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM osm_water_polygon_gen6 WHERE "natural" != 'bay' ); CREATE OR REPLACE VIEW water_z7 AS ( - -- etldoc: ne_10m_ocean -> water_z7 - SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel - FROM ne_10m_ocean + -- etldoc: osm_ocean_polygon_gen4 -> water_z7 + SELECT geometry, + 'ocean'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel + FROM osm_ocean_polygon_gen4 UNION ALL -- etldoc: osm_water_polygon_gen5 -> water_z7 - SELECT geometry, water_class(waterway) AS class, is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + water_class(waterway) AS class, + is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM osm_water_polygon_gen5 WHERE "natural" != 'bay' ); CREATE OR REPLACE VIEW water_z8 AS ( -- etldoc: osm_ocean_polygon_gen4 -> water_z8 - SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + 'ocean'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM osm_ocean_polygon_gen4 UNION ALL -- etldoc: osm_water_polygon_gen4 -> water_z8 - SELECT geometry, water_class(waterway) AS class, is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + water_class(waterway) AS class, + is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM osm_water_polygon_gen4 WHERE "natural" != 'bay' ); CREATE OR REPLACE VIEW water_z9 AS ( -- etldoc: osm_ocean_polygon_gen3 -> water_z9 - SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + 'ocean'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM osm_ocean_polygon_gen3 UNION ALL -- etldoc: osm_water_polygon_gen3 -> water_z9 - SELECT geometry, water_class(waterway) AS class, is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel FROM osm_water_polygon_gen3 + SELECT geometry, + water_class(waterway) AS class, + is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel + FROM osm_water_polygon_gen3 WHERE "natural" != 'bay' ); CREATE OR REPLACE VIEW water_z10 AS ( -- etldoc: osm_ocean_polygon_gen2 -> water_z10 - SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + 'ocean'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM osm_ocean_polygon_gen2 UNION ALL -- etldoc: osm_water_polygon_gen2 -> water_z10 - SELECT geometry, water_class(waterway) AS class, is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel FROM osm_water_polygon_gen2 + SELECT geometry, + water_class(waterway) AS class, + is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel + FROM osm_water_polygon_gen2 WHERE "natural" != 'bay' ); CREATE OR REPLACE VIEW water_z11 AS ( -- etldoc: osm_ocean_polygon_gen1 -> water_z11 - SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + 'ocean'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM osm_ocean_polygon_gen1 UNION ALL -- etldoc: osm_water_polygon_gen1 -> water_z11 - SELECT geometry, water_class(waterway) AS class, is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + water_class(waterway) AS class, + is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM osm_water_polygon_gen1 WHERE "natural" != 'bay' ); CREATE OR REPLACE VIEW water_z12 AS ( -- etldoc: osm_ocean_polygon_gen1 -> water_z12 - SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + 'ocean'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM osm_ocean_polygon UNION ALL -- etldoc: osm_water_polygon -> water_z12 - SELECT geometry, water_class(waterway) AS class, is_intermittent, is_bridge, is_tunnel + SELECT geometry, + water_class(waterway) AS class, + is_intermittent, + is_bridge, + is_tunnel FROM osm_water_polygon WHERE "natural" != 'bay' ); CREATE OR REPLACE VIEW water_z13 AS ( -- etldoc: osm_ocean_polygon -> water_z13 - SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + 'ocean'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM osm_ocean_polygon UNION ALL -- etldoc: osm_water_polygon -> water_z13 - SELECT geometry, water_class(waterway) AS class, is_intermittent, is_bridge, is_tunnel + SELECT geometry, + water_class(waterway) AS class, + is_intermittent, + is_bridge, + is_tunnel FROM osm_water_polygon WHERE "natural" != 'bay' ); CREATE OR REPLACE VIEW water_z14 AS ( -- etldoc: osm_ocean_polygon -> water_z14 - SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, + 'ocean'::text AS class, + NULL::boolean AS is_intermittent, + NULL::boolean AS is_bridge, + NULL::boolean AS is_tunnel FROM osm_ocean_polygon UNION ALL -- etldoc: osm_water_polygon -> water_z14 - SELECT geometry, water_class(waterway) AS class, is_intermittent, is_bridge, is_tunnel + SELECT geometry, + water_class(waterway) AS class, + is_intermittent, + is_bridge, + is_tunnel FROM osm_water_polygon WHERE "natural" != 'bay' ); @@ -170,7 +284,8 @@ CREATE OR REPLACE VIEW water_z14 AS ( CREATE OR REPLACE FUNCTION layer_water (bbox geometry, zoom_level int) RETURNS TABLE(geometry geometry, class text, brunnel text, intermittent int) AS $$ - SELECT geometry, class::text, + SELECT geometry, + class::text, waterway_brunnel(is_bridge, is_tunnel) AS brunnel, is_intermittent::int AS intermittent FROM (