diff --git a/layers/mountain_peak/mountain_peak.sql b/layers/mountain_peak/mountain_peak.sql index cf91e01..4ef027d 100644 --- a/layers/mountain_peak/mountain_peak.sql +++ b/layers/mountain_peak/mountain_peak.sql @@ -55,9 +55,9 @@ SELECT FROM ( SELECT osm_id, geometry, - name, - COALESCE(NULLIF(name_en, ''), name) AS name_en, - COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de, + NULLIF(name, '') as name, + COALESCE(NULLIF(name_en, ''), NULLIF(name, '')) AS name_en, + COALESCE(NULLIF(name_de, ''), NULLIF(name, ''), NULLIF(name_en, '')) AS name_de, tags, substring(ele FROM E'^(-?\\d+)(\\D|$)')::int AS ele, round(substring(ele FROM E'^(-?\\d+)(\\D|$)')::int * 3.2808399)::int AS ele_ft, @@ -65,15 +65,17 @@ FROM ( row_number() OVER ( PARTITION BY LabelGrid(geometry, 100 * pixel_width) ORDER BY ( - substring(ele FROM E'^(-?\\d+)(\\D|$)')::int + + (CASE WHEN ele <> '' THEN substring(ele FROM E'^(-?\\d+)(\\D|$)')::int ELSE 0 END) + (CASE WHEN wikipedia <> '' THEN 10000 ELSE 0 END) + (CASE WHEN name <> '' THEN 10000 ELSE 0 END) ) DESC )::int AS "rank" FROM peak_point WHERE geometry && bbox - AND ele IS NOT NULL - AND ele ~ E'^-?\\d{1,4}(\\D|$)' + AND ( + (ele <> '' AND ele ~ E'^-?\\d{1,4}(\\D|$)') + OR name <> '' + ) ) AS ranked_peaks WHERE zoom_level >= 7 AND (rank <= 5 OR zoom_level >= 14)