113 заметок с тегом

проекты

Позднее Ctrl + ↑

Новые печатные карты

Заявки на новые печатные карты мы ждем от вас в комментариях к посту про печатные карты, в котором указаны критерии для их создания... Секунду, у нас же не НЯК.

Макс Васильев поделился ссылкой на буклет сегодняшнего чемпионата России по велоспорту в Туле. Красиво оформленные страницы, море информации — и, внезапно, карта маршрута, от которой вытекают глаза. Разумеется, с традиционным нарушением условий использования Яндекс.Карт и традиционным закрытием Яндексом глаз на эту фигню.

До сих пор просто нарисовать маршрут на карте было нетривиально: люди либо снимали проприетарную карту с линейкой вычисления расстояний, либо рисовали линии в пэинте поверх склеенных тайлов OSM, либо фотографировали OziExplorer с треком. Всё это ненормально и извращение. Особенно когда карта нужна для печати, и обычного разрешения в 90 точек на дюйм недостаточно. Что ж, с этого дня получить кусок карты для печати стало проще: теперь есть сервис «Get Veloroad».

Он работает на основе Nik4: указываете размеры бумаги, растягиваете прямоугольник границ печатаемой области, выбираете формат (png, svg или pdf) — и картинка в 300 dpi у вас в кармане. Поверх можно наложить GPX-трек и линейный масштаб. Векторные файлы SVG обрабатываются скриптом склейки букв в слова: их можно загрузить в Inkscape и сместить надписи от маршрута. Наконец, вместо стиля Veloroad можно выбрать «стандартный» стиль osm.org: хватит уже склеивать его тайлы, когда можно получить нужный кусок в 300 dpi (или в обычном разрешении, если указать пиксели).

Единственный недочёт — данные всё так же доступны только для части России и Прибалтики. Граница загруженной области отображена, поэтому даже на слое osm.org вы не останетесь неожиданно с синим квадратом. Сервис не даст создать несколько карт одновременно, поэтому если не получилось — попробуйте через пару минут. Всё лучше, чем вкладка экспорта на osm.org, непредсказуемая и вечно занятая.

2014   проекты   экспорт

Рецепт успеха

Adam Jordanek на своём сайте делает запрос к Overpass API, получает все кафе и рестораны (или другие точки, см. вкладку «Eat») и отображает их на карте. К каждой точке прикручена обсуждалка Disqus. Результат, конечно, не заменит форсквер, но очень удобен для поиска ближайших заведений: на форуме не замедлили похвалить.

Но подобные сайты можно слепить за день, и для непосвящённого посетителя они выглядят коряво. Чего уже не скажешь об отображении POI в openstreetmap.ru: две недели назад, вдохновившись новыми всплывающими панельками в 2ГИС, Felis Pimeja и ErshKUS улучшили дизайн наших: теперь карточки не выглядят набором тегов, переведённых на русский.

2014   проекты

Инструментарий картопечатника

Как только я начал готовить печатный вариант карты маршрута на основе своего стиля, я обнаружил, что инструментов-то и нет. Вернее, есть, но не те. Например, подвинуть надпись в векторном изображении, выданном мапником, нетривиально: нужно выделить все буквы надписи, затем все элементы её полупрозрачного фона. Это нелёгкий процесс, с тщательным прицеливанием и нецензурными репликами, когда выделение теряется. Не двигать нельзя: алгоритм расстановки надписей в мапнике ужасен. Движок Cairo, используемый мапником, не позволяет объединять элементы слоёв в группы. Поэтому месяц назад я опубликовал скрипт mapnik-group-text, который объединяет буквы во фразы. Из параметров важен только -d, который определяет максимальное расстояние между буквами.

Затем мне понадобилось сделать выгрузки огромных территорий для OziExplorer (велосипедисты, почему-то, любят этот дорогой артефакт истории). Из существующих скриптов — только nik2img, который щеголяет несколькими десятками опций (но треть из них к делу не относится). Попробовал для проверки получить картинку как на osm.org, задав центр, масштаб и размер картинки в пикселях. Скрипт разочаровал: масштаб съехал на полделения. Как получить картинку в 300 dpi, вообще непонятно: при указании scale_factor лишь все линии зачем-то становятся толще. Что делать — пришлось писать самому.

Nik4 отрендерит вам мапником картинку именно так, как нужно. Без сюрпризов. Хотите эквивалент скриншота osm.org в нужной точке? Запускайте с параметрами -c LON LAT -x 800 600 -z 13. Распечатать прямоугольник в 300 dpi на листе A5? -a 5 --ppi 300 --bbox X1 Y1 X2 Y2 — и не нужно знать, что такое scale_factor, или какое там разрешение по умолчанию. Подготовить огромный фрагмент для Ozi? --tiles 4 склеит большую картинку из 16 маленьких (чтобы не вылететь по нехватке памяти), а --ozi output.map создаст файл привязки. Подробные примеры с картинками смотрите на гитхабе, а для установки достаточно набрать pip install nik4.

Первой задачей, с которой сталкиваются установившие мапник, остаётся генерация тайлов. Для этого я много лет назад написал скрипт polytiles.py, который не только делает эти тайлы в несколько потоков, но умеет собирать их в mbtiles и фильтровать как по файлу poly, так и по произвольному полигону в базе PostGIS (например, по городу). Недавно открылось ещё одно применение скрипта: им элементарно делать списки для renderd, чтобы обновлять тайлы в заданном регионе.

2014   проекты

Картируй это

Александр Зыков задумался о картировании OSM из твитера, но в отличие от osmitter, не стал радикально загружать данные в базу по нечёткому сигналу GPS. Он предлагает адресовать геопозиционированные твиты пользователю @osmthis, и робот добавит их как заметки. JBacc1 возмутился, что добавляют фигню, но не за этим ли заметки были сделаны?

Дата смерти OpenStreetBugs — 2 мая: именно тогда Werner2101 закрыл последний баг. Разумеется, в Москве. Он пишет, что в России багов было без счёта, но как пришло время их закрывать, помощи от русскоязычных участников было немного. Спасибо всем, кто поучаствовал.

2014   проекты

BigMap 2

Долгое время основным инструментом для скачивания тайлов и объединения их в большую картинку был BigMap: скрипт на Perl, который выдавал другой скрипт на Perl, который скачивал и склеивал тайлы. Ну или SAS.Планета, главное оружие нарушителя авторских прав. Теперь у нас есть альтернатива.

BigMap 2 — новая версия сервиса, которая также умеет выдавать скрипт на Python. Что, впрочем, меркнет перед функциями создания картинок прямо на сервере (до 100 тайлов) и генерации метаданных для OziExplorer и других программ. Лимита достаточно, чтобы создавать снимки карты до и после картовстреч на 15 масштабе.

Этого сервиса не было бы без Orbis Terrarum, программы Павла «elagin» на C# для склеивания тайлов и привязки их для Ozi. Он немного превосходит эту программу тем же, чем JTileDownloader: позволяет выбрать подложку и бережно обращается с ресурсами серверов.

2014   проекты
Ранее Ctrl + ↓