Установил mapSurfer.NET 2.5. Система Windows 7 x86, дотнет 4.6 и разные его обновления установлены. При открытии любого проекта - нативного или mml из папки с примерами - выскакивает исключение. Ниже скриншот при открытии “C:\Users\Public\Documents\MapSurfer.NET\2.5\Samples\Projects\contour-lines\project.mml”
Нашел два проекта с примером CartoCSS, оба используют данные SRTM DEM. Скачал файл E060N90.DEM отсюда, положил его в папку "contour-lines\data\srtm", открыл проект, отзумился на нужную область (Алма-Ата, там гористая местность) - ничего не происходит, видна только черная подложка.
Самый простой способ для ОСМера начать использовать MapSurfer это, естественно, OSM XML или PBF в качестве провайдера данных. В комплекте с CartCSS у меня не получаются следующие вещи.
Но так получилось что в обрезанном PBF нет ни одного элемента motorroad=yes, соответственно такого поля нет в данных. В результате стиль для всего слоя не обрабатывается, ничто не рендерится, пустой лист.
Мультиполигоны не обрабатываются совсем, словно нет такой геометрии.
Абсолютно с этим согласен. Давайте вместе попробуем это исправить.
Для решения проблемы №1 есть идея. Эта идея заключается в дополнительном файле, в котором пользователь сможет указать список тегов, которыми будет дополяться провайдер данных OSM XML/PBF.
Проблема №2. Насколько я помню, то мультиполигоны должны поддерживаться. Мультиполигоны могут не отображаться в случае если они представлены в файле частично. Можно воспользоваться JOSM для загрузки недостающих частей мультиполигона.
Если Вы вышлите мне свой проект со стилями и исходными данными (с указанием идентификатора отсутствующего мультиполигона), то я смогу быстрее внести необходимые изменения в соответствующий провайдер данных.
Ещё несколько вопросов, все относятся с CartoCSS + OSM XML|PBF
NOTE: я предполагаю что провайдер OSM сделан только для quick start и п.п. 1-4 реализуются запросами PostgreSQL+PostGIS, но вдруг это реализовано внутри MapSurfer, только не описано и нет примеров.
@issue 2016-08-04, 08:30
В провайдере данных OSM есть ли какое-то ключевое слово для выделения объектов определенного типа, например
node, way, relation
или node, входящий в relation и имеющий роль admin_center
Есть ли функции (для CartoCSS), параметром для которых является текущая геометрия, например изменить размер шрифта в зависимости от площади ?
И последнее очень важный момент непосредственно по переменным CartoCSS.
Исходя из всех просмотренных примеров - основной стиль мапника, veloroad, osm-bright и т.д. - переменные (variable @var) это не совсем переменные, скорее constant или define для подстановки. Тем не менее они не работают в качестве параметров фильтров, например такое определение не дает синтаксических ошибок, но слой не рисуется
@zoom_mid: 12;
//#highway[zoom >= 12] { // OK
#highway[zoom >= @zoom_mid] { // No errors but not rendered
line-width: 1.0;
}
Попытался сменить тип проекции в настройках проекта, т.е. рендерить тайлы не в дефолтном меркаторе, а, например 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;
}
В том билде, что доступен сейчас для скачивания этой возможности нет.