From d595e494926ab347dd737e228e80ada6fb6bbe78 Mon Sep 17 00:00:00 2001 From: Famlam Date: Sun, 25 Jun 2023 23:46:01 +0200 Subject: [PATCH 1/3] (Attempt to) stop jumping markers Always use the oldest node (/relation/way if nodes don't exist) --- analysers/analyser_osmosis_wikipedia.py | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/analysers/analyser_osmosis_wikipedia.py b/analysers/analyser_osmosis_wikipedia.py index ff1bccca4..199e7ec41 100644 --- a/analysers/analyser_osmosis_wikipedia.py +++ b/analysers/analyser_osmosis_wikipedia.py @@ -26,14 +26,12 @@ sql10 = """ SELECT (array_agg(tid))[1:10], - ST_AsText(any_locate((array_agg(type))[1], (array_agg(id))[1])), + ST_AsText(any_locate(substring(MIN(tid), 1, 1), substring(MIN(tid), 2)::bigint)), w FROM (( SELECT tags->'wikipedia' AS w, - 'N' || id AS tid, - 'N' AS type, - id + 'N' || id AS tid FROM nodes WHERE @@ -41,14 +39,10 @@ tags?'wikipedia' AND NOT tags->'wikipedia' LIKE '%#%' AND NOT tags?| ARRAY['highway', 'railway', 'waterway', 'power', 'place', 'shop', 'network', 'operator'] - ORDER BY - id ) UNION ALL ( SELECT tags->'wikipedia' AS w, - 'W' || id AS tid, - 'W' AS type, - id + 'W' || id AS tid FROM ways WHERE @@ -56,14 +50,10 @@ tags?'wikipedia' AND NOT tags->'wikipedia' LIKE '%#%' AND NOT tags?| ARRAY['highway', 'railway', 'waterway', 'power', 'place', 'shop', 'network', 'operator'] - ORDER BY - id ) UNION ALL ( SELECT tags->'wikipedia' AS w, - 'R' || id AS tid, - 'R' AS type, - id + 'R' || id AS tid FROM relations WHERE @@ -72,8 +62,6 @@ NOT tags->'wikipedia' LIKE '%#%' AND NOT tags->'type' IN ('route', 'boundary') AND NOT tags?| ARRAY['highway', 'railway', 'waterway', 'power', 'place', 'shop', 'network', 'operator'] - ORDER BY - id )) AS t GROUP BY w From 1a46186d09e89ecd27e4e7b7558c7455b4ff9c8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Rodrigo?= Date: Fri, 14 Jul 2023 10:17:45 +0000 Subject: [PATCH 2/3] Keep older object in analyser_osmosis_wikipedia #1912 --- analysers/analyser_osmosis_wikipedia.py | 42 ++++++++++++++++++------- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/analysers/analyser_osmosis_wikipedia.py b/analysers/analyser_osmosis_wikipedia.py index 199e7ec41..8bb6838c0 100644 --- a/analysers/analyser_osmosis_wikipedia.py +++ b/analysers/analyser_osmosis_wikipedia.py @@ -24,14 +24,11 @@ from .Analyser_Osmosis import Analyser_Osmosis sql10 = """ -SELECT - (array_agg(tid))[1:10], - ST_AsText(any_locate(substring(MIN(tid), 1, 1), substring(MIN(tid), 2)::bigint)), - w -FROM (( +WITH t AS (( SELECT tags->'wikipedia' AS w, - 'N' || id AS tid + 'N' AS type, + id AS id FROM nodes WHERE @@ -39,10 +36,11 @@ tags?'wikipedia' AND NOT tags->'wikipedia' LIKE '%#%' AND NOT tags?| ARRAY['highway', 'railway', 'waterway', 'power', 'place', 'shop', 'network', 'operator'] -) UNION ALL ( + ) UNION ALL ( SELECT tags->'wikipedia' AS w, - 'W' || id AS tid + 'W' AS type, + id FROM ways WHERE @@ -50,10 +48,11 @@ tags?'wikipedia' AND NOT tags->'wikipedia' LIKE '%#%' AND NOT tags?| ARRAY['highway', 'railway', 'waterway', 'power', 'place', 'shop', 'network', 'operator'] -) UNION ALL ( + ) UNION ALL ( SELECT tags->'wikipedia' AS w, - 'R' || id AS tid + 'R' AS type, + id FROM relations WHERE @@ -62,9 +61,28 @@ NOT tags->'wikipedia' LIKE '%#%' AND NOT tags->'type' IN ('route', 'boundary') AND NOT tags?| ARRAY['highway', 'railway', 'waterway', 'power', 'place', 'shop', 'network', 'operator'] -)) AS t -GROUP BY +)), +b AS ( + SELECT + w, + first_value(type) OVER (PARTITION BY w ORDER BY t, id) || first_value(id) OVER (PARTITION BY w ORDER BY t, id) AS tid + FROM + t +) +SELECT + (array_agg(tid))[1:10], + ST_AsText( + any_locate( + substring(tid, 1, 1), + substring(tid, 2)::bigint + ) + ), w +FROM + b +GROUP BY + w, + tid HAVING count(*) > 1 """ From 6f2873ef56ec525145be743c8aebce011e481dd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Rodrigo?= Date: Sat, 15 Jul 2023 15:51:08 +0000 Subject: [PATCH 3/3] Fix array_agg type + id --- analysers/analyser_osmosis_wikipedia.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/analysers/analyser_osmosis_wikipedia.py b/analysers/analyser_osmosis_wikipedia.py index 8bb6838c0..18591d6a2 100644 --- a/analysers/analyser_osmosis_wikipedia.py +++ b/analysers/analyser_osmosis_wikipedia.py @@ -65,12 +65,14 @@ b AS ( SELECT w, - first_value(type) OVER (PARTITION BY w ORDER BY t, id) || first_value(id) OVER (PARTITION BY w ORDER BY t, id) AS tid + type, + id, + first_value(type) OVER (PARTITION BY w ORDER BY type, id) || first_value(id) OVER (PARTITION BY w ORDER BY type, id) AS tid FROM t ) SELECT - (array_agg(tid))[1:10], + (array_agg(type || id))[1:10], ST_AsText( any_locate( substring(tid, 1, 1),