Merge branch 'master' into borough

pull/1470/head
Tomas Pohanka 2023-01-10 14:51:26 +01:00 zatwierdzone przez GitHub
commit 99e8204296
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
27 zmienionych plików z 1062 dodań i 299 usunięć

Wyświetl plik

@ -63,7 +63,7 @@
"iata" "iata"
] ]
], ],
"order": 181 "order": 190
} }
] ]
} }

Wyświetl plik

@ -157,7 +157,7 @@
"taxiway" "taxiway"
] ]
], ],
"order": 182 "order": 191
}, },
{ {
"id": "airport_gate", "id": "airport_gate",
@ -197,7 +197,7 @@
"gate" "gate"
] ]
], ],
"order": 183 "order": 192
} }
] ]
} }

Wyświetl plik

@ -61,7 +61,7 @@
0 0
] ]
], ],
"order": 137 "order": 146
}, },
{ {
"id": "boundary_2", "id": "boundary_2",
@ -114,7 +114,7 @@
0 0
] ]
], ],
"order": 138 "order": 147
}, },
{ {
"id": "boundary_2_disputed", "id": "boundary_2_disputed",
@ -171,7 +171,7 @@
0 0
] ]
], ],
"order": 139 "order": 148
}, },
{ {
"id": "boundary_2_disputed_maritime", "id": "boundary_2_disputed_maritime",
@ -228,7 +228,7 @@
1 1
] ]
], ],
"order": 140 "order": 149
}, },
{ {
"id": "boundary_2_maritime", "id": "boundary_2_maritime",
@ -281,7 +281,7 @@
1 1
] ]
], ],
"order": 141 "order": 150
} }
] ]
} }

Wyświetl plik

@ -34,7 +34,7 @@
"text-halo-color": "rgba(255,255,255,0.8)", "text-halo-color": "rgba(255,255,255,0.8)",
"text-halo-width": 1 "text-halo-width": 1
}, },
"order": 145 "order": 154
} }
] ]
} }

Wyświetl plik

@ -46,7 +46,7 @@
"cliff" "cliff"
] ]
], ],
"order": 188 "order": 197
} }
] ]
} }

Wyświetl plik

@ -105,7 +105,7 @@
2 2
] ]
], ],
"order": 186 "order": 195
} }
] ]
} }

Wyświetl plik

@ -86,7 +86,7 @@
"borough" "borough"
] ]
], ],
"order": 184 "order": 193
}, },
{ {
"id": "place_village", "id": "place_village",
@ -129,7 +129,7 @@
"village" "village"
] ]
], ],
"order": 189 "order": 198
}, },
{ {
"id": "place_town", "id": "place_town",
@ -177,7 +177,7 @@
"town" "town"
] ]
], ],
"order": 190 "order": 199
}, },
{ {
"id": "place_state", "id": "place_state",
@ -228,7 +228,7 @@
3 3
] ]
], ],
"order": 191 "order": 200
}, },
{ {
"id": "place_city", "id": "place_city",
@ -311,7 +311,7 @@
1 1
] ]
], ],
"order": 192 "order": 201
}, },
{ {
"id": "place_capital", "id": "place_capital",
@ -396,7 +396,7 @@
2 2
] ]
], ],
"order": 193 "order": 202
}, },
{ {
"id": "country_other", "id": "country_other",
@ -449,7 +449,7 @@
"iso_a2" "iso_a2"
] ]
], ],
"order": 194 "order": 203
}, },
{ {
"id": "country_3", "id": "country_3",
@ -518,7 +518,7 @@
"iso_a2" "iso_a2"
] ]
], ],
"order": 195 "order": 204
}, },
{ {
"id": "country_2", "id": "country_2",
@ -587,7 +587,7 @@
"iso_a2" "iso_a2"
] ]
], ],
"order": 196 "order": 205
}, },
{ {
"id": "country_1", "id": "country_1",
@ -656,7 +656,7 @@
"iso_a2" "iso_a2"
] ]
], ],
"order": 197 "order": 206
} }
] ]
} }

Wyświetl plik

@ -75,7 +75,7 @@
"artwork" "artwork"
] ]
], ],
"order": 146 "order": 155
}, },
{ {
"id": "poi_shop-z15", "id": "poi_shop-z15",
@ -139,7 +139,7 @@
"supermarket" "supermarket"
] ]
], ],
"order": 147 "order": 156
}, },
{ {
"id": "poi_waste", "id": "poi_waste",
@ -197,7 +197,7 @@
"toilets" "toilets"
] ]
], ],
"order": 148 "order": 157
}, },
{ {
"id": "poi_cemetery", "id": "poi_cemetery",
@ -253,7 +253,7 @@
"cemetery" "cemetery"
] ]
], ],
"order": 149 "order": 158
}, },
{ {
"id": "poi_school", "id": "poi_school",
@ -312,7 +312,7 @@
"school" "school"
] ]
], ],
"order": 150 "order": 159
}, },
{ {
"id": "poi_outdoor", "id": "poi_outdoor",
@ -367,7 +367,7 @@
"gate" "gate"
] ]
], ],
"order": 151 "order": 160
}, },
{ {
"id": "poi_parking", "id": "poi_parking",
@ -433,7 +433,7 @@
"parking" "parking"
] ]
], ],
"order": 152 "order": 161
}, },
{ {
"id": "poi_golf", "id": "poi_golf",
@ -488,7 +488,7 @@
"golf" "golf"
] ]
], ],
"order": 153 "order": 162
}, },
{ {
"id": "poi_sport", "id": "poi_sport",
@ -544,7 +544,7 @@
"water_park" "water_park"
] ]
], ],
"order": 154 "order": 163
}, },
{ {
"id": "poi_ferry", "id": "poi_ferry",
@ -604,7 +604,7 @@
"ferry_terminal" "ferry_terminal"
] ]
], ],
"order": 155 "order": 164
}, },
{ {
"id": "poi_food", "id": "poi_food",
@ -664,7 +664,7 @@
"restaurant" "restaurant"
] ]
], ],
"order": 156 "order": 165
}, },
{ {
"id": "poi_water", "id": "poi_water",
@ -719,7 +719,7 @@
"ice_rink" "ice_rink"
] ]
], ],
"order": 157 "order": 166
}, },
{ {
"id": "poi_public", "id": "poi_public",
@ -786,7 +786,7 @@
"books" "books"
] ]
], ],
"order": 158 "order": 167
}, },
{ {
"id": "poi_cultural", "id": "poi_cultural",
@ -855,7 +855,7 @@
"gallery" "gallery"
] ]
], ],
"order": 159 "order": 168
}, },
{ {
"id": "poi_attraction", "id": "poi_attraction",
@ -910,7 +910,7 @@
"attraction" "attraction"
] ]
], ],
"order": 160 "order": 169
}, },
{ {
"id": "poi_car", "id": "poi_car",
@ -979,7 +979,7 @@
"fuel" "fuel"
] ]
], ],
"order": 161 "order": 170
}, },
{ {
"id": "poi_health", "id": "poi_health",
@ -1037,7 +1037,7 @@
"veterinary" "veterinary"
] ]
], ],
"order": 162 "order": 171
}, },
{ {
"id": "poi_hospital", "id": "poi_hospital",
@ -1103,7 +1103,7 @@
"hospital" "hospital"
] ]
], ],
"order": 163 "order": 172
}, },
{ {
"id": "poi_campsite", "id": "poi_campsite",
@ -1158,7 +1158,7 @@
"campsite" "campsite"
] ]
], ],
"order": 164 "order": 173
}, },
{ {
"id": "poi_accommodation", "id": "poi_accommodation",
@ -1225,7 +1225,7 @@
"campsite" "campsite"
] ]
], ],
"order": 165 "order": 174
}, },
{ {
"id": "poi_place_of_worship", "id": "poi_place_of_worship",
@ -1289,7 +1289,7 @@
"place_of_worship" "place_of_worship"
] ]
], ],
"order": 166 "order": 175
}, },
{ {
"id": "poi_busstop", "id": "poi_busstop",
@ -1350,7 +1350,7 @@
"bus" "bus"
] ]
], ],
"order": 167 "order": 176
}, },
{ {
"id": "poi_bus", "id": "poi_bus",
@ -1410,7 +1410,7 @@
"bus_stop" "bus_stop"
] ]
], ],
"order": 168 "order": 177
}, },
{ {
"id": "poi_harbor", "id": "poi_harbor",
@ -1460,7 +1460,7 @@
"harbor" "harbor"
] ]
], ],
"order": 169 "order": 178
}, },
{ {
"id": "poi_mall", "id": "poi_mall",
@ -1519,7 +1519,7 @@
"mall" "mall"
] ]
], ],
"order": 170 "order": 179
}, },
{ {
"id": "poi_train", "id": "poi_train",
@ -1578,7 +1578,7 @@
"railway" "railway"
] ]
], ],
"order": 171 "order": 180
}, },
{ {
"id": "park-local", "id": "park-local",
@ -1638,7 +1638,7 @@
"park" "park"
] ]
], ],
"order": 185 "order": 194
}, },
{ {
"id": "poi_zoo", "id": "poi_zoo",
@ -1698,7 +1698,7 @@
"zoo" "zoo"
] ]
], ],
"order": 187 "order": 196
} }
] ]
} }

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 538 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 640 KiB

Wyświetl plik

@ -15,12 +15,23 @@ $$
WHEN undefined_object THEN WHEN undefined_object THEN
CREATE TYPE route_network_type AS enum ( CREATE TYPE route_network_type AS enum (
'us-interstate', 'us-highway', 'us-state', 'us-interstate', 'us-highway', 'us-state',
'ca-transcanada', 'ca-transcanada', 'ca-provincial-arterial', 'ca-provincial',
'gb-motorway', 'gb-trunk' 'gb-motorway', 'gb-trunk', 'gb-primary'
); );
END END
$$; $$;
-- Top-level national route networks that should display at the lowest zooms
CREATE OR REPLACE FUNCTION osm_national_network(network text) RETURNS boolean AS
$$
SELECT network <> '' AND network IN (
-- Canada
'ca-transcanada', 'ca-provincial-arterial',
-- United States
'us-interstate');
$$ LANGUAGE sql IMMUTABLE
PARALLEL SAFE;
DO DO
$$ $$
BEGIN BEGIN

Wyświetl plik

@ -1,28 +1,32 @@
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) SELECT ST_Buffer(geometry, 10000)
FROM ne_10m_admin_0_countries FROM ne_10m_admin_0_countries
WHERE iso_a2 = 'GB'; WHERE iso_a2 = 'GB';
-- etldoc: osm_route_member -> gbr_route_members_view
CREATE OR REPLACE VIEW gbr_route_members_view AS CREATE OR REPLACE VIEW gbr_route_members_view AS
SELECT 0, SELECT 0,
osm_id, osm_id,
substring(ref FROM E'^[AM][0-9AM()]+'), substring(ref FROM E'^[ABM][0-9ABM()]+'),
CASE WHEN highway = 'motorway' THEN 'omt-gb-motorway' ELSE 'omt-gb-trunk' END -- 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 FROM osm_highway_linestring
WHERE length(ref) > 0 WHERE length(ref) > 1
AND ST_Intersects(geometry, (SELECT * FROM ne_10m_admin_0_bg_buffer)) AND ST_Intersects(geometry, (SELECT * FROM ne_10m_admin_0_gb_buffer))
AND highway IN ('motorway', 'trunk') AND highway IN ('motorway', 'trunk', 'primary', 'secondary')
; ;
-- Create GBR relations (so we can use it in the same way as other relations) -- Create GBR relations (so we can use it in the same way as other relations)
DELETE DELETE
FROM osm_route_member FROM osm_route_member
WHERE network IN ('omt-gb-motorway', 'omt-gb-trunk'); WHERE network IN ('omt-gb-motorway', 'omt-gb-trunk', 'omt-gb-primary');
-- etldoc: osm_highway_linestring -> osm_route_member -- etldoc: gbr_route_members_view -> osm_route_member
INSERT INTO osm_route_member (osm_id, member, ref, network) INSERT INTO osm_route_member (osm_id, member, ref, network)
SELECT * SELECT *
FROM gbr_route_members_view; FROM gbr_route_members_view;
CREATE OR REPLACE FUNCTION osm_route_member_network_type(network text) RETURNS route_network_type AS CREATE OR REPLACE FUNCTION osm_route_member_network_type(network text, ref text) RETURNS route_network_type AS
$$ $$
SELECT CASE SELECT CASE
WHEN network = 'US:I' THEN 'us-interstate'::route_network_type WHEN network = 'US:I' THEN 'us-interstate'::route_network_type
@ -30,8 +34,20 @@ SELECT CASE
WHEN network LIKE 'US:__' THEN 'us-state'::route_network_type WHEN network LIKE 'US:__' THEN 'us-state'::route_network_type
-- https://en.wikipedia.org/wiki/Trans-Canada_Highway -- https://en.wikipedia.org/wiki/Trans-Canada_Highway
WHEN network LIKE 'CA:transcanada%' THEN 'ca-transcanada'::route_network_type WHEN network LIKE 'CA:transcanada%' THEN 'ca-transcanada'::route_network_type
WHEN network = 'CA:QC:A' THEN 'ca-provincial-arterial'::route_network_type
WHEN network = 'CA:ON:primary' THEN
CASE
WHEN ref LIKE '4__' THEN 'ca-provincial-arterial'::route_network_type
WHEN ref = 'QEW' THEN 'ca-provincial-arterial'::route_network_type
ELSE 'ca-provincial-arterial'::route_network_type
END
WHEN network = 'CA:MB:PTH' AND ref = '75' THEN 'ca-provincial-arterial'::route_network_type
WHEN network = 'CA:AB:primary' AND ref IN ('2','3','4') THEN 'ca-provincial-arterial'::route_network_type
WHEN network = 'CA:BC' AND ref IN ('3','5','99') THEN 'ca-provincial-arterial'::route_network_type
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-motorway' THEN 'gb-motorway'::route_network_type
WHEN network = 'omt-gb-trunk' THEN 'gb-trunk'::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; END;
$$ LANGUAGE sql IMMUTABLE $$ LANGUAGE sql IMMUTABLE
PARALLEL SAFE; PARALLEL SAFE;
@ -39,9 +55,9 @@ $$ LANGUAGE sql IMMUTABLE
-- etldoc: osm_route_member -> osm_route_member -- etldoc: osm_route_member -> osm_route_member
-- see http://wiki.openstreetmap.org/wiki/Relation:route#Road_routes -- see http://wiki.openstreetmap.org/wiki/Relation:route#Road_routes
UPDATE osm_route_member UPDATE osm_route_member
SET network_type = osm_route_member_network_type(network) SET network_type = osm_route_member_network_type(network, ref)
WHERE network != '' WHERE network != ''
AND network_type IS DISTINCT FROM osm_route_member_network_type(network) AND network_type IS DISTINCT FROM osm_route_member_network_type(network, ref)
; ;
CREATE OR REPLACE FUNCTION update_osm_route_member() RETURNS void AS CREATE OR REPLACE FUNCTION update_osm_route_member() RETURNS void AS
@ -51,7 +67,7 @@ BEGIN
FROM osm_route_member AS r FROM osm_route_member AS r
USING USING
transportation_name.network_changes AS c 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; AND r.osm_id = c.osm_id;
INSERT INTO osm_route_member (osm_id, member, ref, network) INSERT INTO osm_route_member (osm_id, member, ref, network)
@ -64,7 +80,7 @@ BEGIN
SELECT SELECT
id, id,
osm_id, osm_id,
osm_route_member_network_type(network) AS network_type, osm_route_member_network_type(network, ref) AS network_type,
DENSE_RANK() over (PARTITION BY member ORDER BY network_type, network, LENGTH(ref), ref) AS concurrency_index, DENSE_RANK() over (PARTITION BY member ORDER BY network_type, network, LENGTH(ref), ref) AS concurrency_index,
CASE CASE
WHEN network IN ('iwn', 'nwn', 'rwn') THEN 1 WHEN network IN ('iwn', 'nwn', 'rwn') THEN 1
@ -80,7 +96,7 @@ BEGIN
END; END;
$$ LANGUAGE plpgsql; $$ LANGUAGE plpgsql;
CREATE INDEX IF NOT EXISTS osm_route_member_network_idx ON osm_route_member ("network"); CREATE INDEX IF NOT EXISTS osm_route_member_network_idx ON osm_route_member ("network", "ref");
CREATE INDEX IF NOT EXISTS osm_route_member_member_idx ON osm_route_member ("member"); CREATE INDEX IF NOT EXISTS osm_route_member_member_idx ON osm_route_member ("member");
CREATE INDEX IF NOT EXISTS osm_route_member_name_idx ON osm_route_member ("name"); CREATE INDEX IF NOT EXISTS osm_route_member_name_idx ON osm_route_member ("name");
CREATE INDEX IF NOT EXISTS osm_route_member_ref_idx ON osm_route_member ("ref"); CREATE INDEX IF NOT EXISTS osm_route_member_ref_idx ON osm_route_member ("ref");

Wyświetl plik

@ -331,9 +331,7 @@ BEGIN
(highway = 'motorway' (highway = 'motorway'
OR construction = 'motorway' OR construction = 'motorway'
-- Allow trunk roads that are part of a nation's most important route network to show at z4 -- Allow trunk roads that are part of a nation's most important route network to show at z4
OR highway = 'trunk' AND OR (highway = 'trunk' AND osm_national_network(network))
network <> '' AND
network IN ('ca-transcanada','us-interstate')
) AND ) AND
ST_Length(geometry) > 500; ST_Length(geometry) > 500;
@ -356,8 +354,8 @@ BEGIN
FROM osm_transportation_merge_linestring_gen_z5 FROM osm_transportation_merge_linestring_gen_z5
WHERE WHERE
(update_id IS NULL OR id = update_id) AND (update_id IS NULL OR id = update_id) AND
osm_national_network(network) AND
-- Current view: national-importance motorways and trunks -- Current view: national-importance motorways and trunks
network IN ('ca-transcanada','us-interstate') AND
ST_Length(geometry) > 1000; ST_Length(geometry) > 1000;
END; END;
$$ LANGUAGE plpgsql; $$ LANGUAGE plpgsql;

Wyświetl plik

@ -34,7 +34,7 @@
"ferry" "ferry"
] ]
], ],
"order": 175 "order": 184
}, },
{ {
"id": "road_label", "id": "road_label",
@ -81,7 +81,7 @@
"ferry" "ferry"
] ]
], ],
"order": 176 "order": 185
}, },
{ {
"id": "highway-shield-tertiary", "id": "highway-shield-tertiary",
@ -160,7 +160,7 @@
"ref" "ref"
] ]
], ],
"order": 177 "order": 186
}, },
{ {
"id": "highway-shield-secondary", "id": "highway-shield-secondary",
@ -239,7 +239,7 @@
"ref" "ref"
] ]
], ],
"order": 178 "order": 187
}, },
{ {
"id": "highway-shield-primary", "id": "highway-shield-primary",
@ -318,7 +318,7 @@
"ref" "ref"
] ]
], ],
"order": 179 "order": 188
}, },
{ {
"id": "highway-shield-motorway", "id": "highway-shield-motorway",
@ -400,7 +400,7 @@
"ref" "ref"
] ]
], ],
"order": 180 "order": 189
} }
] ]
} }

Wyświetl plik

@ -28,8 +28,11 @@ layer:
- us-highway - us-highway
- us-state - us-state
- ca-transcanada - ca-transcanada
- ca-provincial-arterial
- ca-provincial
- gb-motorway - gb-motorway
- gb-trunk - gb-trunk
- gb-primary
- road (default) - road (default)
class: class:
description: | description: |

Wyświetl plik

@ -66,6 +66,9 @@ tables:
type: string type: string
- name: tags - name: tags
type: hstore_tags type: hstore_tags
- name: place
key: place
type: string
- name: natural - name: natural
key: natural key: natural
type: string type: string
@ -104,4 +107,7 @@ tables:
- dock - dock
water: water:
- river - river
- pond
- basin
- wastewater
type: polygon type: polygon

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 36 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 41 KiB

Wyświetl plik

@ -26,7 +26,8 @@ layer:
description: | description: |
All water polygons from [OpenStreetMapData](http://osmdata.openstreetmap.de/) have the class `ocean`. All water polygons from [OpenStreetMapData](http://osmdata.openstreetmap.de/) have the class `ocean`.
Water bodies with the [`water=river`](http://wiki.openstreetmap.org/wiki/Tag:water=river) tag are classified as river. Wet and dry docks Water bodies with the [`water=river`](http://wiki.openstreetmap.org/wiki/Tag:water=river) tag are classified as river. Wet and dry docks
tagged [`waterway=dock`](http://wiki.openstreetmap.org/wiki/Tag:waterway=dock) are classified as a `dock`. tagged [`waterway=dock`](http://wiki.openstreetmap.org/wiki/Tag:waterway=dock) are classified as a `dock`.
Various minor waterbodies are classified as a `pond`.
Swimming pools tagged [`leisure=swimming_pool`](https://wiki.openstreetmap.org/wiki/Tag:leisure=swimming_pool) are classified as a `swimming_pool` Swimming pools tagged [`leisure=swimming_pool`](https://wiki.openstreetmap.org/wiki/Tag:leisure=swimming_pool) are classified as a `swimming_pool`
All other water bodies are classified as `lake`. All other water bodies are classified as `lake`.
values: values:
@ -34,6 +35,8 @@ layer:
waterway: 'dock' waterway: 'dock'
river: river:
water: 'river' water: 'river'
pond:
water: ['pond', 'basin', 'wastewater']
lake: lake:
ocean: ocean:
swimming_pool: swimming_pool:

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 100 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 109 KiB

Wyświetl plik

@ -21,6 +21,9 @@ tables:
- name: place - name: place
key: place key: place
type: string type: string
- name: natural
key: natural
type: string
- name: rank - name: rank
key: rank key: rank
type: integer type: integer
@ -34,3 +37,6 @@ tables:
place: place:
- ocean - ocean
- sea - sea
natural:
- bay
- strait

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 41 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 52 KiB

Wyświetl plik

@ -31,7 +31,7 @@
"LineString" "LineString"
] ]
], ],
"order": 143 "order": 152
}, },
{ {
"id": "water_name_point", "id": "water_name_point",
@ -68,7 +68,7 @@
"ocean" "ocean"
] ]
], ],
"order": 144 "order": 153
} }
] ]
} }

Wyświetl plik

@ -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_update_point ON osm_water_polygon;
DROP TRIGGER IF EXISTS trigger_insert_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 CREATE OR REPLACE VIEW osm_water_point_view AS
SELECT wp.osm_id, SELECT wp.osm_id,
ST_PointOnSurface(wp.geometry) AS geometry, ST_PointOnSurface(wp.geometry) AS geometry,
wp.name, wp.name,
wp.name_en, wp.name_en,
wp.name_de, 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, 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 wp.is_intermittent
FROM osm_water_polygon AS wp FROM osm_water_polygon AS wp
LEFT JOIN lake_centerline ll ON wp.osm_id = ll.osm_id 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 wp.name <> ''
AND ST_IsValid(wp.geometry); AND ST_IsValid(wp.geometry);
-- etldoc: osm_water_polygon -> osm_water_point -- etldoc: osm_water_point_view -> osm_water_point_earth_view
-- etldoc: lake_centerline -> osm_water_point 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 CREATE TABLE IF NOT EXISTS osm_water_point AS
SELECT * SELECT *
FROM osm_water_point_view; FROM osm_water_point_earth_view;
DO DO
$$ $$
BEGIN BEGIN

Wyświetl plik

@ -46,12 +46,14 @@ SELECT
COALESCE(NULLIF(name_en, ''), name) AS name_en, COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de, COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
tags, tags,
'lake'::text AS class, class,
is_intermittent::int AS intermittent is_intermittent::int AS intermittent
FROM osm_water_point FROM osm_water_point
WHERE geometry && bbox WHERE geometry && bbox
AND ( 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) OR (zoom_level >= 14)
) )
UNION ALL UNION ALL
@ -65,15 +67,15 @@ SELECT
COALESCE(NULLIF(name_en, ''), name) AS name_en, COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de, COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
tags, tags,
place::text AS class, COALESCE(NULLIF("natural",''), "place") AS class,
is_intermittent::int AS intermittent is_intermittent::int AS intermittent
FROM osm_marine_point FROM osm_marine_point
WHERE geometry && bbox WHERE geometry && bbox
AND ( AND CASE
place = 'ocean' WHEN place = 'ocean' THEN TRUE
OR (zoom_level >= "rank" AND "rank" IS NOT NULL) WHEN zoom_level >= "rank" AND "rank" IS NOT NULL THEN TRUE
OR (zoom_level >= 8) WHEN "natural" = 'bay' THEN zoom_level >= 13
); ELSE zoom_level >= 8 END;
$$ LANGUAGE SQL STABLE $$ LANGUAGE SQL STABLE
-- STRICT -- STRICT
PARALLEL SAFE; PARALLEL SAFE;

Wyświetl plik

@ -14,9 +14,11 @@ layer:
name_de: German name `name:de` if available, otherwise `name` or `name:en`. name_de: German name `name:de` if available, otherwise `name` or `name:en`.
class: class:
description: | description: |
Distinguish between `lake`, `ocean` and `sea`. Distinguish between `lake`, `ocean`, `bay`, `strait`, and `sea`.
values: values:
- lake - lake
- bay
- strait
- sea - sea
- ocean - ocean
intermittent: intermittent:

Wyświetl plik

@ -282,7 +282,7 @@
"bridge" "bridge"
] ]
], ],
"order": 103 "order": 111
}, },
{ {
"id": "waterway-bridge", "id": "waterway-bridge",
@ -322,7 +322,7 @@
"bridge" "bridge"
] ]
], ],
"order": 104 "order": 112
}, },
{ {
"id": "water_way_name", "id": "water_way_name",
@ -367,7 +367,7 @@
"LineString" "LineString"
] ]
], ],
"order": 142 "order": 151
} }
] ]
} }

Wyświetl plik

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 921 B

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 921 B