Add OSM ID to the lakes (#1383)

This PR adding OSM ID to the lakes

OSM lakes are used from zoom 6
From zoom 0 to zoom 5 are used Natural Earth lakes. 
  - There is a new joining mat. view (`match_osm_ne_id`) contains which Natural Earth ID should convert to OSM ID. This logic is used to keep a consistent ID between switching between NE (zooms 0 - 5) and OSM (zooms 6 - 12). For smaller areas (not the whole planet), where are not available OSM lakes, the NE lakes keep their NE ID.
  - There are also switch the final views to the mat. views - this should slightly increase performance (get rid of multipolygons).
  - FIX typo for zooms 0 - 3 (`lakes` instead of `lake`).
pull/1385/head
Tomas Pohanka 2022-05-05 14:26:57 +02:00 zatwierdzone przez GitHub
rodzic ef9a68b19a
commit 51751b5b78
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
2 zmienionych plików z 171 dodań i 55 usunięć

Wyświetl plik

@ -19,12 +19,71 @@ $$ LANGUAGE SQL IMMUTABLE
STRICT
PARALLEL SAFE;
-- Add ne_id for missing ne_50m_lakes.
UPDATE ne_50m_lakes SET ne_id = ne_10m_lakes.ne_id
FROM ne_50m_lakes lakes
LEFT JOIN ne_10m_lakes USING (wikidataid)
WHERE ne_50m_lakes.wikidataid = ne_10m_lakes.wikidataid
AND ne_50m_lakes.ne_id = 0;
-- Update ne_110_lakes ne_id where two lakes (Lake Onega) have identical attributes.
-- New ne_id is taken from ne_50m_lakes
UPDATE ne_110m_lakes SET ne_id = 1159126421
WHERE ne_id = 1159113251
AND ST_Area(geometry) < 10000000000;
-- Get matching osm id for natural earth id.
DROP MATERIALIZED VIEW IF EXISTS match_osm_ne_id CASCADE;
CREATE MATERIALIZED VIEW match_osm_ne_id AS
(
WITH name_match AS
(
-- Distinct on keeps just the first occurence -> order by 'area_ratio DESC'.
SELECT DISTINCT ON (ne.ne_id)
ne.ne_id,
osm.osm_id,
(ST_Area(ST_Intersection(ne.geometry, osm.geometry))/ST_Area(ne.geometry)) AS area_ratio
FROM ne_10m_lakes ne, osm_water_polygon_gen_z6 osm
WHERE ne.name = osm.name
AND ST_Intersects(ne.geometry, osm.geometry)
ORDER BY ne_id,
area_ratio DESC
),
-- Add lakes which are not match by name, but intersects.
-- Duplicity solves 'DISTICT ON' with 'area_ratio'.
geom_match AS
(SELECT DISTINCT ON (ne.ne_id)
ne.ne_id,
osm.osm_id,
(ST_Area(ST_Intersection(ne.geometry, osm.geometry))/ST_Area(ne.geometry)) AS area_ratio
FROM ne_10m_lakes ne, osm_water_polygon_gen_z6 osm
WHERE ST_Intersects(ne.geometry, osm.geometry)
AND ne.ne_id NOT IN
( SELECT ne_id
FROM name_match
)
ORDER BY ne_id,
area_ratio DESC
)
SELECT ne_id,
osm_id
FROM name_match
UNION
SELECT ne_id,
osm_id
FROM geom_match
);
-- ne_10m_ocean
-- etldoc: ne_10m_ocean -> ne_10m_ocean_gen_z5
DROP MATERIALIZED VIEW IF EXISTS ne_10m_ocean_gen_z5 CASCADE;
CREATE MATERIALIZED VIEW ne_10m_ocean_gen_z5 AS
(
SELECT ST_Simplify(geometry, ZRes(7)) AS geometry,
SELECT NULL::integer AS id,
(ST_Dump(ST_Simplify(geometry, ZRes(7)))).geom AS geometry,
'ocean'::text AS class,
NULL::boolean AS is_intermittent,
NULL::boolean AS is_bridge,
@ -38,13 +97,16 @@ CREATE INDEX IF NOT EXISTS ne_10m_ocean_gen_z5_idx ON ne_10m_ocean_gen_z5 USING
DROP MATERIALIZED VIEW IF EXISTS ne_10m_lakes_gen_z5 CASCADE;
CREATE MATERIALIZED VIEW ne_10m_lakes_gen_z5 AS
(
SELECT ogc_fid,
ST_MakeValid(ST_Simplify(geometry, ZRes(7))) AS geometry,
SELECT COALESCE(osm.osm_id, ne_id) AS id,
-- Union fixing e.g. Lake Huron and Georgian Bay duplicity
(ST_Dump(ST_MakeValid(ST_Simplify(ST_Union(geometry), ZRes(7))))).geom AS geometry,
'lake'::text AS class,
NULL::boolean AS is_intermittent,
NULL::boolean AS is_bridge,
NULL::boolean AS is_tunnel
FROM ne_10m_lakes
LEFT JOIN match_osm_ne_id osm USING (ne_id)
GROUP BY COALESCE(osm.osm_id, ne_id), is_intermittent, is_bridge, is_tunnel
) /* DELAY_MATERIALIZED_VIEW_CREATION */ ;
CREATE INDEX IF NOT EXISTS ne_10m_lakes_gen_z5_idx ON ne_10m_lakes_gen_z5 USING gist (geometry);
@ -52,8 +114,8 @@ CREATE INDEX IF NOT EXISTS ne_10m_lakes_gen_z5_idx ON ne_10m_lakes_gen_z5 USING
DROP MATERIALIZED VIEW IF EXISTS ne_10m_lakes_gen_z4 CASCADE;
CREATE MATERIALIZED VIEW ne_10m_lakes_gen_z4 AS
(
SELECT ogc_fid,
ST_MakeValid(ST_Simplify(geometry, ZRes(6))) AS geometry,
SELECT id,
(ST_Dump(ST_MakeValid(ST_Simplify(geometry, ZRes(6))))).geom AS geometry,
class,
is_intermittent,
is_bridge,
@ -67,7 +129,8 @@ CREATE INDEX IF NOT EXISTS ne_10m_lakes_gen_z4_idx ON ne_10m_lakes_gen_z4 USING
DROP MATERIALIZED VIEW IF EXISTS ne_50m_ocean_gen_z4 CASCADE;
CREATE MATERIALIZED VIEW ne_50m_ocean_gen_z4 AS
(
SELECT ST_Simplify(geometry, ZRes(6)) AS geometry,
SELECT NULL::integer AS id,
(ST_Dump(ST_Simplify(geometry, ZRes(6)))).geom AS geometry,
'ocean'::text AS class,
NULL::boolean AS is_intermittent,
NULL::boolean AS is_bridge,
@ -80,7 +143,8 @@ CREATE INDEX IF NOT EXISTS ne_50m_ocean_gen_z4_idx ON ne_50m_ocean_gen_z4 USING
DROP MATERIALIZED VIEW IF EXISTS ne_50m_ocean_gen_z3 CASCADE;
CREATE MATERIALIZED VIEW ne_50m_ocean_gen_z3 AS
(
SELECT ST_Simplify(geometry, ZRes(5)) AS geometry,
SELECT id,
ST_Simplify(geometry, ZRes(5)) AS geometry,
class,
is_intermittent,
is_bridge,
@ -93,7 +157,8 @@ CREATE INDEX IF NOT EXISTS ne_50m_ocean_gen_z3_idx ON ne_50m_ocean_gen_z3 USING
DROP MATERIALIZED VIEW IF EXISTS ne_50m_ocean_gen_z2 CASCADE;
CREATE MATERIALIZED VIEW ne_50m_ocean_gen_z2 AS
(
SELECT ST_Simplify(geometry, ZRes(4)) AS geometry,
SELECT id,
ST_Simplify(geometry, ZRes(4)) AS geometry,
class,
is_intermittent,
is_bridge,
@ -107,13 +172,14 @@ CREATE INDEX IF NOT EXISTS ne_50m_ocean_gen_z2_idx ON ne_50m_ocean_gen_z2 USING
DROP MATERIALIZED VIEW IF EXISTS ne_50m_lakes_gen_z3 CASCADE;
CREATE MATERIALIZED VIEW ne_50m_lakes_gen_z3 AS
(
SELECT ogc_fid,
ST_MakeValid(ST_Simplify(geometry, ZRes(5))) AS geometry,
'lakes'::text AS class,
SELECT COALESCE(osm.osm_id, ne_id) AS id,
(ST_Dump(ST_MakeValid(ST_Simplify(geometry, ZRes(5))))).geom AS geometry,
'lake'::text AS class,
NULL::boolean AS is_intermittent,
NULL::boolean AS is_bridge,
NULL::boolean AS is_tunnel
FROM ne_50m_lakes
LEFT JOIN match_osm_ne_id osm USING (ne_id)
) /* DELAY_MATERIALIZED_VIEW_CREATION */ ;
CREATE INDEX IF NOT EXISTS ne_50m_lakes_gen_z3_idx ON ne_50m_lakes_gen_z3 USING gist (geometry);
@ -121,8 +187,8 @@ CREATE INDEX IF NOT EXISTS ne_50m_lakes_gen_z3_idx ON ne_50m_lakes_gen_z3 USING
DROP MATERIALIZED VIEW IF EXISTS ne_50m_lakes_gen_z2 CASCADE;
CREATE MATERIALIZED VIEW ne_50m_lakes_gen_z2 AS
(
SELECT ogc_fid,
ST_MakeValid(ST_Simplify(geometry, ZRes(4))) AS geometry,
SELECT id,
(ST_Dump(ST_MakeValid(ST_Simplify(geometry, ZRes(4))))).geom AS geometry,
class,
is_intermittent,
is_bridge,
@ -136,7 +202,8 @@ CREATE INDEX IF NOT EXISTS ne_50m_lakes_gen_z2_idx ON ne_50m_lakes_gen_z2 USING
DROP MATERIALIZED VIEW IF EXISTS ne_110m_ocean_gen_z1 CASCADE;
CREATE MATERIALIZED VIEW ne_110m_ocean_gen_z1 AS
(
SELECT ST_Simplify(geometry, ZRes(3)) AS geometry,
SELECT NULL::integer AS id,
ST_Simplify(geometry, ZRes(3)) AS geometry,
'ocean'::text AS class,
NULL::boolean AS is_intermittent,
NULL::boolean AS is_bridge,
@ -149,7 +216,8 @@ CREATE INDEX IF NOT EXISTS ne_110m_ocean_gen_z1_idx ON ne_110m_ocean_gen_z1 USIN
DROP MATERIALIZED VIEW IF EXISTS ne_110m_ocean_gen_z0 CASCADE;
CREATE MATERIALIZED VIEW ne_110m_ocean_gen_z0 AS
(
SELECT ST_Simplify(geometry, ZRes(2)) AS geometry,
SELECT id,
ST_Simplify(geometry, ZRes(2)) AS geometry,
class,
is_intermittent,
is_bridge,
@ -164,13 +232,14 @@ CREATE INDEX IF NOT EXISTS ne_110m_ocean_gen_z0_idx ON ne_110m_ocean_gen_z0 USIN
DROP MATERIALIZED VIEW IF EXISTS ne_110m_lakes_gen_z1 CASCADE;
CREATE MATERIALIZED VIEW ne_110m_lakes_gen_z1 AS
(
SELECT ogc_fid,
ST_Simplify(geometry, ZRes(3)) AS geometry,
'lakes'::text AS class,
SELECT COALESCE(osm.osm_id, ne_id) AS id,
(ST_Dump(ST_Simplify(geometry, ZRes(3)))).geom AS geometry,
'lake'::text AS class,
NULL::boolean AS is_intermittent,
NULL::boolean AS is_bridge,
NULL::boolean AS is_tunnel
FROM ne_110m_lakes
LEFT JOIN match_osm_ne_id osm USING (ne_id)
) /* DELAY_MATERIALIZED_VIEW_CREATION */ ;
CREATE INDEX IF NOT EXISTS ne_110m_lakes_gen_z1_idx ON ne_110m_lakes_gen_z1 USING gist (geometry);
@ -178,8 +247,8 @@ CREATE INDEX IF NOT EXISTS ne_110m_lakes_gen_z1_idx ON ne_110m_lakes_gen_z1 USIN
DROP MATERIALIZED VIEW IF EXISTS ne_110m_lakes_gen_z0 CASCADE;
CREATE MATERIALIZED VIEW ne_110m_lakes_gen_z0 AS
(
SELECT ogc_fid,
ST_Simplify(geometry, ZRes(2)) AS geometry,
SELECT id,
(ST_Dump(ST_Simplify(geometry, ZRes(2)))).geom AS geometry,
class,
is_intermittent,
is_bridge,
@ -188,11 +257,19 @@ FROM ne_110m_lakes_gen_z1
) /* DELAY_MATERIALIZED_VIEW_CREATION */ ;
CREATE INDEX IF NOT EXISTS ne_110m_lakes_gen_z0_idx ON ne_110m_lakes_gen_z0 USING gist (geometry);
DROP MATERIALIZED VIEW IF EXISTS water_z6;
DROP MATERIALIZED VIEW IF EXISTS water_z7;
DROP MATERIALIZED VIEW IF EXISTS water_z8;
DROP MATERIALIZED VIEW IF EXISTS water_z9;
DROP MATERIALIZED VIEW IF EXISTS water_z10;
DROP MATERIALIZED VIEW IF EXISTS water_z11;
DROP MATERIALIZED VIEW IF EXISTS water_z12;
CREATE OR REPLACE VIEW water_z0 AS
(
-- etldoc: ne_110m_ocean_gen_z0 -> water_z0
SELECT geometry,
SELECT id,
geometry,
class,
is_intermittent,
is_bridge,
@ -200,7 +277,8 @@ SELECT geometry,
FROM ne_110m_ocean_gen_z0
UNION ALL
-- etldoc: ne_110m_lakes_gen_z0 -> water_z0
SELECT geometry,
SELECT id,
geometry,
class,
is_intermittent,
is_bridge,
@ -211,7 +289,8 @@ FROM ne_110m_lakes_gen_z0
CREATE OR REPLACE VIEW water_z1 AS
(
-- etldoc: ne_110m_ocean_gen_z1 -> water_z1
SELECT geometry,
SELECT id,
geometry,
class,
is_intermittent,
is_bridge,
@ -219,7 +298,8 @@ SELECT geometry,
FROM ne_110m_ocean_gen_z1
UNION ALL
-- etldoc: ne_110m_lakes_gen_z1 -> water_z1
SELECT geometry,
SELECT id,
geometry,
class,
is_intermittent,
is_bridge,
@ -230,7 +310,8 @@ FROM ne_110m_lakes_gen_z1
CREATE OR REPLACE VIEW water_z2 AS
(
-- etldoc: ne_50m_ocean_gen_z2 -> water_z2
SELECT geometry,
SELECT id,
geometry,
class,
is_intermittent,
is_bridge,
@ -238,7 +319,8 @@ SELECT geometry,
FROM ne_50m_ocean_gen_z2
UNION ALL
-- etldoc: ne_50m_lakes_gen_z2 -> water_z2
SELECT geometry,
SELECT id,
geometry,
class,
is_intermittent,
is_bridge,
@ -249,7 +331,8 @@ FROM ne_50m_lakes_gen_z2
CREATE OR REPLACE VIEW water_z3 AS
(
-- etldoc: ne_50m_ocean_gen_z3 -> water_z3
SELECT geometry,
SELECT id,
geometry,
class,
is_intermittent,
is_bridge,
@ -257,7 +340,8 @@ SELECT geometry,
FROM ne_50m_ocean_gen_z3
UNION ALL
-- etldoc: ne_50m_lakes_gen_z3 -> water_z3
SELECT geometry,
SELECT id,
geometry,
class,
is_intermittent,
is_bridge,
@ -268,7 +352,8 @@ FROM ne_50m_lakes_gen_z3
CREATE OR REPLACE VIEW water_z4 AS
(
-- etldoc: ne_50m_ocean_gen_z4 -> water_z4
SELECT geometry,
SELECT id,
geometry,
class,
is_intermittent,
is_bridge,
@ -276,7 +361,8 @@ SELECT geometry,
FROM ne_50m_ocean_gen_z4
UNION ALL
-- etldoc: ne_10m_lakes_gen_z4 -> water_z4
SELECT geometry,
SELECT id,
geometry,
class,
is_intermittent,
is_bridge,
@ -284,10 +370,12 @@ SELECT geometry,
FROM ne_10m_lakes_gen_z4
);
CREATE OR REPLACE VIEW water_z5 AS
(
-- etldoc: ne_10m_ocean_gen_z5 -> water_z5
SELECT geometry,
SELECT id,
geometry,
class,
is_intermittent,
is_bridge,
@ -295,7 +383,8 @@ SELECT geometry,
FROM ne_10m_ocean_gen_z5
UNION ALL
-- etldoc: ne_10m_lakes_gen_z5 -> water_z5
SELECT geometry,
SELECT id,
geometry,
class,
is_intermittent,
is_bridge,
@ -303,10 +392,11 @@ SELECT geometry,
FROM ne_10m_lakes_gen_z5
);
CREATE OR REPLACE VIEW water_z6 AS
CREATE MATERIALIZED VIEW water_z6 AS
(
-- etldoc: osm_ocean_polygon_gen_z6 -> water_z6
SELECT geometry,
SELECT NULL::integer AS id,
(ST_Dump(geometry)).geom AS geometry,
'ocean'::text AS class,
NULL::boolean AS is_intermittent,
NULL::boolean AS is_bridge,
@ -314,7 +404,8 @@ SELECT geometry,
FROM osm_ocean_polygon_gen_z6
UNION ALL
-- etldoc: osm_water_polygon_gen_z6 -> water_z6
SELECT geometry,
SELECT osm_id AS id,
(ST_Dump(geometry)).geom AS geometry,
water_class(waterway, water) AS class,
is_intermittent,
NULL::boolean AS is_bridge,
@ -322,11 +413,13 @@ SELECT geometry,
FROM osm_water_polygon_gen_z6
WHERE "natural" != 'bay'
);
CREATE INDEX ON water_z6 USING gist(geometry);
CREATE OR REPLACE VIEW water_z7 AS
CREATE MATERIALIZED VIEW water_z7 AS
(
-- etldoc: osm_ocean_polygon_gen_z7 -> water_z7
SELECT geometry,
SELECT NULL::integer AS id,
(ST_Dump(geometry)).geom AS geometry,
'ocean'::text AS class,
NULL::boolean AS is_intermittent,
NULL::boolean AS is_bridge,
@ -334,7 +427,8 @@ SELECT geometry,
FROM osm_ocean_polygon_gen_z7
UNION ALL
-- etldoc: osm_water_polygon_gen_z7 -> water_z7
SELECT geometry,
SELECT osm_id AS id,
(ST_Dump(geometry)).geom AS geometry,
water_class(waterway, water) AS class,
is_intermittent,
NULL::boolean AS is_bridge,
@ -342,11 +436,13 @@ SELECT geometry,
FROM osm_water_polygon_gen_z7
WHERE "natural" != 'bay'
);
CREATE INDEX ON water_z7 USING gist(geometry);
CREATE OR REPLACE VIEW water_z8 AS
CREATE MATERIALIZED VIEW water_z8 AS
(
-- etldoc: osm_ocean_polygon_gen_z8 -> water_z8
SELECT geometry,
SELECT NULL::integer AS id,
(ST_Dump(geometry)).geom AS geometry,
'ocean'::text AS class,
NULL::boolean AS is_intermittent,
NULL::boolean AS is_bridge,
@ -354,7 +450,8 @@ SELECT geometry,
FROM osm_ocean_polygon_gen_z8
UNION ALL
-- etldoc: osm_water_polygon_gen_z8 -> water_z8
SELECT geometry,
SELECT osm_id AS id,
(ST_Dump(geometry)).geom AS geometry,
water_class(waterway, water) AS class,
is_intermittent,
NULL::boolean AS is_bridge,
@ -362,11 +459,13 @@ SELECT geometry,
FROM osm_water_polygon_gen_z8
WHERE "natural" != 'bay'
);
CREATE INDEX ON water_z8 USING gist(geometry);
CREATE OR REPLACE VIEW water_z9 AS
CREATE MATERIALIZED VIEW water_z9 AS
(
-- etldoc: osm_ocean_polygon_gen_z9 -> water_z9
SELECT geometry,
SELECT NULL::integer AS id,
(ST_Dump(geometry)).geom AS geometry,
'ocean'::text AS class,
NULL::boolean AS is_intermittent,
NULL::boolean AS is_bridge,
@ -374,7 +473,8 @@ SELECT geometry,
FROM osm_ocean_polygon_gen_z9
UNION ALL
-- etldoc: osm_water_polygon_gen_z9 -> water_z9
SELECT geometry,
SELECT osm_id AS id,
(ST_Dump(geometry)).geom AS geometry,
water_class(waterway, water) AS class,
is_intermittent,
NULL::boolean AS is_bridge,
@ -382,11 +482,13 @@ SELECT geometry,
FROM osm_water_polygon_gen_z9
WHERE "natural" != 'bay'
);
CREATE INDEX ON water_z9 USING gist(geometry);
CREATE OR REPLACE VIEW water_z10 AS
CREATE MATERIALIZED VIEW water_z10 AS
(
-- etldoc: osm_ocean_polygon_gen_z10 -> water_z10
SELECT geometry,
SELECT NULL::integer AS id,
(ST_Dump(geometry)).geom AS geometry,
'ocean'::text AS class,
NULL::boolean AS is_intermittent,
NULL::boolean AS is_bridge,
@ -394,7 +496,8 @@ SELECT geometry,
FROM osm_ocean_polygon_gen_z10
UNION ALL
-- etldoc: osm_water_polygon_gen_z10 -> water_z10
SELECT geometry,
SELECT osm_id AS id,
(ST_Dump(geometry)).geom AS geometry,
water_class(waterway, water) AS class,
is_intermittent,
NULL::boolean AS is_bridge,
@ -402,11 +505,13 @@ SELECT geometry,
FROM osm_water_polygon_gen_z10
WHERE "natural" != 'bay'
);
CREATE INDEX ON water_z10 USING gist(geometry);
CREATE OR REPLACE VIEW water_z11 AS
CREATE MATERIALIZED VIEW water_z11 AS
(
-- etldoc: osm_ocean_polygon_gen_z11 -> water_z11
SELECT geometry,
SELECT NULL::integer AS id,
(ST_Dump(geometry)).geom AS geometry,
'ocean'::text AS class,
NULL::boolean AS is_intermittent,
NULL::boolean AS is_bridge,
@ -414,7 +519,8 @@ SELECT geometry,
FROM osm_ocean_polygon_gen_z11
UNION ALL
-- etldoc: osm_water_polygon_gen_z11 -> water_z11
SELECT geometry,
SELECT osm_id AS id,
(ST_Dump(geometry)).geom AS geometry,
water_class(waterway, water) AS class,
is_intermittent,
NULL::boolean AS is_bridge,
@ -422,11 +528,13 @@ SELECT geometry,
FROM osm_water_polygon_gen_z11
WHERE "natural" != 'bay'
);
CREATE INDEX ON water_z11 USING gist(geometry);
CREATE OR REPLACE VIEW water_z12 AS
CREATE MATERIALIZED VIEW water_z12 AS
(
-- etldoc: osm_ocean_polygon_union -> water_z12
SELECT geometry,
SELECT NULL::integer AS id,
(ST_Dump(geometry)).geom AS geometry,
'ocean'::text AS class,
NULL::boolean AS is_intermittent,
NULL::boolean AS is_bridge,
@ -434,7 +542,8 @@ SELECT geometry,
FROM osm_ocean_polygon_union
UNION ALL
-- etldoc: osm_water_polygon -> water_z12
SELECT geometry,
SELECT osm_id AS id,
(ST_Dump(geometry)).geom AS geometry,
water_class(waterway, water) AS class,
is_intermittent,
is_bridge,
@ -442,6 +551,7 @@ SELECT geometry,
FROM osm_water_polygon
WHERE "natural" != 'bay'
);
CREATE INDEX ON water_z12 USING gist(geometry);
-- etldoc: layer_water [shape=record fillcolor=lightpink, style="rounded,filled",
-- etldoc: label="layer_water |<z0> z0|<z1>z1|<z2>z2|<z3>z3 |<z4> z4|<z5>z5|<z6>z6|<z7>z7| <z8> z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12+" ] ;
@ -449,6 +559,7 @@ WHERE "natural" != 'bay'
CREATE OR REPLACE FUNCTION layer_water(bbox geometry, zoom_level int)
RETURNS TABLE
(
id bigint,
geometry geometry,
class text,
brunnel text,
@ -456,7 +567,8 @@ CREATE OR REPLACE FUNCTION layer_water(bbox geometry, zoom_level int)
)
AS
$$
SELECT geometry,
SELECT id,
geometry,
class::text,
waterway_brunnel(is_bridge, is_tunnel) AS brunnel,
is_intermittent::int AS intermittent

Wyświetl plik

@ -12,6 +12,10 @@ layer:
This however can lead to less rendering options in clients since these boundaries show up. So you might not be
able to use border styling for ocean water features.
fields:
id:
description: |
From zoom 6 are taken OSM IDs. Up to zoom 5 there are used Natural Earth lakes, where are propagated the OSM IDs insted of Natural Earth IDs.
For smaller area then planet, NE lakes keep their Natural Earth IDs.
class:
description: |
All water polygons from [OpenStreetMapData](http://osmdata.openstreetmap.de/) have the class `ocean`.
@ -39,7 +43,7 @@ layer:
- tunnel
buffer_size: 4
datasource:
query: (SELECT geometry, class, intermittent, brunnel FROM layer_water(!bbox!, z(!scale_denominator!))) AS t
query: (SELECT id, geometry, class, intermittent, brunnel FROM layer_water(!bbox!, z(!scale_denominator!))) AS t
schema:
- ./update_water.sql
- ./water.sql