Revamp water label display logic (#1457)
* At zooms 9-13, water labels will now be rendered for water features that are at least 0.25 tiles in size. This means that water features that are the same size as a 128x128 pixel square will get a point label. * Labels for large water features are now shown at the lowest zoom at which it's appropriate to show a label. * Bay and strait names (`natural=bay` and `natural=strait`) are included. * Large seas modeled as areas (e.g. Caspian Sea) render as `class=sea` rather than `class=lake`
This commit is contained in:
committed by
GitHub
parent
cd77b07e46
commit
af8c6883dd
@@ -46,12 +46,14 @@ SELECT
|
||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
||||
tags,
|
||||
'lake'::text AS class,
|
||||
class,
|
||||
is_intermittent::int AS intermittent
|
||||
FROM osm_water_point
|
||||
WHERE geometry && bbox
|
||||
AND (
|
||||
(zoom_level BETWEEN 9 AND 13 AND area > 70000 * 2 ^ (20 - zoom_level))
|
||||
-- Show a label if a water feature covers at least 1/4 of a tile or z14+
|
||||
(tags->'place' IN ('sea', 'ocean') AND POWER(4,zoom_level) * earth_area > 0.25)
|
||||
OR (zoom_level BETWEEN 3 AND 13 AND POWER(4,zoom_level) * earth_area > 0.25)
|
||||
OR (zoom_level >= 14)
|
||||
)
|
||||
UNION ALL
|
||||
@@ -65,15 +67,15 @@ SELECT
|
||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
||||
tags,
|
||||
place::text AS class,
|
||||
COALESCE(NULLIF("natural",''), "place") AS class,
|
||||
is_intermittent::int AS intermittent
|
||||
FROM osm_marine_point
|
||||
WHERE geometry && bbox
|
||||
AND (
|
||||
place = 'ocean'
|
||||
OR (zoom_level >= "rank" AND "rank" IS NOT NULL)
|
||||
OR (zoom_level >= 8)
|
||||
);
|
||||
AND CASE
|
||||
WHEN place = 'ocean' THEN TRUE
|
||||
WHEN zoom_level >= "rank" AND "rank" IS NOT NULL THEN TRUE
|
||||
WHEN "natural" = 'bay' THEN zoom_level >= 13
|
||||
ELSE zoom_level >= 8 END;
|
||||
$$ LANGUAGE SQL STABLE
|
||||
-- STRICT
|
||||
PARALLEL SAFE;
|
||||
|
||||
Reference in New Issue
Block a user