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

Спасибо, 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 ?

А насколько велика выборка из данных? Интересует количество фильтрируемых объектов. Эту статистику можно глянуть в панели “Статистика рендеринга”.

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

Есть одна идейка, но для этого мне нужен пример из вашего проекта. Не хочется тратить время на создание проекта самому.

issue 2016-08-17 15:21 MSK

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. Его можно активировать в свойствах проекта. Но для этого вам понадобится новая сборка Мапсерфера, ссылку на которую я вышлю отдельно в письме.

Постоянно пропадают куски 3Д-домиков: http://openstreetmap.ru/#map=17/56.79562/60.51075&layer=S

не обязательно куски и не обязательно 3д http://openstreetmap.ru/#map=16/55.7595/37.5942&layer=S

Увы Мапсёрфер совсем не юзабельный, больше года не рендерятся огромные куски карты.

Что есть — то есть, запущен (в плохом смысле слова), к сожалению.

Runge когда можно будет ожидать нормальную работу рендера?

Mapsurfer Studio последней версии отказывается ставиться, т.к. инсталлятор пытается скачать VC++ 2015 Update 3 по «мёртвой» ссылке с сайта Microsoft, натыкается на 404-ю ошибку и прекращает процесс. Ручная установка VC++ по актуальной ссылке ничего не меняет. Пора бы обновить инсталлятор

Убрал галочку напротив VC++ в инсталляторе и установил. Но возникла другая бяка: новый мапсёрфер начисто не видит GDAL, установленного в пакете же с ним. Установка отдельно упомянутого на предыдущей странице gdal-201-1600-x64-core тоже результата не дала. Куда копать?

Runge

Может наивный вопрос, скажите если мы используем для рендеринга Windows API, будет ли какой-то выигрыш если установить в сервер нормальную видеокарту ?

Т.е. вопрос разбивается на два подвопроса

  • будет ли прирост в Studio
  • будет ли прирост в сервисе MSN

Вопросы не первостепенной важности т.к. судя по статистике в Studio непосредственно рендеринг занимает всего 25% времени, но всё же… немного тут, немного там - уже оптимизация ))

PS: когда тестировал alaCarte, там у Cairo около 40% всего времени отнимает сжатие для PNG через zlib

Под Windows, MapSurfer.NET использует графическую библиотеку GDI+, которая, насколько я знаю, никакого аппаратного ускорения не поддерживает. Сейчас я все больше смотрю в сторону кросплатформенной библиотеки SkiaSharp, основанной на Skia от Google. Эта библиотека на порядок быстрее уже устаревшей GDI+, к тому же имеет поддержку OpenGL. К сожалению, проект SkiaSharp довольно молодой и некоторые вещи нужные для рендеринга карте в нем реализованны.

Прироста не будет.

Для ускорения могу еще посоветовать не использовать линии толщиной менее 1 пикселя. В этом случае рендеринг осуществляется другой библиотекой Fog. Из-за текущей реализации данные сначала копируются в объекты GDI+, а потом из них копируются в Fog, что ведет к увеличению времени рендеринга.
Еще я бы посоветовал использовать SSD и более аккуратнее подготавливать запросы к базе данных, отбрасывая излишние данные, не используемые в ваших стилях.

Да, спасибо, SSD с самого начала, SQL запросы сейчас оптимизирую (выкидываю площади и длины менее 2 пикселов и пр.)

А вот упрощение геометрии ST_Simplify() на стороне PostGIS дало обратный эффект, запросы стали дольше раз в пять. В общем надо всё тщательно выверять - что делать на стороне базы данных, а что оставить рендеру.

Например на Чепечк Макс заранее прогонял данные через ST_Simplify() для каждого мелкого зума и создавал таблицы. Не буду врать, но вроде говорил об ускорении ренедера на порядок.