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

В своё время я ставил дополнительно ещё gdal-201-1600-x64-core

freeExec подметил верно. Ссылки на требуемый пакет GDAL можно найти на странице
http://mapsurfernet.com/downloads

Да действительно установил компоненты GDAL Core и CSharp bindings, проект загрузился.

Нашел два проекта с примером CartoCSS, оба используют данные SRTM DEM. Скачал файл E060N90.DEM отсюда, положил его в папку "contour-lines\data\srtm", открыл проект, отзумился на нужную область (Алма-Ата, там гористая местность) - ничего не происходит, видна только черная подложка.

Возможно положил не тот DEM и не туда, но Help по DEM выдает ошибку http://mapsurfernet.com/docs/usermanual/data_sources/raster/index больше спрашивать помощи негде.
Помогите, хочется уже увидеть что он рендерит ))

А пример Relief.msnpx из поставки пробовал https://github.com/MapSurferNET/MapSurfer.NET-Examples/tree/master/Projects
И возможно косяк в том, что версию надо 2

В настройках проекта прописано следущющее
“Datasource”: {
“type”: “dem”,
“path”: “data\srtm”,
“datasource_type”: “SRTM_v2”,

т.е. требуется SRTM версии 2.

данные, на пример, можно скачать отсюда
https://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/

Да я смотрел настройки проекта и моя ссылка вроде мало чем отличается 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/

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