Обновление MapSurfer.NET

Да я смотрел настройки проекта и моя ссылка вроде мало чем отличается https://dds.cr.usgs.gov/srtm/version2_1/SRTM30/e060n90/ кто же знал что вместо расширения dem нужно расширение hgt.

Хорошо бы это добавить в readme.txt в проекте

(added)
Да всё заработало, спасибо.

chnavПомогло переименование или какой формат там взять, а то hgt.zip там нет.

freeExec
Просто распаковал нужный файл из ссылки Runge https://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/

Если нужны другие континенты разграфка тут

Не я про твою ссылку, там просто удобней сразу большой файл, а не куча мелких.

Самый простой способ для ОСМера начать использовать MapSurfer это, естественно, OSM XML или PBF в качестве провайдера данных. В комплекте с CartCSS у меня не получаются следующие вещи.

  1. В стиле указываю фильтр для дорог
[highway='motorway'],
[highway='trunk'][motorroad='yes']
{}

Но так получилось что в обрезанном PBF нет ни одного элемента motorroad=yes, соответственно такого поля нет в данных. В результате стиль для всего слоя не обрабатывается, ничто не рендерится, пустой лист.

  1. Мультиполигоны не обрабатываются совсем, словно нет такой геометрии.

Абсолютно с этим согласен. Давайте вместе попробуем это исправить.

Для решения проблемы №1 есть идея. Эта идея заключается в дополнительном файле, в котором пользователь сможет указать список тегов, которыми будет дополяться провайдер данных OSM XML/PBF.

Проблема №2. Насколько я помню, то мультиполигоны должны поддерживаться. Мультиполигоны могут не отображаться в случае если они представлены в файле частично. Можно воспользоваться JOSM для загрузки недостающих частей мультиполигона.

Если Вы вышлите мне свой проект со стилями и исходными данными (с указанием идентификатора отсутствующего мультиполигона), то я смогу быстрее внести необходимые изменения в соответствующий провайдер данных.

Мне кажется проще сделать условие при парсинге CSS: если key отсутствует в базе то любое выражение с ним сделать равносильным key = null

По проблемному мультиполигону выслал проект на почту. Спасибо.

Runge

Ещё несколько вопросов, все относятся с CartoCSS + OSM XML|PBF

NOTE: я предполагаю что провайдер OSM сделан только для quick start и п.п. 1-4 реализуются запросами PostgreSQL+PostGIS, но вдруг это реализовано внутри MapSurfer, только не описано и нет примеров.

@issue 2016-08-04, 08:30

  1. В провайдере данных OSM есть ли какое-то ключевое слово для выделения объектов определенного типа, например
    node, way, relation
    или node, входящий в relation и имеющий роль admin_center

  2. Geometry Transformations
    Есть ли реализация для CartoCSS или в провайдере данных OSM ?

  3. Какие функции можно использовать в выражениях для значений параметров, кроме тех что указаны в списке http://mapsurfernet.com/docs/usermanual/expressions/index ? (экспоненты, возведение в степень и т.д.)

  4. Есть ли функции (для CartoCSS), параметром для которых является текущая геометрия, например изменить размер шрифта в зависимости от площади ?

  5. И последнее очень важный момент непосредственно по переменным 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;
}

Схожая проблема кажется была решена в TileMill https://github.com/mapbox/carto/issues/197 и https://github.com/mapbox/carto/issues/337

Спасибо.

@issue 2016-08-04, 10:20

Сконфигурировал IIS сервис строго как описано в инструкции http://mapsurfernet.com/docs/usermanual/web_services/running-webservice-using-iis75
но указал стиль CartoCSS. В броузере при вызове url http://localhost:8001/tms.ashx?x=0&y=0&z=0 вылетает ошибка

@issue 2016-08-04, 15:30

Использование плоских проекций.

Попытался сменить тип проекции в настройках проекта, т.е. рендерить тайлы не в дефолтном меркаторе, а, например Lambert Conical. В настройках проекта (файл mml) звменил строку на

При открытии проекта выскакивает исключение. Индексы у данных удалял, не помогает.

Вопрос: поддерживаются ли проекции PROJ4 и кастомные через строку как выше, или только гугломеркатор ? Имеются в виду не провайдеры данных (там богатый выбор проекций) а именно о рендере, тайлах для slippy map.

Обычно тайлы для slippy map определены для гугломеркатора.
Другие проекции возможны, но требуют как минимум соответствующей настройки на стороне тайлового сервиса и на клиенте.

chnav

У вас накопилось довольно много вопросов. Давайте разберем их по порядку.

Пост №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] будет добавлено в следующем релизе.

В выражениях можно использовать любую статическую функцию статического класса приведенного на указанной вами странице. Например https://msdn.microsoft.com/en-us//library/system.math(v=vs.110).aspx
(экспоненты, возведение в степень и т.д.) → Math.Sin(0.5)

Такой функции пока нет, но она появится. Это можно будет сделать примерно так
landuse[“GeometryTransformations.ViewTransformation([geom], [ViewTransformation]).Area” > 2000]
{
text-size: 12;
}

или используя площадь объекта в метрах
landuse[“[geom].Area” > 2000000]
{
text-size: 12;
}

В том билде, что доступен сейчас для скачивания этой возможности нет.

Попробуйте установить следующий билд https://drive.google.com/file/d/0BwKq40HTyJ0LbFd4OThadUp0eWc/view?usp=sharing
В нем добавлена возможность использования определеных констант в фильтрах.

Пост №2

В указанном выше билде эта ошибка устранена.

Спасибо за быструю реализацию, работает ! Остальное ещё не проверял.

@issue 2016-08-06, 07:30

При оформлении текста (проверено для point и line) выяснилось следующее поведение параметра text-dy: положительные значения двигают текст вниз от точки или линии, отрицательные - вверх. Т.е. система координат экранная, не мировая.

Не уверен как ведет себя мапник в такой ситуации, в примерах tilemill смещает текст “положительно = вверх” https://www.mapbox.com/tilemill/docs/guides/styling-labels/

В любом случае желательно такое же соглашение по направлению осей как у мапника, а мы подстроимся ))

Спасибо, chnav!

Ваши замечания постараюсь учесть.

Вроде бы это смещение зависит от направлении линии, т.е. если смотреть по направлению, то положительная часть будет справа.

Интересное наблюдение, перечитал инструкцию, оказывается поведение описано для разных случав.

Последнее замечание имо следует уточнить т.к. забыт text-upright (который может перевернуть текст на 180 градусов!!!) и видимо допущена опечатка в указании параметра (у placement-type нет значений line), т.е. перефразировать:
With “line” text-placement placement-type, a positive text-dy value displaces text in its up direction. Иначе говоря подпись должна касаться линии своей нижней частью вне зависимости от выбранного (автоматически) направления.

issue 2016-08-09 11:30

Не работают назначения текста-константы


[surface="asphalt"] { text-name: "'асфальт'"; }
[surface="asphalt"] { text-name: 'асфальт'; }

Пробовал все сочетания кавычек, включая сдвоенные, как описано тут https://www.mapbox.com/tilemill/docs/guides/styling-labels/

Спасибо за багрепорт. Указанную ошибку уже устранил. Новую версию можно скачать с сайта или воспользоваться функцией автоматического обновления в MapSurfer.NET Studio.

Runge
Ещё такой вопрос, понимаю что регулярные выражения сами по себе работают медленно, но вот такая конструкция в фильтрах у меня конкретно тормозит ))


[surface!=null][smoothness!=null][surface=~"^(asphalt|concrete|compacted|fine_gravel|gravel|stone|pebblestone|paved|concrete:plates|^paving_stones.*)$"][smoothness=~"^(horrible|very_horrible|impassable)$"][highway=~"^(motorway_link|trunk|trunk_link|primary|primary_link|secondary|secondary_link|tertiary|tertiary_link|unclassified|residential|living_street|pedestrian)$"]

Я что-то могу поправить, или выход только - разворачивать в фильтры без regexp ?