komap вопросы по конвертору стилей mapcss->mapnik

Вопрос по конвертору mapcss->mapnik:
https://github.com/kothic/kothic

Не отрисовываются названия линий-отношений.

Это “баг”, или “фича”?

Отношение с тегами:
type=route
route=power
name=“имя линии”

стиль mapcss вида:
/* 35 кВ*/
way|z2-[power=line][voltage=35000],
way|z2-[power=line][voltage=35]
{color:blue; width:3;z-index: 20; -x-mapnik-layer: top;
text: name; text-position: line; text-color: #ffffff; font-family: DejaVu Sans Book; font-size:11; text-halo-radius: 1; text-halo-color: #404040}

Каких-то особых правил для подобных отношений нет
В результате линия отрисовывается верно, нужными цветами и толщиной, но название не подписывается. Не подписывается даже если линия входит только в одно отношение.

Хорошо бы конечно подписывать даже линии, входящие в несколько отношений. (несколькими строками)…

Разве в mapcss для этого используется не селектор relation (возможно в виде relation[…] > way)

Примеры:
https://github.com/search?q=relation+route+extension%3Amapcss&type=Code&ref=searchresults

(не касаясь неприменимости type=route для ЛЭП)

Что-то мне кажется, что komap нормально может обслужить только мультиполигоны, на всякие другие типы релейшнов рассчитывать не стоит.

Да, примеры глядел. Попробовал ещё.

Изначально, если просто писать:

/* 35 кВ*/
way|z2-[power=line][voltage=35000],
way|z2-[power=line][voltage=35]
{color:blue; width:3;z-index: 20; -x-mapnik-layer: top;
text: name; text-position: line; text-color: #ffffff; font-family: DejaVu Sans Book; font-size:11; text-halo-radius: 1; text-halo-color: #404040}

То пустые линии, входящие в отношение с тегами [type=route][route=power][power=line][voltage=35][name=имя линии] отображаются как надо (синие толстые линии), но без подписей на линии.

Простые же линии, не входящие в отношения, с полным набором тегов - рисуются так же толстыми синими линиями и к ним рисуются подписи из name=*.

Попробовал описать отношения в mapcss двумя способами:

/* 35 кВ*/
relation[type=route][route=power][voltage=35000] > way,
way|z2-[power=line][voltage=35000],
way|z2-[power=line][voltage=35]
{color:blue; width:3;z-index: 20; -x-mapnik-layer: top;
text: name; text-position: line; text-color: #ffffff; font-family: DejaVu Sans Book; font-size:11; text-halo-radius: 1; text-halo-color: #404040}

Конвертор ругнулся:

WARNING:mapcss.parser:unknown thing found: > 

Но что-то сконвертировал. В результате линия вообще не показывается никак.

Сделал иначе:

/* 35 кВ*/
relation[type=route][route=power][voltage=35000] way,
way|z2-[power=line][voltage=35000],
way|z2-[power=line][voltage=35]
{color:blue; width:3;z-index: 20; -x-mapnik-layer: top;
text: name; text-position: line; text-color: #ffffff; font-family: DejaVu Sans Book; font-size:11; text-halo-radius: 1; text-halo-color: #404040}

В результате конвертор не ругается, но линия тоже не показывается совсем…

А надо, чтобы обычные линии с тегами и пустые линии (без тегов), входящие в отношения с тегами, описывающими линию - рисовались и синим и подписывались названия. В идеале бы, конечно, подписывать несколько названий, в зависимости от того, каким отношениям принадлежит кусок линии… :slight_smile:

Поддерживаются только селекторы area, way, node, line, (и если повозиться с конфигурацией и данными, ele). Отношения поддержать не представляется возможным.

Если очень припирает, можно вспомнить, что osm2pgsql конвертирует relation type=route в мультилинию, перетаскивая из тегов только name в псевдотег route_name. Но лучше придумать схему тегирования без отношений.

Проблема в том, что на одной линии может быть несколько power=line с соответствующими именами, напряжениями и ещё ворохом тегов. И тут, как мне кажется, без отношений никуда.

Спасибо за наводку насчёт route_name! Буду тестировать. Пока вручную называл куски линий имя1/имя2, но это, конечно, костыли.

И ещё один момент.
Возможно ли выводить текст в виде прификса/постфикса к значению тега?

По умолчанию в подписи выводится в чистом виде значение указанного тега в моём случае (text:power_usage_percent), в результате на слой рисуется число. А хотелось бы рисовать ещё символ процента вконце числа. Возможно ли такое? В описании по mapcss не нашёл такого…

http://openstreetmap.ru/#zoom=19&lat=56.745007&lon=60.592221&marker=1&layer=S
имхо если несколькими разными способами описывать, то будет бред
дороги же не описываются кусок каждая полоса отдельный вей, а далее вся проезжая часть один вей и все теги тротуаров тоже в нем