Попытался сменить тип проекции в настройках проекта, т.е. рендерить тайлы не в дефолтном меркаторе, а, например Lambert Conical. В настройках проекта (файл mml) звменил строку на
При открытии проекта выскакивает исключение. Индексы у данных удалял, не помогает.
Вопрос: поддерживаются ли проекции PROJ4 и кастомные через строку как выше, или только гугломеркатор ? Имеются в виду не провайдеры данных (там богатый выбор проекций) а именно о рендере, тайлах для slippy map.
Обычно тайлы для slippy map определены для гугломеркатора.
Другие проекции возможны, но требуют как минимум соответствующей настройки на стороне тайлового сервиса и на клиенте.
У вас накопилось довольно много вопросов. Давайте разберем их по порядку.
Пост №1
Понятия node, way, relation в Мапсерфере нет. Исключительно ОСМовские типы данных конвертируются в геометрические объекты типа Point, Linestring, Polygon и т.д. Реализация CartoCSS совместима с той, что определена в Tilemill, поэтому присутствует возможность фильтровать данные по типу используя мапниковский синтаксис
[‘mapnik::geometry_type’ = 1]
В настоящий момент реализованна поддержка только тех геометрических преобразований, которые определены в спецификации CartoCSS, т.е. line-simplify, polygon-simplify, line-offset и т.д.
В следующей версии Мапрсерфера появится возможность определять геом. преобразования через line-geometry-transformation: “GeometryTransformations.MBRLongestAxis([geom_field])” с любым уровнем вложенности.
На сегодняшний день, в фильтрах CartoCSS выражения поддерживаются довольно скудно. Однако, значения текстового поля могут задаваться используя синтаксис указанный на приведенной вами странице.
Расширение возможностей фильтров, например [“Math.Abs([fieldName])” > 0] будет добавлено в следующем релизе.
Такой функции пока нет, но она появится. Это можно будет сделать примерно так landuse[“GeometryTransformations.ViewTransformation([geom], [ViewTransformation]).Area” > 2000]
{
text-size: 12;
}
или используя площадь объекта в метрах landuse[“[geom].Area” > 2000000]
{
text-size: 12;
}
В том билде, что доступен сейчас для скачивания этой возможности нет.
При оформлении текста (проверено для point и line) выяснилось следующее поведение параметра text-dy: положительные значения двигают текст вниз от точки или линии, отрицательные - вверх. Т.е. система координат экранная, не мировая.
Интересное наблюдение, перечитал инструкцию, оказывается поведение описано для разных случав.
Последнее замечание имо следует уточнить т.к. забыт text-upright (который может перевернуть текст на 180 градусов!!!) и видимо допущена опечатка в указании параметра (у placement-type нет значений line), т.е. перефразировать: With “line” text-placement placement-type, a positive text-dy value displaces text in its up direction. Иначе говоря подпись должна касаться линии своей нижней частью вне зависимости от выбранного (автоматически) направления.
Спасибо за багрепорт. Указанную ошибку уже устранил. Новую версию можно скачать с сайта или воспользоваться функцией автоматического обновления в MapSurfer.NET Studio.
Runge
Ещё такой вопрос, понимаю что регулярные выражения сами по себе работают медленно, но вот такая конструкция в фильтрах у меня конкретно тормозит ))
Runge
У меня не получается задавать толщину линий line-width меньше 1.0.
Меняю значения от 0.4 до 1.0 - линия выглядит одинаковой, чуть превысив значение например до 1.1 - толщина начинает меняться. Это ограничения редактора стиля и GDI, или внутренние проверки отрубают значения < 1 ?
(added)
Обнаружил такое поведение
[highway="track"] {
line-color: black;
line-width: 0.4; // в Studio рендерится ширина 0.4 пикселя
// line-dasharray: 12.0, 2.0;
}
[highway="track"] {
line-color: black;
line-width: 0.4; // в Studio рендерится ширина 1 пиксель
line-dasharray: 12.0, 2.0;
}
Вы правы, библиотека GDI не умеет рисовать линии тоньше 1 пикселя. Это относится и к сплошным и к штрихпунктирным линиям. Однако, в Мапсерфере имеется обходной вариант, который с помощью библиотеки Fog позволяет рисовать сплошные линии толщиной меньше 1. Связка GDI+Fog реализована в рендерере GDI.
Для корректной работы с тонкими линиями я советую попробовать рендерер Cairo. Его можно активировать в свойствах проекта. Но для этого вам понадобится новая сборка Мапсерфера, ссылку на которую я вышлю отдельно в письме.
Mapsurfer Studio последней версии отказывается ставиться, т.к. инсталлятор пытается скачать VC++ 2015 Update 3 по «мёртвой» ссылке с сайта Microsoft, натыкается на 404-ю ошибку и прекращает процесс. Ручная установка VC++ по актуальной ссылке ничего не меняет. Пора бы обновить инсталлятор