From 9f7c24cd98669d7526f0d30148775f2d94fc5271 Mon Sep 17 00:00:00 2001 From: MaelReboux Date: Mon, 2 Apr 2018 18:15:28 +0200 Subject: [PATCH 1/5] #places --- database/layers_query.sql | 13 +++++++++++++ labels.mss | 3 ++- project.mml | 4 ++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/database/layers_query.sql b/database/layers_query.sql index ab307f2..631a673 100644 --- a/database/layers_query.sql +++ b/database/layers_query.sql @@ -255,7 +255,20 @@ WHERE SELECT osm_id, COALESCE(highway, '') as type, COALESCE(tags -> 'name:br'::text,'') as name, way FROM planet_osm_line WHERE highway IN ('motorway','motorway_link','trunk','trunk_link','primary','primary_link','secondary','secondary_link','tertiary','tertiary_link','road','path','track','service','footway','bridleway','cycleway','steps','pedestrian','living_street','unclassified','residential','raceway') +-- places +SELECT + osm_id, + COALESCE(tags -> 'name:br'::text) as name, + place as type, + admin_level, + COALESCE(tags->'is_capital'::text) as is_capital, + z_order, + way +FROM planet_osm_point +WHERE (tags -> 'name:br'::text IS NOT NULL) +ORDER BY z_order ; +SELECT osm_id, COALESCE(tags -> 'name:br'::text) as name, place as type, admin_level, COALESCE(tags->'is_capital'::text) as is_capital, z_order, way FROM planet_osm_point WHERE (tags -> 'name:br'::text IS NOT NULL) ORDER BY z_order -- ======================================================================= diff --git a/labels.mss b/labels.mss index a96fd24..83630c9 100644 --- a/labels.mss +++ b/labels.mss @@ -274,7 +274,8 @@ #place::small[type='hamlet'][zoom>=13], #place::small[type='locality'][zoom>=13], -#place::small[type='isolated_dwelling'][zoom>=13] { +#place::small[type='isolated_dwelling'][zoom>=13], +#place::small[type='farm'][zoom>=13] { text-name: '[name]'; text-face-name: @sans; text-placement: point; diff --git a/project.mml b/project.mml index d4802d3..1dea486 100644 --- a/project.mml +++ b/project.mml @@ -645,9 +645,9 @@ "user": "osm", "password": "osmbr", "dbname": "osm", - "table": "( SELECT osm_id, geometry, type, name_br AS name, z_order, is_capital, population FROM places WHERE name_br IS NOT NULL ORDER BY z_order ) AS data", + "table": "( SELECT osm_id, COALESCE(tags -> 'name:br'::text) as name, place as type, admin_level, COALESCE(tags->'is_capital'::text) as is_capital, z_order, way FROM planet_osm_point WHERE (tags -> 'name:br'::text IS NOT NULL) ORDER BY z_order ) AS data", "key_field": "osm_id", - "geometry_field": "geometry", + "geometry_field": "way", "asynchronous_request": "true", "max_async_connection": "4", "simplify_geometries": "true", From b45d80ed07a17c9144a2ddcc64a26a9f1e1e34c8 Mon Sep 17 00:00:00 2001 From: MaelReboux Date: Mon, 2 Apr 2018 18:19:21 +0200 Subject: [PATCH 2/5] #places : suburb + neighbourhood --- labels.mss | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/labels.mss b/labels.mss index 83630c9..3854c33 100644 --- a/labels.mss +++ b/labels.mss @@ -347,6 +347,40 @@ } } +#place::suburb[type='neighbourhood'][zoom>=13][zoom<=16] { + text-name: '[name]'; + text-face-name: @sans_bold_italic; + text-placement: point; + text-fill: @suburb_text; + text-size: 13; + text-halo-fill: @suburb_halo; + text-halo-radius: 2.0; + text-wrap-width: 50; + text-label-position-tolerance: 20; + text-allow-overlap: false; + + [zoom=13] { + text-size: 9; + text-character-spacing: 1; + text-line-spacing: 2; + } + [zoom=14] { + text-size: 11; + text-character-spacing: 1; + text-line-spacing: 2; + } + [zoom=15] { + text-size: 14; + text-character-spacing: 2; + text-line-spacing: 2; + } + [zoom=16] { + text-size: 16; + text-character-spacing: 4; + text-line-spacing: 2; + } +} + // ===================================================================== // POI LABELS From 321cb6fda8efb2cbacbd9b392db4d2ae67e25522 Mon Sep 17 00:00:00 2001 From: MaelReboux Date: Mon, 2 Apr 2018 18:21:14 +0200 Subject: [PATCH 3/5] #places : no more materialized view --- database/create_views.sql | 27 --------------------------- database/drop_views.sql | 1 - 2 files changed, 28 deletions(-) diff --git a/database/create_views.sql b/database/create_views.sql index bfa2373..4f39396 100644 --- a/database/create_views.sql +++ b/database/create_views.sql @@ -1,31 +1,4 @@ - --- places -CREATE MATERIALIZED VIEW places AS -(SELECT - osm_id, - name, - COALESCE(tags -> 'name:fr'::text) as name_fr, - COALESCE(tags -> 'name:br'::text) as name_br, -- breton - COALESCE(tags -> 'name:eu'::text) as name_eu, -- basque - COALESCE(tags -> 'name:oc'::text) as name_oc, -- occitan - COALESCE(tags -> 'name:gsw'::text) as name_gsw, -- alsacien - COALESCE(tags -> 'name:ca'::text) as name_ca, -- catalan - COALESCE(tags -> 'name:co'::text) as name_co, -- corse - place as type, - admin_level, - COALESCE(tags->'is_capital'::text) as is_capital, - z_order, - population::integer as population, - way as geometry - FROM planet_osm_point - WHERE - place in ('country','state','region','county','city','town','village','hamlet','suburb','locality','isolated_dwelling') - -- keep only integer values for population - AND (population ~ '^\d+$' OR population IS NULL) -) ; - - -- admin_places -- see http://dba.stackexchange.com/questions/104943/osm2pgsql-select-relation-member-by-role -- because planet_osm_rels.rels is not a hstore attribute diff --git a/database/drop_views.sql b/database/drop_views.sql index 43dffc6..9f2926f 100644 --- a/database/drop_views.sql +++ b/database/drop_views.sql @@ -1,4 +1,3 @@  DROP MATERIALIZED VIEW admin_boundaries; DROP MATERIALIZED VIEW admin_places; -DROP MATERIALIZED VIEW places; From cc59a6d8fb8342133e04c15c92489f417e5e0e1c Mon Sep 17 00:00:00 2001 From: MaelReboux Date: Mon, 2 Apr 2018 21:02:26 +0200 Subject: [PATCH 4/5] #admin_boundaries --- database/layers_query.sql | 15 ++++++++++++++- project.mml | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/database/layers_query.sql b/database/layers_query.sql index 631a673..de8cdb7 100644 --- a/database/layers_query.sql +++ b/database/layers_query.sql @@ -199,7 +199,20 @@ SELECT osm_id, way, aeroway AS type FROM planet_osm_line WHERE aeroway IN ('ap -- admin_boundaries -SELECT row_number() over() AS id, * FROM admin_boundaries ORDER BY admin_level DESC +SELECT + row_number() over() AS id, + b.way::geometry(LineString,3857) AS way, + admin_level::integer AS admin_level, + coalesce(b.tags->'maritime','no') AS maritime, + count(r.*)::integer AS nb, + string_agg(id::text,',') AS rels +FROM planet_osm_roads b +LEFT JOIN planet_osm_rels r ON (r.parts @> ARRAY[osm_id] AND r.members @> ARRAY['w' || osm_id] AND regexp_replace(r.tags::text,'[{}]',',') ~ format('(,admin_level,%s.*,boundary,administrative|,boundary,administrative.*,admin_level,%s,)',admin_level,admin_level)) +WHERE boundary='administrative' AND admin_level IS NOT NULL +GROUP BY 1,2,3 +ORDER BY admin_level DESC + +SELECT b.way::geometry(LineString,3857) AS way, admin_level::integer AS admin_level, coalesce(b.tags->'maritime','no') AS maritime, count(r.*)::integer AS nb, string_agg(id::text,',') AS rels FROM planet_osm_roads b LEFT JOIN planet_osm_rels r ON (r.parts @> ARRAY[osm_id] AND r.members @> ARRAY['w' || osm_id] AND regexp_replace(r.tags::text,'[{}]',',') ~ format('(,admin_level,%s.*,boundary,administrative|,boundary,administrative.*,admin_level,%s,)',admin_level,admin_level)) WHERE boundary='administrative' AND admin_level IS NOT NULL GROUP BY 1,2,3 ORDER BY admin_level DESC -- admin_places (vue matérialisée) diff --git a/project.mml b/project.mml index 1dea486..36de8ef 100644 --- a/project.mml +++ b/project.mml @@ -614,7 +614,7 @@ "user": "osm", "password": "osmbr", "dbname": "osm", - "table": "(SELECT row_number() over() AS id, * FROM admin_boundaries ORDER BY admin_level DESC) AS data", + "table": "( SELECT b.way::geometry(LineString,3857) AS way, admin_level::integer AS admin_level, coalesce(b.tags->'maritime','no') AS maritime, count(r.*)::integer AS nb, string_agg(id::text,',') AS rels FROM planet_osm_roads b LEFT JOIN planet_osm_rels r ON (r.parts @> ARRAY[osm_id] AND r.members @> ARRAY['w' || osm_id] AND regexp_replace(r.tags::text,'[{}]',',') ~ format('(,admin_level,%s.*,boundary,administrative|,boundary,administrative.*,admin_level,%s,)',admin_level,admin_level)) WHERE boundary='administrative' AND admin_level IS NOT NULL GROUP BY 1,2,3 ORDER BY admin_level DESC ) AS data", "key_field": "", "geometry_field": "way", "asynchronous_request": "true", From 71274b3cb09b9bdad788c58dd663996bebe745a3 Mon Sep 17 00:00:00 2001 From: MaelReboux Date: Mon, 2 Apr 2018 21:11:41 +0200 Subject: [PATCH 5/5] #admin_boundaries --- database/create_views.sql | 17 ----------------- database/drop_views.sql | 1 - 2 files changed, 18 deletions(-) diff --git a/database/create_views.sql b/database/create_views.sql index 4f39396..1ea8e0d 100644 --- a/database/create_views.sql +++ b/database/create_views.sql @@ -96,20 +96,3 @@ JOIN ( ) x USING(osm_id)); - - --- admin_boundaries -CREATE MATERIALIZED VIEW admin_boundaries AS -( - SELECT - b.way::geometry(LineString,3857) AS way, - admin_level::integer AS admin_level, - coalesce(b.tags->'maritime','no') AS maritime, - count(r.*)::integer AS nb, - string_agg(id::text,',') AS rels - FROM planet_osm_roads b - LEFT JOIN planet_osm_rels r ON (r.parts @> ARRAY[osm_id] AND r.members @> ARRAY['w' || osm_id] AND regexp_replace(r.tags::text,'[{}]',',') ~ format('(,admin_level,%s.*,boundary,administrative|,boundary,administrative.*,admin_level,%s,)',admin_level,admin_level)) - WHERE boundary='administrative' AND admin_level IS NOT NULL - GROUP BY 1,2,3 -); - diff --git a/database/drop_views.sql b/database/drop_views.sql index 9f2926f..b9d9262 100644 --- a/database/drop_views.sql +++ b/database/drop_views.sql @@ -1,3 +1,2 @@  -DROP MATERIALIZED VIEW admin_boundaries; DROP MATERIALIZED VIEW admin_places;