OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

Announcement

A fix has been applied to the login system for the forums - if you have trouble logging in please contact support@openstreetmap.org with both your forum username and your OpenStreetMap username so we can make sure your accounts are properly linked.

#1 2014-05-09 22:21:35

Zverik
Moderator
From: Москва
Registered: 2010-10-14
Posts: 5,268
Website

Картостиль veloroad для печати маршрутов

Мне немного надоело, что почти каждое использование наших карт — это какой-то картографический позор. Не все ещё знают про MapSurfer :) Но для печати маршрутов, где важны подписи на низких масштабах, подходящих стилей просто нет. Ни «Bike & Hike», ни MapSurfer, — в общем-то, даже карты Яндекса для таких целей слабо подходят. Например, потому что названия дорог подписаны прямо на дорогах, и закрываются наложенным треком.

Сделать свой стиль я мечтал давно, но всё упиралось в отсутствие подходящего сервера. Такого нет и сейчас, но техника дошло до того, что за 300 рублей в месяц можно арендовать VPS с 30 гигабайтами SSD (правда, почти без памяти). Я вырезал небольшой кусочек из северо-запада страны и начал работать с ним.

Вот результат. Слева мой стиль, справа другие, известные. Я оформил карты для нескольких веломарафонов, как пример использования — посмотрите на этой странице ссылки на pdf и png.

Пока что данные не обновляются (загружен дамп от 30 апреля, изучаю механизм обновления в условиях нехватки памяти). Скорость оставляет желать, хотя к утру должны отрендериться в кэш масштабы до 12-го. Зону покрытия увеличивать не буду — нынешняя уже занимает всё доступное место. Разве что найдётся меценат с сервером или деньгами на оплату такого. Раз есть кэш, добавил стиль в BigMap: можно скачать кусочек с привязкой для ози (не злоупотребляйте).

На будущее запланированы какие-то улучшения, конечно. Во-первых, когда причешу исходники, выложу стиль на github под свободной лицензией. Во время обработки svg написал скрипт для объединения букв подписей в группы, чтобы проще было таскать (кто пробовал редактировать мапниковский svg, поймёт). Ещё планирую написать аналог nik2img.py, более человеко-ориентированный. Сделаю выгрузки для OziExplorer в масштабах z7-z11. И, наконец, сделаю экспорт по запросу (сразу с треком) в svg и png высокого разрешения с разделением на слои подложки и подписей. В идеале хорошо бы сразу точки старта, финиша и КП расставлять, и скачивать svg/pdf: хотя эта задача решаема, едва ли я смогу выделить на неё время.

По ходу работы раскопал старый стиль lonely places: отображение населённых пунктов, в радиусе трёх километров от которых нет линий highway=*. Его можно включить на том же сайте в переключалке слоёв справа. И подключить в josm: tms[15]:http://tile.osmz.ru/lonely/{z}/{x}/{y}.png. Работает на той же базе, что veloroad, поэтому пока не обновляется.

Во время написания стиля узнал немного хитростей TileMill/PostGIS. Думаю написать на хабр, но главное — может, дойдут, наконец, руки воплотить детскую мечту: скопировать стиль карт ЗАО «Карта» (у нас в Петербурге есть такие, когда-то были отличными картографами) на данных OSM. Вопрос выбора между покупкой атласа и распечаткой OSM тогда перестанет быть смешным.


ШТОСМ | josm.ru | обо мне | мне люди должны сказать спасибо

Offline

#2 2014-05-09 23:55:44

GaM
Member
From: Saint-Petersburg/Russia
Registered: 2011-01-10
Posts: 3,127
Website

Re: Картостиль veloroad для печати маршрутов

На сл PM попробую в свой gpx2png вставить smile

Offline

#3 2014-05-10 03:26:18

AMDmi3
Member
From: Москва
Registered: 2009-08-12
Posts: 3,310

Re: Картостиль veloroad для печати маршрутов

С lonely нужно убрать locality.

Offline

#4 2014-05-10 05:39:47

Max Vasilev
Member
Registered: 2009-06-16
Posts: 1,025
Website

Re: Картостиль veloroad для печати маршрутов

Я примерно такую же цель преследовал, только не смог добиться от мапника желаемого мне результата. Поэтому обратился к старому доброму Qgis и сделал там почти всё, что хотел. Косяков у Qgis не меньше,чем у мапника, но их или можно обойти или можно терпеть. Главная задача - выгонять карту в печатный вид за один проход, не используя никаких графических редакторов для последующей обработки. Все подписи КП и старта с финишем берутся из непосредственно gpx файла.

Вот пример того, что получилось.

Offline

#5 2014-05-10 20:54:36

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,377

Re: Картостиль veloroad для печати маршрутов

Zverik wrote:

воплотить детскую мечту: скопировать стиль карт ЗАО «Карта»

Такая огромная карта до сих пор находится на стене в зале ожидания на Финляндском вокзале.
Но тогда уж надо копировать стиль генчтаба на основе http://opentopomap.org

Offline

#6 2014-05-10 21:12:27

Zverik
Moderator
From: Москва
Registered: 2010-10-14
Posts: 5,268
Website

Re: Картостиль veloroad для печати маршрутов

1. Опубликовал картостиль (пока без readme)
2. Данные теперь обновляются ежеминутно (для z6-z9 нужно дёргать /dirty)
3. Была проблема с горизонталями — теперь рисуются.

Стиль генштаба недружелюбен, и его почти невозможно повторить в мапнике. Есть шанс в QGIS (и old_Bibigon, вроде, начинал делать библиотеку символов). А стиль карт того ЗАО можно увидеть на любой станции метро, они там главные поставщики.


ШТОСМ | josm.ru | обо мне | мне люди должны сказать спасибо

Offline

#7 2014-05-10 23:42:50

sim
Member
Registered: 2008-04-19
Posts: 629
Website

Re: Картостиль veloroad для печати маршрутов

Offline

#8 2014-05-11 06:55:25

Paravoz
Member
From: Ярославль
Registered: 2009-12-01
Posts: 628

Re: Картостиль veloroad для печати маршрутов

Может быть оффтоп, прошу прощения.
Но есть ли возможность подключить описываемый выше стиль и стиль http://opentopomap.org  к SASPlanet?

Offline

#9 2014-05-11 22:58:43

BushmanK
Member
Registered: 2011-05-03
Posts: 5,064

Re: Картостиль veloroad для печати маршрутов

Paravoz wrote:

Может быть оффтоп, прошу прощения.
Но есть ли возможность подключить описываемый выше стиль и стиль http://opentopomap.org  к SASPlanet?

Думаю, вы сами можете ответить на свой вопрос. Конечно, можно.
Измените zmp для openstreetmap в соответствии с URL-ами для искомых серверов, и будет вам счастье.


"Не умею" не значит "невозможно", "не видел" не значит "не бывает". "Нет проблемы", вероятнее всего, значит, что "нет мозгов".

Offline

#10 2014-05-12 12:30:47

Zverik
Moderator
From: Москва
Registered: 2010-10-14
Posts: 5,268
Website

Re: Картостиль veloroad для печати маршрутов

Четыре новости:

— раздув базу в 1,7 раза, увеличил площадь покрытия на СЗФО, ЦФО, ДВФО и Литву почти целиком. Это предел, для дальнейшего увеличения потребуется сервер с большим диском;
— стиль Lonely Places теперь полезен для упомянутых территорий, также сделал фильтр по значениям highway, и добавил проверку на railway;
— открыл статистику сервера: из неё можно узнать, что база сейчас весит 16 гигабайт, тайлы — полгига, а один тайл отрисовывается примерно за 0,15 секунды (это долго);
— картостиль просто создан для северных территорий, на альтернативах шестой зум пустой:

veloroad-vs-yandex-sibir.png

Про баг с китайскими названиями я в курсе.

Сейчас работаю над продвинутым аналогом nik2img, чтобы сделать выгрузки в формате OziExplorer (велосипедисты его любят) и скачивание выделенных областей в svg.

Last edited by Zverik (2014-05-12 12:36:38)


ШТОСМ | josm.ru | обо мне | мне люди должны сказать спасибо

Offline

#11 2014-05-18 13:28:10

Zverik
Moderator
From: Москва
Registered: 2010-10-14
Posts: 5,268
Website

Re: Картостиль veloroad для печати маршрутов

Уменьшил размеры надписей и толщины линий, теперь карта выглядит значительно чище. И насыщеннее: так, на z9 появились highway=tertiary.

Также опубликовал крутейший скрипт для рендеринга мапником в картинки: Nik4, длинная документация с примерами по ссылке. Скоро прикручу его на сайт с тайлами, чтобы можно было сразу скачивать svg карты с маршрутом и масштабной линейкой.


ШТОСМ | josm.ru | обо мне | мне люди должны сказать спасибо

Offline

#12 2014-05-18 19:19:19

ad47
Member
Registered: 2012-10-14
Posts: 225

Re: Картостиль veloroad для печати маршрутов

Заранее извиняюсь за пессимистичный комментарий, но то, что появился очередной стиль, не поддерживающий surface, несколько удивляет. Ну и раз он велосипедный, можно было под это дело наконец-то придумать систему обозначения проходимисти тропинок, т.к. bicycle=yes/no как бы не подходит и нигде не отображается, но больше ничего и нет.

Вообще, несколько удивляет то, что велосипедисты либо используют достаточно сложный Ozi, либо рисуют маршруты прямо по равномерно-зелёным лесам без намёка на тропинки от Яндекс-карт. А учитывая, что не все понимают даже то, что OpenCycleMap=OSM и его можно править (пруф) (и это несмотря на наличие этого слоя на главной), немногие узнают и будут использовать этот стиль (разве что если включть его в MapBBCode с повсеместным внедрением оного).

Last edited by ad47 (2014-05-18 19:19:58)

Offline

#13 2014-05-18 19:30:40

Zverik
Moderator
From: Москва
Registered: 2010-10-14
Posts: 5,268
Website

Re: Картостиль veloroad для печати маршрутов

Меня самого очень огорчает, что нет адекватного стиля с отображением покрытия дорог (не считая UniRS для османда). Возможно, во второй половине лета я им займусь. Стиль veloroad создан для клуба веломарафонцев, поэтому покрытие там не важно, а важны горизонтали и ориентиры: примыкающие дороги, населённые пункты. Выгруженные масштабы в Ozi выложу завтра. Раз велосипедистов не обучить осму, буду продвигать осмокарты в те инструменты, которыми они уже пользуются.


ШТОСМ | josm.ru | обо мне | мне люди должны сказать спасибо

Offline

#14 2014-05-18 20:20:00

firsovil10
Member
Registered: 2014-05-04
Posts: 29

Re: Картостиль veloroad для печати маршрутов

Немного оффтоплю, но в первом посте как бы мимоходом было упомянуто вот что:

Zverik wrote:

Во время написания стиля узнал немного хитростей TileMill/PostGIS. Думаю написать на хабр

Вообще интересно было бы почитать, но не совсем понятно: эти "хитрости" касаются именно взаимодействия оболочки для рендера с базой данных или же оба компонента рассматриваются по отдельности? Потому что дальше в том же абзаце идёт рассказ о стиле ЗАО "Карта", а это больше "по дизайну" (TileMill), а не "по данным" (PostGIS). Хотя, может, это просто "лирическое отступление", к теме отношения не имеющее smile

Offline

#15 2014-05-18 20:22:42

Zverik
Moderator
From: Москва
Registered: 2010-10-14
Posts: 5,268
Website

Re: Картостиль veloroad для печати маршрутов

Хороший дизайн подразумевает сложную обработку данных, особенно в OSM.


ШТОСМ | josm.ru | обо мне | мне люди должны сказать спасибо

Offline

#16 2014-05-18 20:53:12

chnav
Member
From: Moscow, Russia
Registered: 2010-03-18
Posts: 2,565

Re: Картостиль veloroad для печати маршрутов

Zverik wrote:

Выгруженные масштабы в Ozi выложу завтра.

Никогда не пробовал большие выгрузки, отсюда вопрос: Ozi умеет работать с нашей проекцией веб-Меркатор (нелинейный масштаб в зависимости от широты) ?

Offline

#17 2014-05-19 11:21:19

Zverik
Moderator
From: Москва
Registered: 2010-10-14
Posts: 5,268
Website

Re: Картостиль veloroad для печати маршрутов

По-моему, да, умеет: треки ложатся на полученные подложки для Ozi отлично.

Сделал выгрузки масштабов 8, 9, 9.5 и 10 в 150 dpi для ozi, ссылка и инструкция по использованию — на textual.ru/brevet.


ШТОСМ | josm.ru | обо мне | мне люди должны сказать спасибо

Offline

#18 2014-05-28 13:33:23

Zverik
Moderator
From: Москва
Registered: 2010-10-14
Posts: 5,268
Website

Re: Картостиль veloroad для печати маршрутов

Рассказал про стиль в штосме. Также посчитал занимаемое базой данных место: после заливки 17 гигабайт, прирастает на 0,6 в день. Поэтому примерно раз в 10 дней приходится перевырезать и загружать заново. Это автоматизировано, но всё равно неприятно: хотелось бы минутное обновление не всей планеты, а только нужного региона.


ШТОСМ | josm.ru | обо мне | мне люди должны сказать спасибо

Offline

#19 2014-05-28 13:45:57

Vitalts
Member
From: Estonia
Registered: 2010-12-30
Posts: 1,434

Re: Картостиль veloroad для печати маршрутов

Грохать не нужные данные после каждого наката дифа?

Offline

#20 2014-05-28 13:49:55

Zverik
Moderator
From: Москва
Registered: 2010-10-14
Posts: 5,268
Website

Re: Картостиль veloroad для печати маршрутов

Vitalts wrote:

Грохать не нужные данные после каждого наката дифа?

Диффы же накатываются ежеминутно, и сразу на базу: не уверен, что удаление данных из базы по полигону будет достаточно быстрым (и ничего не поломает в механизме обновлений).


ШТОСМ | josm.ru | обо мне | мне люди должны сказать спасибо

Offline

#21 2014-05-28 14:05:40

Vitalts
Member
From: Estonia
Registered: 2010-12-30
Posts: 1,434

Re: Картостиль veloroad для печати маршрутов

У меня это реализовано так:
процедуру накатывания дифов вызывает демон, после чего он же запускает процедуру очистки, соответсвенно, пока чистка не закончится следующего дифа не будет.
процедура очистки:
• все изменения дифов логируются тригерами
• на старте очистки тригеры дизейблятся (тригер просто не осуществляет логирование при наличии некоего значение в некоторой таблице)
• по логам анализируются измененные записи и удаляются не нужные
• опять же по логам анализируются не изменялись ли статистируемые объекты и обновляются в статистических таблицах
• очищаем логи, включаем тригеры логирования, процесс очистки окончен.
Благодаря анализу лишь измененных данных и расстановки соответсвующих индексов процедура очистки и обновления данных порядка десятка таблиц происходит быстрее наката диффов.

немного статистики по накату ~5-ти минутным диффам (регион - Эстония)
2014_05_28_16_04_25_Query_osm_on_postgres_162.244.77.148_5432_.png

Offline

#22 2014-05-28 14:07:31

Larry0ua
Member
Registered: 2010-09-19
Posts: 1,061

Re: Картостиль veloroad для печати маршрутов

Не очень разбираюсь в деталях, но предложу вариант - не накатывать закачанные обновления (osc) сразу, а сначала обрезать osmfilter-ом, например. Это если есть возможность покопаться в скриптах обновления.

Offline

#23 2014-05-28 14:07:54

elazarev
Member
From: Moscow
Registered: 2013-10-23
Posts: 195

Re: Картостиль veloroad для печати маршрутов

Приятный стиль! Заинтересовал значок железнодорожных станций) Можно узнать, от чего зависит размер значка и положение серого квадратика на нем?

Offline

#24 2014-05-28 14:10:47

Vitalts
Member
From: Estonia
Registered: 2010-12-30
Posts: 1,434

Re: Картостиль veloroad для печати маршрутов

Не очень разбираюсь в деталях, но предложу вариант - не накатывать закачанные обновления (osc) сразу, а сначала обрезать osmfilter-ом, например. Это если есть возможность покопаться в скриптах обновления.

Тоже поначалу склонялся к этому варианту, однако не нашел готового решения, решил костылять, взялся за дело и задумался "а как?". Попадала нода в наш регион, ее кто-то подвинул и она вылетела, мы ее из дифа вырезали (диф имеет только актуальные данные), ибо не попадает, а у себя оставили. Не годится.

Offline

#25 2014-05-28 14:15:10

Zverik
Moderator
From: Москва
Registered: 2010-10-14
Posts: 5,268
Website

Re: Картостиль veloroad для печати маршрутов

Vitalts wrote:

У меня это реализовано так:
процедуру накатывания дифов вызывает демон, после чего он же запускает процедуру очистки, соответсвенно, пока чистка не закончится следующего дифа не будет.

Хм. Спасибо за картинку со статистикой, она обнадёживает. Правда, я так понимаю, твоя база — совсем не osm2pgsql --slim. Я поэкспериментирую в этом направлении как-нибудь.

elazarev wrote:

Приятный стиль! Заинтересовал значок железнодорожных станций) Можно узнать, от чего зависит размер значка и положение серого квадратика на нем?

Размер зависит от значения: railway=station или railway=halt. Положение серого квадратика на картах генштаба обозначает направление выхода, но у меня оно, к сожалению, случайно: это направление по данным OSM никак не определить в общем случае.


ШТОСМ | josm.ru | обо мне | мне люди должны сказать спасибо

Offline

Board footer

Powered by FluxBB