diff --git a/layers/poi/class.sql b/layers/poi/class.sql index 38c40cb..4224171 100644 --- a/layers/poi/class.sql +++ b/layers/poi/class.sql @@ -1,4 +1,4 @@ -CREATE OR REPLACE FUNCTION poi_class_rank(class text) +CREATE OR REPLACE FUNCTION poi_class_rank(class text, subclass text) RETURNS int AS $$ SELECT CASE class @@ -10,7 +10,11 @@ SELECT CASE class WHEN 'taxi' THEN 50 WHEN 'harbor' THEN 55 WHEN 'library' THEN 60 - WHEN 'bus' THEN 70 + WHEN 'bus' THEN + SELECT CASE subclass + WHEN 'bus_station' THEN 70 + ELSE 72 + END WHEN 'attraction' THEN 75 WHEN 'college' THEN 80 WHEN 'school' THEN 85 @@ -27,8 +31,8 @@ SELECT CASE class WHEN 'entrance' THEN 250 WHEN 'parking' THEN 300 WHEN 'car_parking' THEN 300 - WHEN 'charging_station' THEN 350 WHEN 'fuel' THEN 350 + WHEN 'charging_station' THEN 355 WHEN 'bicycle_parking' THEN 360 WHEN 'motorcycle_parking' THEN 360 WHEN 'bank' THEN 380 @@ -37,21 +41,21 @@ SELECT CASE class WHEN 'bar' THEN 450 WHEN 'cafe' THEN 450 WHEN 'grocery' THEN 450 - WHEN 'shop' THEN 500 - WHEN 'optician' THEN 500 - WHEN 'furniture' THEN 500 - WHEN 'jewelry' THEN 500 - WHEN 'toys' THEN 500 - WHEN 'newsagent' THEN 500 - WHEN 'paint' THEN 500 - WHEN 'electronics' THEN 500 - WHEN 'garden_centre' THEN 500 - WHEN 'community_centre' THEN 600 - WHEN 'mobile_phone' THEN 700 - WHEN 'shoes' THEN 700 - WHEN 'clothing_store' THEN 700 + WHEN 'community_centre' THEN 500 + WHEN 'shop' THEN 600 + WHEN 'optician' THEN 600 + WHEN 'furniture' THEN 600 + WHEN 'jewelry' THEN 600 + WHEN 'toys' THEN 600 + WHEN 'newsagent' THEN 600 + WHEN 'paint' THEN 600 + WHEN 'electronics' THEN 600 + WHEN 'garden_centre' THEN 600 + WHEN 'mobile_phone' THEN 600 + WHEN 'shoes' THEN 600 + WHEN 'clothing_store' THEN 600 + WHEN 'florist' THEN 600 WHEN 'laundry' THEN 700 - WHEN 'florist' THEN 750 WHEN 'dog_park' THEN 800 WHEN 'pitch' THEN 800 WHEN 'power_tower' then 900 diff --git a/layers/poi/layer.sql b/layers/poi/layer.sql index b6e6a1c..fe4d024 100644 --- a/layers/poi/layer.sql +++ b/layers/poi/layer.sql @@ -54,7 +54,7 @@ SELECT osm_id_hash AS osm_id, subclass, mapping_key, subtype - )) END ASC + ), subclass) END ASC )::int AS "rank" FROM ( -- Intermediate mapping for subtype and filtering out nameless industrial/office buildings @@ -118,9 +118,9 @@ FROM ( FROM osm_poi_polygon WHERE geometry && bbox AND zoom_level >= 14 - ) AS poi_union + ) AS poi_union_raw WHERE NOT (mapping_key = 'building' AND (subclass = 'office' OR subclass = 'industrial') AND coalesce(name, name_en, '') = '') -) +) AS poi_union ORDER BY "rank" $$ LANGUAGE SQL STABLE PARALLEL SAFE;