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:
committed by
GitHub
parent
7f531c1dbb
commit
75d8c80228
@@ -60,17 +60,22 @@ BEGIN
|
||||
JOIN transportation_name.network_changes AS c ON
|
||||
r.osm_id = c.osm_id;
|
||||
|
||||
INSERT INTO osm_route_member (id, osm_id, network_type, concurrency_index)
|
||||
INSERT INTO osm_route_member (id, osm_id, network_type, concurrency_index, rank)
|
||||
SELECT
|
||||
id,
|
||||
osm_id,
|
||||
osm_route_member_network_type(network) 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
|
||||
WHEN network IN ('iwn', 'nwn', 'rwn') THEN 1
|
||||
WHEN network = 'lwn' THEN 2
|
||||
WHEN osmc_symbol || colour <> '' THEN 2
|
||||
END AS rank
|
||||
FROM osm_route_member rm
|
||||
WHERE rm.member IN
|
||||
(SELECT DISTINCT osm_id FROM transportation_name.network_changes)
|
||||
ON CONFLICT (id, osm_id) DO UPDATE SET concurrency_index = EXCLUDED.concurrency_index;
|
||||
|
||||
ON CONFLICT (id, osm_id) DO UPDATE SET concurrency_index = EXCLUDED.concurrency_index,
|
||||
rank = EXCLUDED.rank;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
@@ -84,16 +89,22 @@ CREATE INDEX IF NOT EXISTS osm_route_member_network_type_idx ON osm_route_member
|
||||
CREATE INDEX IF NOT EXISTS osm_highway_linestring_osm_id_idx ON osm_highway_linestring ("osm_id");
|
||||
CREATE INDEX IF NOT EXISTS osm_highway_linestring_gen_z11_osm_id_idx ON osm_highway_linestring_gen_z11 ("osm_id");
|
||||
|
||||
ALTER TABLE osm_route_member ADD COLUMN IF NOT EXISTS concurrency_index int;
|
||||
ALTER TABLE osm_route_member ADD COLUMN IF NOT EXISTS concurrency_index int,
|
||||
ADD COLUMN IF NOT EXISTS rank int;
|
||||
|
||||
-- One-time load of concurrency indexes; updates occur via trigger
|
||||
INSERT INTO osm_route_member (id, osm_id, concurrency_index)
|
||||
INSERT INTO osm_route_member (id, osm_id, concurrency_index, rank)
|
||||
SELECT
|
||||
id,
|
||||
osm_id,
|
||||
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
|
||||
WHEN network IN ('iwn', 'nwn', 'rwn') THEN 1
|
||||
WHEN network = 'lwn' THEN 2
|
||||
WHEN osmc_symbol || colour <> '' THEN 2
|
||||
END AS rank
|
||||
FROM osm_route_member
|
||||
ON CONFLICT (id, osm_id) DO UPDATE SET concurrency_index = EXCLUDED.concurrency_index;
|
||||
ON CONFLICT (id, osm_id) DO UPDATE SET concurrency_index = EXCLUDED.concurrency_index, rank = EXCLUDED.rank;
|
||||
|
||||
UPDATE osm_highway_linestring hl
|
||||
SET network = rm.network_type
|
||||
|
||||
Reference in New Issue
Block a user