Hi all!
Another day, another curious problem…
I’m using this query to get the city and town names:
SELECT
way,
name,
score,
CASE
WHEN (place = 'city') THEN 1
ELSE 2
END as category,
round(ascii(md5(osm_id::text)) / 55) AS dir -- base direction factor on geometry to be consistent across metatiles
FROM
(SELECT
osm_id,
way,
place,
name,
(
(CASE
WHEN (tags->'population' ~ '^[0-9]{1,8}$') THEN (tags->'population')::INTEGER
WHEN (place = 'city') THEN 100000
WHEN (place = 'town') THEN 1000
ELSE 1
END)
*
(CASE
WHEN (tags @> 'capital=>4') THEN 2
ELSE 1
END)
) AS score
FROM planet_osm_point
WHERE place IN ('city', 'town')
AND name IS NOT NULL
AND NOT (tags @> 'capital=>yes')
) as p
ORDER BY score DESC, length(name) DESC, name
The query works, so I can see the city and town I’d like to display, but… some of them will not be displayed…
Example: Meißen, with a score of 28282 and category 2 will not be displayed, but Döbeln, with a score of 21365 and category 2 does.
The styles (copied from openstreetmap-carto) are:
#placenames-medium::high-importance {
[category = 1][zoom < 14] {
[zoom >= 4][zoom < 5][score >= 3000000],
[zoom >= 5][zoom < 8][score >= 400000] {
shield-file: url('symbols/place/place-4.svg');
shield-text-dx: 4;
shield-text-dy: 4;
shield-name: '[name]';
shield-face-name: @book-fonts;
shield-fill: @placenames;
shield-size: 11;
shield-wrap-width: 30; // 2.7 em
shield-line-spacing: -1.65; // -0.15 em
shield-margin: 7.7; // 0.7 em
shield-halo-fill: @standard-halo-fill;
shield-halo-radius: @standard-halo-radius * 1.5;
shield-placement-type: simple;
shield-placements: 'S,N,E,W';
[dir = 1] {
shield-placements: 'N,S,E,W';
}
shield-unlock-image: true;
[zoom >= 5] {
shield-wrap-width: 45; // 4.1 em
shield-line-spacing: -1.1; // -0.10 em
}
[zoom >= 6] {
shield-size: 12;
shield-wrap-width: 60; // 5.0 em
shield-line-spacing: -0.6; // -0.05 em
shield-margin: 8.4; // 0.7 em
shield-file: url('symbols/place/place-6.svg');
shield-text-dx: 5;
shield-text-dy: 5;
}
[zoom >= 7] {
shield-file: url('symbols/place/place-6-z7.svg');
}
}
[zoom >= 8][score >= 400000] {
text-name: '[name]';
text-face-name: @book-fonts;
text-fill: @placenames;
text-size: 13;
text-wrap-width: 65; // 5.0 em
text-line-spacing: -0.65; // -0.05 em
text-margin: 9.1; // 0.7 em
text-halo-fill: @standard-halo-fill;
text-halo-radius: @standard-halo-radius * 1.5;
[zoom >= 10] {
text-size: 14;
text-wrap-width: 70; // 5.0 em
text-line-spacing: -0.7; // -0.05 em
text-margin: 9.8; // 0.7 em
}
[zoom >= 11] {
text-size: 15;
text-wrap-width: 75; // 5.0 em
text-line-spacing: -0.75; // -0.05 em
text-margin: 10.5; // 0.7 em
}
}
}
}
#placenames-medium::medium-importance {
[category = 2][score > 20000][zoom < 15],
[category = 1][score < 400000][zoom < 15] {
[zoom >= 6][zoom < 8][score >= 70000],
[zoom >= 7][zoom < 8] {
shield-file: url('symbols/place/place-4.svg');
shield-text-dx: 4;
shield-text-dy: 4;
shield-name: "[name]";
shield-size: 10;
shield-fill: @placenames;
shield-face-name: @book-fonts;
shield-halo-fill: @standard-halo-fill;
shield-halo-radius: @standard-halo-radius * 1.5;
shield-wrap-width: 30; // 3.0 em
shield-line-spacing: -1.5; // -0.15 em
shield-margin: 7.0; // 0.7 em
shield-placement-type: simple;
shield-placements: 'S,N,E,W';
[dir = 1] {
shield-placements: 'N,S,E,W';
}
shield-unlock-image: true;
[zoom >= 7] {
shield-file: url('symbols/place/place-4-z7.svg');
}
}
[zoom >= 8] {
text-name: "[name]";
text-size: 10;
[score < 40000] {
text-size: 3;
}
[score < 80000] {
text-size: 5;
}
text-fill: @placenames;
text-face-name: @book-fonts;
text-halo-fill: @standard-halo-fill;
text-halo-radius: @standard-halo-radius * 1.5;
text-wrap-width: 40; // 4.0 em
text-line-spacing: -1.0; // -0.10 em
text-margin: 7.0; // 0.7 em
[zoom >= 9] {
text-size: 12;
text-wrap-width: 60; // 5.0 em
text-line-spacing: -0.6; // -0.05 em
text-margin: 8.4; // 0.7 em
[score < 40000] {
text-size: 5;
}
[score < 80000] {
text-size: 8;
}
}
[zoom >= 10] {
text-size: 13;
text-wrap-width: 65; // 5.0 em
text-line-spacing: -0.65; // -0.05 em
text-margin: 9.1; // 0.7 em
[score < 40000] {
text-size: 6;
}
[score < 80000] {
text-size: 9;
}
}
[zoom >= 11] {
text-size: 14;
text-wrap-width: 70; // 5.0 em
text-line-spacing: -0.7; // -0.05 em
text-margin: 9.8; // 0.7 em
[score < 40000] {
text-size: 8;
}
[score < 80000] {
text-size: 10;
}
}
[zoom >= 14] {
text-size: 15;
text-wrap-width: 75; // 5.0 em
text-line-spacing: -0.7; // -0.05 em
text-margin: 10.5; // 0.7 em
[score < 40000] {
text-size: 10;
}
[score < 80000] {
text-size: 12;
}
}
}
}
}
Any idea what do I do wrong?
Thanks
Luca