Merge branch 'master' into zlw-riverine
|
@ -177,6 +177,7 @@ tables:
|
|||
- town
|
||||
- village
|
||||
- hamlet
|
||||
- borough
|
||||
- suburb
|
||||
- quarter
|
||||
- neighbourhood
|
||||
|
|
Przed Szerokość: | Wysokość: | Rozmiar: 53 KiB Po Szerokość: | Wysokość: | Rozmiar: 55 KiB |
|
@ -38,6 +38,7 @@ layer:
|
|||
- town
|
||||
- village
|
||||
- hamlet
|
||||
- borough
|
||||
- suburb
|
||||
- quarter
|
||||
- neighbourhood
|
||||
|
|
|
@ -82,7 +82,8 @@
|
|||
"island",
|
||||
"islet",
|
||||
"neighbourhood",
|
||||
"suburb"
|
||||
"suburb",
|
||||
"borough"
|
||||
]
|
||||
],
|
||||
"order": 193
|
||||
|
|
|
@ -4,7 +4,7 @@ $$
|
|||
PERFORM 'city_place'::regtype;
|
||||
EXCEPTION
|
||||
WHEN undefined_object THEN
|
||||
CREATE TYPE city_place AS enum ('city', 'town', 'village', 'hamlet', 'suburb', 'quarter', 'neighbourhood', 'isolated_dwelling');
|
||||
CREATE TYPE city_place AS enum ('city', 'town', 'village', 'hamlet', 'borough', 'suburb', 'quarter', 'neighbourhood', 'isolated_dwelling');
|
||||
END
|
||||
$$;
|
||||
|
||||
|
|
Przed Szerokość: | Wysokość: | Rozmiar: 538 KiB Po Szerokość: | Wysokość: | Rozmiar: 640 KiB |
|
@ -16,7 +16,7 @@ $$
|
|||
CREATE TYPE route_network_type AS enum (
|
||||
'us-interstate', 'us-highway', 'us-state',
|
||||
'ca-transcanada', 'ca-provincial-arterial', 'ca-provincial',
|
||||
'gb-motorway', 'gb-trunk'
|
||||
'gb-motorway', 'gb-trunk', 'gb-primary'
|
||||
);
|
||||
END
|
||||
$$;
|
||||
|
|
|
@ -1,23 +1,27 @@
|
|||
CREATE TABLE IF NOT EXISTS ne_10m_admin_0_bg_buffer AS
|
||||
CREATE TABLE IF NOT EXISTS ne_10m_admin_0_gb_buffer AS
|
||||
SELECT ST_Buffer(geometry, 10000)
|
||||
FROM ne_10m_admin_0_countries
|
||||
WHERE iso_a2 = 'GB';
|
||||
|
||||
-- etldoc: osm_route_member -> gbr_route_members_view
|
||||
CREATE OR REPLACE VIEW gbr_route_members_view AS
|
||||
SELECT 0,
|
||||
osm_id,
|
||||
substring(ref FROM E'^[AM][0-9AM()]+'),
|
||||
CASE WHEN highway = 'motorway' THEN 'omt-gb-motorway' ELSE 'omt-gb-trunk' END
|
||||
substring(ref FROM E'^[ABM][0-9ABM()]+'),
|
||||
-- See https://wiki.openstreetmap.org/wiki/Roads_in_the_United_Kingdom
|
||||
CASE WHEN highway = 'motorway' THEN 'omt-gb-motorway'
|
||||
WHEN highway = 'trunk' THEN 'omt-gb-trunk'
|
||||
WHEN highway IN ('primary','secondary') THEN 'omt-gb-primary' END AS network
|
||||
FROM osm_highway_linestring
|
||||
WHERE length(ref) > 0
|
||||
AND ST_Intersects(geometry, (SELECT * FROM ne_10m_admin_0_bg_buffer))
|
||||
AND highway IN ('motorway', 'trunk')
|
||||
WHERE length(ref) > 1
|
||||
AND ST_Intersects(geometry, (SELECT * FROM ne_10m_admin_0_gb_buffer))
|
||||
AND highway IN ('motorway', 'trunk', 'primary', 'secondary')
|
||||
;
|
||||
-- Create GBR relations (so we can use it in the same way as other relations)
|
||||
DELETE
|
||||
FROM osm_route_member
|
||||
WHERE network IN ('omt-gb-motorway', 'omt-gb-trunk');
|
||||
-- etldoc: osm_highway_linestring -> osm_route_member
|
||||
WHERE network IN ('omt-gb-motorway', 'omt-gb-trunk', 'omt-gb-primary');
|
||||
-- etldoc: gbr_route_members_view -> osm_route_member
|
||||
INSERT INTO osm_route_member (osm_id, member, ref, network)
|
||||
SELECT *
|
||||
FROM gbr_route_members_view;
|
||||
|
@ -43,6 +47,7 @@ SELECT CASE
|
|||
WHEN network LIKE 'CA:__' OR network LIKE 'CA:__:%' THEN 'ca-provincial'::route_network_type
|
||||
WHEN network = 'omt-gb-motorway' THEN 'gb-motorway'::route_network_type
|
||||
WHEN network = 'omt-gb-trunk' THEN 'gb-trunk'::route_network_type
|
||||
WHEN network = 'omt-gb-primary' THEN 'gb-primary'::route_network_type
|
||||
END;
|
||||
$$ LANGUAGE sql IMMUTABLE
|
||||
PARALLEL SAFE;
|
||||
|
@ -62,7 +67,7 @@ BEGIN
|
|||
FROM osm_route_member AS r
|
||||
USING
|
||||
transportation_name.network_changes AS c
|
||||
WHERE network IN ('omt-gb-motorway', 'omt-gb-trunk')
|
||||
WHERE network IN ('omt-gb-motorway', 'omt-gb-trunk', 'omt-gb-primary')
|
||||
AND r.osm_id = c.osm_id;
|
||||
|
||||
INSERT INTO osm_route_member (osm_id, member, ref, network)
|
||||
|
|
|
@ -32,6 +32,7 @@ layer:
|
|||
- ca-provincial
|
||||
- gb-motorway
|
||||
- gb-trunk
|
||||
- gb-primary
|
||||
- road (default)
|
||||
class:
|
||||
description: |
|
||||
|
|
|
@ -66,6 +66,9 @@ tables:
|
|||
type: string
|
||||
- name: tags
|
||||
type: hstore_tags
|
||||
- name: place
|
||||
key: place
|
||||
type: string
|
||||
- name: natural
|
||||
key: natural
|
||||
type: string
|
||||
|
|
Przed Szerokość: | Wysokość: | Rozmiar: 100 KiB Po Szerokość: | Wysokość: | Rozmiar: 109 KiB |
|
@ -21,6 +21,9 @@ tables:
|
|||
- name: place
|
||||
key: place
|
||||
type: string
|
||||
- name: natural
|
||||
key: natural
|
||||
type: string
|
||||
- name: rank
|
||||
key: rank
|
||||
type: integer
|
||||
|
@ -34,3 +37,6 @@ tables:
|
|||
place:
|
||||
- ocean
|
||||
- sea
|
||||
natural:
|
||||
- bay
|
||||
- strait
|
||||
|
|
Przed Szerokość: | Wysokość: | Rozmiar: 50 KiB Po Szerokość: | Wysokość: | Rozmiar: 57 KiB |
|
@ -2,14 +2,22 @@ DROP TRIGGER IF EXISTS trigger_delete_point ON osm_water_polygon;
|
|||
DROP TRIGGER IF EXISTS trigger_update_point ON osm_water_polygon;
|
||||
DROP TRIGGER IF EXISTS trigger_insert_point ON osm_water_polygon;
|
||||
|
||||
-- etldoc: osm_water_polygon -> osm_water_point_view
|
||||
-- etldoc: lake_centerline -> osm_water_point_view
|
||||
CREATE OR REPLACE VIEW osm_water_point_view AS
|
||||
SELECT wp.osm_id,
|
||||
ST_PointOnSurface(wp.geometry) AS geometry,
|
||||
wp.name,
|
||||
wp.name_en,
|
||||
wp.name_de,
|
||||
CASE
|
||||
WHEN "natural" = 'bay' THEN 'bay'
|
||||
WHEN place = 'sea' THEN 'sea'
|
||||
ELSE 'lake'
|
||||
END AS class,
|
||||
update_tags(wp.tags, ST_PointOnSurface(wp.geometry)) AS tags,
|
||||
ST_Area(wp.geometry) AS area,
|
||||
-- Area of the feature in square meters
|
||||
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
|
||||
|
@ -17,11 +25,25 @@ WHERE ll.osm_id IS NULL
|
|||
AND wp.name <> ''
|
||||
AND ST_IsValid(wp.geometry);
|
||||
|
||||
-- etldoc: osm_water_polygon -> osm_water_point
|
||||
-- etldoc: lake_centerline -> osm_water_point
|
||||
-- etldoc: osm_water_point_view -> osm_water_point_earth_view
|
||||
CREATE OR REPLACE VIEW osm_water_point_earth_view AS
|
||||
SELECT osm_id,
|
||||
geometry,
|
||||
name,
|
||||
name_en,
|
||||
name_de,
|
||||
class,
|
||||
tags,
|
||||
-- Percentage of the earth's surface covered by this feature (approximately)
|
||||
-- The constant below is 111,842^2 * 180 * 180, where 111,842 is the length of one degree of latitude at the equator in meters.
|
||||
area / (405279708033600 * COS(ST_Y(ST_Transform(geometry,4326))*PI()/180)) as earth_area,
|
||||
is_intermittent
|
||||
FROM osm_water_point_view;
|
||||
|
||||
-- etldoc: osm_water_point_earth_view -> osm_water_point
|
||||
CREATE TABLE IF NOT EXISTS osm_water_point AS
|
||||
SELECT *
|
||||
FROM osm_water_point_view;
|
||||
FROM osm_water_point_earth_view;
|
||||
DO
|
||||
$$
|
||||
BEGIN
|
||||
|
|
|
@ -46,12 +46,14 @@ SELECT
|
|||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
||||
tags,
|
||||
'lake'::text AS class,
|
||||
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))
|
||||
-- Show a label if a water feature covers at least 1/4 of a tile or z14+
|
||||
(tags->'place' IN ('sea', 'ocean') AND POWER(4,zoom_level) * earth_area > 0.25)
|
||||
OR (zoom_level BETWEEN 3 AND 13 AND POWER(4,zoom_level) * earth_area > 0.25)
|
||||
OR (zoom_level >= 14)
|
||||
)
|
||||
UNION ALL
|
||||
|
@ -65,15 +67,15 @@ SELECT
|
|||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
||||
tags,
|
||||
place::text AS class,
|
||||
COALESCE(NULLIF("natural",''), "place") AS class,
|
||||
is_intermittent::int AS intermittent
|
||||
FROM osm_marine_point
|
||||
WHERE geometry && bbox
|
||||
AND (
|
||||
place = 'ocean'
|
||||
OR (zoom_level >= "rank" AND "rank" IS NOT NULL)
|
||||
OR (zoom_level >= 8)
|
||||
);
|
||||
AND CASE
|
||||
WHEN place = 'ocean' THEN TRUE
|
||||
WHEN zoom_level >= "rank" AND "rank" IS NOT NULL THEN TRUE
|
||||
WHEN "natural" = 'bay' THEN zoom_level >= 13
|
||||
ELSE zoom_level >= 8 END;
|
||||
$$ LANGUAGE SQL STABLE
|
||||
-- STRICT
|
||||
PARALLEL SAFE;
|
||||
|
|
|
@ -14,9 +14,11 @@ layer:
|
|||
name_de: German name `name:de` if available, otherwise `name` or `name:en`.
|
||||
class:
|
||||
description: |
|
||||
Distinguish between `lake`, `ocean` and `sea`.
|
||||
Distinguish between `lake`, `ocean`, `bay`, `strait`, and `sea`.
|
||||
values:
|
||||
- lake
|
||||
- bay
|
||||
- strait
|
||||
- sea
|
||||
- ocean
|
||||
intermittent:
|
||||
|
|