diff --git a/layers/water/mapping.yaml b/layers/water/mapping.yaml index dadd72ba..8185eef7 100644 --- a/layers/water/mapping.yaml +++ b/layers/water/mapping.yaml @@ -69,6 +69,9 @@ tables: - name: waterway key: waterway type: string + - name: is_intermittent + key: intermittent + type: bool filters: reject: covered: ["yes"] diff --git a/layers/water/water.sql b/layers/water/water.sql index d12a5af2..9605beef 100644 --- a/layers/water/water.sql +++ b/layers/water/water.sql @@ -11,122 +11,122 @@ $$ LANGUAGE SQL IMMUTABLE; CREATE OR REPLACE VIEW water_z0 AS ( -- etldoc: ne_110m_ocean -> water_z0 - SELECT geometry, 'ocean'::text AS class FROM ne_110m_ocean + SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent FROM ne_110m_ocean UNION ALL -- etldoc: ne_110m_lakes -> water_z0 - SELECT geometry, 'lake'::text AS class FROM ne_110m_lakes + SELECT geometry, 'lake'::text AS class, NULL::boolean AS is_intermittent FROM ne_110m_lakes ); CREATE OR REPLACE VIEW water_z1 AS ( -- etldoc: ne_110m_ocean -> water_z1 - SELECT geometry, 'ocean'::text AS class FROM ne_110m_ocean + SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent FROM ne_110m_ocean UNION ALL -- etldoc: ne_110m_lakes -> water_z1 - SELECT geometry, 'lake'::text AS class FROM ne_110m_lakes + SELECT geometry, 'lake'::text AS class, NULL::boolean AS is_intermittent FROM ne_110m_lakes ); CREATE OR REPLACE VIEW water_z2 AS ( -- etldoc: ne_50m_ocean -> water_z2 - SELECT geometry, 'ocean'::text AS class FROM ne_50m_ocean + SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent FROM ne_50m_ocean UNION ALL -- etldoc: ne_50m_lakes -> water_z2 - SELECT geometry, 'lake'::text AS class FROM ne_50m_lakes + SELECT geometry, 'lake'::text AS class, NULL::boolean AS is_intermittent FROM ne_50m_lakes ); CREATE OR REPLACE VIEW water_z4 AS ( -- etldoc: ne_50m_ocean -> water_z4 - SELECT geometry, 'ocean'::text AS class FROM ne_50m_ocean + SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent FROM ne_50m_ocean UNION ALL -- etldoc: ne_50m_lakes -> water_z4 - SELECT geometry, 'lake'::text AS class FROM ne_50m_lakes + SELECT geometry, 'lake'::text AS class, NULL::boolean AS is_intermittent FROM ne_50m_lakes ); CREATE OR REPLACE VIEW water_z5 AS ( -- etldoc: ne_10m_ocean -> water_z5 - SELECT geometry, 'ocean'::text AS class FROM ne_10m_ocean + SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent FROM ne_10m_ocean UNION ALL -- etldoc: ne_10m_lakes -> water_z5 - SELECT geometry, 'lake'::text AS class FROM ne_10m_lakes + SELECT geometry, 'lake'::text AS class, NULL::boolean AS is_intermittent FROM ne_10m_lakes ); CREATE OR REPLACE VIEW water_z6 AS ( -- etldoc: ne_10m_ocean -> water_z6 - SELECT geometry, 'ocean'::text AS class FROM ne_10m_ocean + SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent FROM ne_10m_ocean UNION ALL -- etldoc: osm_water_polygon_gen6 -> water_z6 - SELECT geometry, water_class(waterway) AS class FROM osm_water_polygon_gen6 + SELECT geometry, water_class(waterway) AS class, is_intermittent 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 FROM ne_10m_ocean + SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent FROM ne_10m_ocean UNION ALL -- etldoc: osm_water_polygon_gen5 -> water_z7 - SELECT geometry, water_class(waterway) AS class FROM osm_water_polygon_gen5 + SELECT geometry, water_class(waterway) AS class, is_intermittent 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 FROM osm_ocean_polygon_gen4 + SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent FROM osm_ocean_polygon_gen4 UNION ALL -- etldoc: osm_water_polygon_gen4 -> water_z8 - SELECT geometry, water_class(waterway) AS class FROM osm_water_polygon_gen4 + SELECT geometry, water_class(waterway) AS class, is_intermittent 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 FROM osm_ocean_polygon_gen3 + SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent FROM osm_ocean_polygon_gen3 UNION ALL -- etldoc: osm_water_polygon_gen3 -> water_z9 - SELECT geometry, water_class(waterway) AS class FROM osm_water_polygon_gen3 + SELECT geometry, water_class(waterway) AS class, is_intermittent 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 FROM osm_ocean_polygon_gen2 + SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent FROM osm_ocean_polygon_gen2 UNION ALL -- etldoc: osm_water_polygon_gen2 -> water_z10 - SELECT geometry, water_class(waterway) AS class FROM osm_water_polygon_gen2 + SELECT geometry, water_class(waterway) AS class, is_intermittent 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 FROM osm_ocean_polygon_gen1 + SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent FROM osm_ocean_polygon_gen1 UNION ALL -- etldoc: osm_water_polygon_gen1 -> water_z11 - SELECT geometry, water_class(waterway) AS class FROM osm_water_polygon_gen1 + SELECT geometry, water_class(waterway) AS class, is_intermittent 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 FROM osm_ocean_polygon + SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent FROM osm_ocean_polygon UNION ALL -- etldoc: osm_water_polygon -> water_z12 - SELECT geometry, water_class(waterway) AS class FROM osm_water_polygon + SELECT geometry, water_class(waterway) AS class, is_intermittent 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 FROM osm_ocean_polygon + SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent FROM osm_ocean_polygon UNION ALL -- etldoc: osm_water_polygon -> water_z13 - SELECT geometry, water_class(waterway) AS class FROM osm_water_polygon + SELECT geometry, water_class(waterway) AS class, is_intermittent 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 FROM osm_ocean_polygon + SELECT geometry, 'ocean'::text AS class, NULL::boolean AS is_intermittent FROM osm_ocean_polygon UNION ALL -- etldoc: osm_water_polygon -> water_z14 - SELECT geometry, water_class(waterway) AS class FROM osm_water_polygon + SELECT geometry, water_class(waterway) AS class, is_intermittent FROM osm_water_polygon WHERE "natural" != 'bay' ); @@ -134,8 +134,8 @@ CREATE OR REPLACE VIEW water_z14 AS ( -- etldoc: label="layer_water | z0|z1|z2|z3 | z4|z5|z6|z7| z8 | z9 | z10 | z11 | z12| z13| z14+" ] ; CREATE OR REPLACE FUNCTION layer_water (bbox geometry, zoom_level int) -RETURNS TABLE(geometry geometry, class text) AS $$ - SELECT geometry, class::text FROM ( +RETURNS TABLE(geometry geometry, class text, intermittent int) AS $$ + SELECT geometry, class::text, is_intermittent::int AS intermittent FROM ( -- etldoc: water_z0 -> layer_water:z0 SELECT * FROM water_z0 WHERE zoom_level = 0 UNION ALL diff --git a/layers/water/water.yaml b/layers/water/water.yaml index fb1f307d..ca0edb87 100644 --- a/layers/water/water.yaml +++ b/layers/water/water.yaml @@ -17,9 +17,13 @@ layer: - ocean - lake - river + intermittent: + description: | + Mark with `1` if it is an [intermittent](http://wiki.openstreetmap.org/wiki/Key:intermittent) water polygon. + values: [0, 1] buffer_size: 4 datasource: - query: (SELECT geometry, class FROM layer_water(!bbox!, z(!scale_denominator!))) AS t + query: (SELECT geometry, class, intermittent FROM layer_water(!bbox!, z(!scale_denominator!))) AS t schema: - ./water.sql datasources: diff --git a/layers/water_name/layer.sql b/layers/water_name/layer.sql index f59c996e..e0b60cd1 100644 --- a/layers/water_name/layer.sql +++ b/layers/water_name/layer.sql @@ -3,7 +3,7 @@ -- etldoc: label="layer_water_name | z0_8 | z9_13 | z14+" ] ; CREATE OR REPLACE FUNCTION layer_water_name(bbox geometry, zoom_level integer) -RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, tags hstore, class text) AS $$ +RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, tags hstore, class text, intermittent int) AS $$ -- etldoc: osm_water_lakeline -> layer_water_name:z9_13 -- etldoc: osm_water_lakeline -> layer_water_name:z14_ SELECT @@ -14,7 +14,8 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de COALESCE(NULLIF(name_en, ''), name) AS name_en, COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de, tags, - 'lake'::text AS class + 'lake'::text AS class, + is_intermittent::int AS intermittent FROM osm_water_lakeline WHERE geometry && bbox AND ((zoom_level BETWEEN 9 AND 13 AND LineLabel(zoom_level, NULLIF(name, ''), geometry)) @@ -30,7 +31,8 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de COALESCE(NULLIF(name_en, ''), name) AS name_en, COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de, tags, - 'lake'::text AS class + 'lake'::text AS class, + is_intermittent::int AS intermittent FROM osm_water_point WHERE geometry && bbox AND ( (zoom_level BETWEEN 9 AND 13 AND area > 70000*2^(20-zoom_level)) @@ -44,7 +46,8 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de COALESCE(NULLIF(name_en, ''), name) AS name_en, COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de, tags, - place::text AS class + place::text AS class, + is_intermittent::int AS intermittent FROM osm_marine_point WHERE geometry && bbox AND ( place = 'ocean' diff --git a/layers/water_name/mapping.yaml b/layers/water_name/mapping.yaml index 64f06d43..7d27ac4c 100644 --- a/layers/water_name/mapping.yaml +++ b/layers/water_name/mapping.yaml @@ -24,6 +24,9 @@ tables: - name: rank key: rank type: integer + - name: is_intermittent + key: intermittent + type: bool filters: require: name: ["__any__"] diff --git a/layers/water_name/update_marine_point.sql b/layers/water_name/update_marine_point.sql index 983bef40..c33a506e 100644 --- a/layers/water_name/update_marine_point.sql +++ b/layers/water_name/update_marine_point.sql @@ -12,7 +12,7 @@ BEGIN -- etldoc: osm_marine_point -> osm_marine_point WITH important_marine_point AS ( - SELECT osm.geometry, osm.osm_id, osm.name, osm.name_en, ne.scalerank + SELECT osm.geometry, osm.osm_id, osm.name, osm.name_en, ne.scalerank, osm.is_intermittent FROM ne_10m_geography_marine_polys AS ne, osm_marine_point AS osm WHERE trim(regexp_replace(ne.name, '\\s+', ' ', 'g')) ILIKE osm.name OR trim(regexp_replace(ne.name, '\\s+', ' ', 'g')) ILIKE osm.tags->'name:en' diff --git a/layers/water_name/update_water_lakeline.sql b/layers/water_name/update_water_lakeline.sql index 979ac7ea..3136d8ed 100644 --- a/layers/water_name/update_water_lakeline.sql +++ b/layers/water_name/update_water_lakeline.sql @@ -10,7 +10,8 @@ CREATE MATERIALIZED VIEW osm_water_lakeline AS ( ll.wkb_geometry AS geometry, name, name_en, name_de, update_tags(tags, ll.wkb_geometry) AS tags, - ST_Area(wp.geometry) AS area + ST_Area(wp.geometry) AS area, + is_intermittent FROM osm_water_polygon AS wp INNER JOIN lake_centerline ll ON wp.osm_id = ll.osm_id WHERE wp.name <> '' AND ST_IsValid(wp.geometry) diff --git a/layers/water_name/update_water_point.sql b/layers/water_name/update_water_point.sql index 88742010..66bff8f6 100644 --- a/layers/water_name/update_water_point.sql +++ b/layers/water_name/update_water_point.sql @@ -10,7 +10,8 @@ CREATE MATERIALIZED VIEW osm_water_point AS ( wp.osm_id, ST_PointOnSurface(wp.geometry) AS geometry, wp.name, wp.name_en, wp.name_de, update_tags(wp.tags, ST_PointOnSurface(wp.geometry)) AS tags, - ST_Area(wp.geometry) AS area + ST_Area(wp.geometry) AS area, + wp.is_intermittent 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 <> '' diff --git a/layers/water_name/water_name.yaml b/layers/water_name/water_name.yaml index c1263fb9..68a7f7ef 100644 --- a/layers/water_name/water_name.yaml +++ b/layers/water_name/water_name.yaml @@ -13,6 +13,10 @@ layer: At the moment only `lake` since no ocean parts are labelled. *Reserved for future use*. values: - lake + intermittent: + description: | + Mark with `1` if it is an [intermittent](http://wiki.openstreetmap.org/wiki/Key:intermittent) lake. + values: [0, 1] buffer_size: 256 srs: +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over datasource: @@ -20,7 +24,7 @@ layer: key_field: osm_id key_field_as_attribute: no srid: 900913 - query: (SELECT osm_id, geometry, name, name_en, name_de, {name_languages}, class FROM layer_water_name(!bbox!, z(!scale_denominator!))) AS t + query: (SELECT osm_id, geometry, name, name_en, name_de, {name_languages}, class, intermittent FROM layer_water_name(!bbox!, z(!scale_denominator!))) AS t schema: - ./update_marine_point.sql - ./update_water_lakeline.sql diff --git a/layers/waterway/mapping.yaml b/layers/waterway/mapping.yaml index cfb17e96..2255b165 100644 --- a/layers/waterway/mapping.yaml +++ b/layers/waterway/mapping.yaml @@ -49,6 +49,9 @@ tables: type: hstore_tags - *tunnel - *bridge + - name: is_intermittent + key: intermittent + type: bool mapping: waterway: - stream diff --git a/layers/waterway/waterway.sql b/layers/waterway/waterway.sql index 925b9994..64838f6a 100644 --- a/layers/waterway/waterway.sql +++ b/layers/waterway/waterway.sql @@ -8,60 +8,60 @@ $$ LANGUAGE SQL IMMUTABLE STRICT; -- etldoc: ne_110m_rivers_lake_centerlines -> waterway_z3 CREATE OR REPLACE VIEW waterway_z3 AS ( - SELECT geometry, 'river'::text AS class, NULL::text AS name, NULL::text AS name_en, NULL::text AS name_de, NULL::hstore AS tags, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, 'river'::text AS class, NULL::text AS name, NULL::text AS name_en, NULL::text AS name_de, NULL::hstore AS tags, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, NULL::boolean AS is_intermittent FROM ne_110m_rivers_lake_centerlines WHERE featurecla = 'River' ); -- etldoc: ne_50m_rivers_lake_centerlines -> waterway_z4 CREATE OR REPLACE VIEW waterway_z4 AS ( - SELECT geometry, 'river'::text AS class, NULL::text AS name, NULL::text AS name_en, NULL::text AS name_de, NULL::hstore AS tags, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, 'river'::text AS class, NULL::text AS name, NULL::text AS name_en, NULL::text AS name_de, NULL::hstore AS tags, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, NULL::boolean AS is_intermittent FROM ne_50m_rivers_lake_centerlines WHERE featurecla = 'River' ); -- etldoc: ne_10m_rivers_lake_centerlines -> waterway_z6 CREATE OR REPLACE VIEW waterway_z6 AS ( - SELECT geometry, 'river'::text AS class, NULL::text AS name, NULL::text AS name_en, NULL::text AS name_de, NULL::hstore AS tags, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, 'river'::text AS class, NULL::text AS name, NULL::text AS name_en, NULL::text AS name_de, NULL::hstore AS tags, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, NULL::boolean AS is_intermittent FROM ne_10m_rivers_lake_centerlines WHERE featurecla = 'River' ); -- etldoc: osm_important_waterway_linestring_gen3 -> waterway_z9 CREATE OR REPLACE VIEW waterway_z9 AS ( - SELECT geometry, 'river'::text AS class, name, name_en, name_de, tags, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, 'river'::text AS class, name, name_en, name_de, tags, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, NULL::boolean AS is_intermittent FROM osm_important_waterway_linestring_gen3 ); -- etldoc: osm_important_waterway_linestring_gen2 -> waterway_z10 CREATE OR REPLACE VIEW waterway_z10 AS ( - SELECT geometry, 'river'::text AS class, name, name_en, name_de, tags, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, 'river'::text AS class, name, name_en, name_de, tags, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, NULL::boolean AS is_intermittent FROM osm_important_waterway_linestring_gen2 ); -- etldoc:osm_important_waterway_linestring_gen1 -> waterway_z11 CREATE OR REPLACE VIEW waterway_z11 AS ( - SELECT geometry, 'river'::text AS class, name, name_en, name_de, tags, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel + SELECT geometry, 'river'::text AS class, name, name_en, name_de, tags, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, NULL::boolean AS is_intermittent FROM osm_important_waterway_linestring_gen1 ); -- etldoc: osm_waterway_linestring -> waterway_z12 CREATE OR REPLACE VIEW waterway_z12 AS ( - SELECT geometry, waterway::text AS class, name, name_en, name_de, tags, is_bridge, is_tunnel + SELECT geometry, waterway::text AS class, name, name_en, name_de, tags, is_bridge, is_tunnel, is_intermittent FROM osm_waterway_linestring WHERE waterway IN ('river', 'canal') ); -- etldoc: osm_waterway_linestring -> waterway_z13 CREATE OR REPLACE VIEW waterway_z13 AS ( - SELECT geometry, waterway::text AS class, name, name_en, name_de, tags, is_bridge, is_tunnel + SELECT geometry, waterway::text AS class, name, name_en, name_de, tags, is_bridge, is_tunnel, is_intermittent FROM osm_waterway_linestring WHERE waterway IN ('river', 'canal', 'stream', 'drain', 'ditch') ); -- etldoc: osm_waterway_linestring -> waterway_z14 CREATE OR REPLACE VIEW waterway_z14 AS ( - SELECT geometry, waterway::text AS class, name, name_en, name_de, tags, is_bridge, is_tunnel + SELECT geometry, waterway::text AS class, name, name_en, name_de, tags, is_bridge, is_tunnel, is_intermittent FROM osm_waterway_linestring ); @@ -69,12 +69,13 @@ CREATE OR REPLACE VIEW waterway_z14 AS ( -- etldoc: label="layer_waterway | z3 | z4-z5 | z6-8 | z9 | z10 | z11 | z12| z13| z14+" ]; CREATE OR REPLACE FUNCTION layer_waterway(bbox geometry, zoom_level int) -RETURNS TABLE(geometry geometry, class text, name text, name_en text, name_de text, brunnel text, tags hstore) AS $$ +RETURNS TABLE(geometry geometry, class text, name text, name_en text, name_de text, brunnel text, intermittent int, tags hstore) AS $$ SELECT geometry, class, NULLIF(name, '') AS name, COALESCE(NULLIF(name_en, ''), name) AS name_en, COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de, waterway_brunnel(is_bridge, is_tunnel) AS brunnel, + is_intermittent::int AS intermittent, tags FROM ( -- etldoc: waterway_z3 -> layer_waterway:z3 diff --git a/layers/waterway/waterway.yaml b/layers/waterway/waterway.yaml index d7d8727c..8c109000 100644 --- a/layers/waterway/waterway.yaml +++ b/layers/waterway/waterway.yaml @@ -1,7 +1,7 @@ layer: id: "waterway" description: | - OpenStreetMap [waterways](http://wiki.openstreetmap.org/wiki/Waterways) for higher zoom levels + OpenStreetMap [waterways](https://wiki.openstreetmap.org/wiki/Waterways) for higher zoom levels and Natural Earth rivers and lake centerlines for low zoom levels. Linestrings without a name or which are too short are filtered out at low zoom levels. Waterways do no not have a `subclass` field. @@ -27,9 +27,13 @@ layer: values: - bridge - tunnel + intermittent: + description: | + Mark with `1` if it is an [intermittent](http://wiki.openstreetmap.org/wiki/Key:intermittent) waterway. + values: [0, 1] datasource: geometry_field: geometry - query: (SELECT geometry, name, name_en, name_de, {name_languages}, class, brunnel FROM layer_waterway(!bbox!, z(!scale_denominator!))) AS t + query: (SELECT geometry, name, name_en, name_de, {name_languages}, class, brunnel, intermittent FROM layer_waterway(!bbox!, z(!scale_denominator!))) AS t schema: - ./update_waterway_linestring.sql - ./update_important_waterway.sql