Selective rendering of tracks and paths at z12-13 (#1190)

Closes #271

This PR adds track and path rendering at lower zooms than currently provided, and also achieves near-parity with openstreetmap-carto on track and path rendering. A previously-abandoned attempt, with significant discussion, was #1169.
This commit is contained in:
Brian Sperlongano
2021-11-18 11:35:34 -05:00
committed by GitHub
parent 7f531c1dbb
commit 75d8c80228
12 changed files with 207 additions and 95 deletions

View File

@@ -329,9 +329,12 @@ FROM (
-- etldoc: osm_highway_linestring -> layer_transportation:z12
-- etldoc: osm_highway_linestring -> layer_transportation:z13
-- etldoc: osm_highway_linestring -> layer_transportation:z14_
SELECT osm_id,
geometry,
highway,
-- etldoc: osm_transportation_name_network -> layer_transportation:z12
-- etldoc: osm_transportation_name_network -> layer_transportation:z13
-- etldoc: osm_transportation_name_network -> layer_transportation:z14_
SELECT hl.osm_id,
hl.geometry,
hl.highway,
construction,
network,
NULL AS railway,
@@ -347,25 +350,34 @@ FROM (
is_ramp,
is_oneway,
man_made,
layer,
CASE WHEN highway IN ('footway', 'steps') THEN "level" END AS "level",
CASE WHEN highway IN ('footway', 'steps') THEN indoor END AS indoor,
hl.layer,
CASE WHEN hl.highway IN ('footway', 'steps') THEN hl.level END AS level,
CASE WHEN hl.highway IN ('footway', 'steps') THEN hl.indoor END AS indoor,
bicycle,
foot,
horse,
mtb_scale,
surface_value(surface) AS "surface",
z_order
FROM osm_highway_linestring
hl.z_order
FROM osm_highway_linestring hl
LEFT OUTER JOIN osm_transportation_name_network n ON hl.osm_id = n.osm_id
WHERE NOT is_area
AND
CASE WHEN zoom_level = 12 THEN transportation_filter_z12(highway, construction)
CASE WHEN zoom_level = 12 THEN
CASE WHEN transportation_filter_z12(hl.highway, hl.construction) THEN TRUE
WHEN n.route_rank = 1 THEN TRUE
END
WHEN zoom_level = 13 THEN
CASE WHEN man_made='pier' THEN NOT ST_IsClosed(geometry)
ELSE transportation_filter_z13(highway, public_transport, construction, service)
CASE WHEN man_made='pier' THEN NOT ST_IsClosed(hl.geometry)
WHEN hl.highway = 'path' THEN (
hl.name <> ''
OR n.route_rank BETWEEN 1 AND 2
OR hl.sac_scale <> ''
)
ELSE transportation_filter_z13(hl.highway, public_transport, hl.construction, service)
END
WHEN zoom_level >= 14 THEN
CASE WHEN man_made='pier' THEN NOT ST_IsClosed(geometry)
CASE WHEN man_made='pier' THEN NOT ST_IsClosed(hl.geometry)
ELSE TRUE
END
END