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

проекты

Позднее Ctrl + ↑

Из викимедии с любовью

Вот викимедия. Вот отдел связности внутри викимедии. Вот направление карт внутри отдела связности внутри викимедии. А вот Kartotherian со странным названьем, что в направлении карт создали, что внутри отдела связности, что внутри викимедии. Это движок карт, соединяющий инфраструктуру векторных тайлов Mapbox, сервисы викимедии, и добавляющий несколько полезных инструментов. Он работает уже несколько месяцев на maps.wikimedia.org.

Главный разработчик Kartoterian предложил, заодно, перевести на него и osm.org. Админы, разумеется, повторились, что рано или поздно все там будем, но давайте попридержим коней. А следующим выступил Кристоф Хорманн с общей критикой векторных тайлов: конечно, они быстрые, и позволяют бесплатные вариации стилей (например, для «ретины»), но прежде всего, векторные тайлы ограничивают дизайнера стилей. Он сослался на статью в своём блоге и заметил, что все карты на векторных тайлах нынче выглядят одинаково, без изюминки.

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

  1. Одни и те же данные для разных стилей. Примеры — векторные тайлы Mapbox Streets, или что использует Энди Аллан для своих карт Thunderforest, две из которых есть на osm.org.
  2. Разные форматы файлов для одной карты. Пример — Mapbox Vector Tiles, когда уже подготовленные и готовые к рендерингу данные сохраняются в отдельный файл, и затем на лету превращаются в растр. Не особо отличается от SVG, но и не слишком гибко. (Замечу, что я немного отстал от «паровоза», и настолько жёсткого формата, может, на самом деле нет).

Если разрезать на тайлы все данные, возникает куча проблем. Самая большая — потеря контекста. Нужны окружающие данные и наивысшая точность, т. е. в идеале — одна картинка на весь мир, сделанная из сырых данных. Для эффективности эту задачу упрощают: например, отрисовывают мир метатайлами, и делят данные на слои. Возникают граничные случаи, от чего, например, появились буферные зоны (по полтайла с каждой стороны метатайла). Так вот, в векторных тайлах после обработки остаются отдельные тайлы с буфером, и непонятно, например, куда ставить значки и подписи у больших или длинных объектов. Вместо того, чтобы решать самую сложную проблему картографии, векторные тайлы её усугубляют. Как с этим справиться, пока никто не знает, хотя Mapbox придумал пару обходных финтов, вроде предвычисления расположения подписей.

Карты на векторных тайлах, конечно, непохожи друг на друга: достаточно посмотреть на космические, карандашные, пиратские, деревянные, туристические карты на одних и тех же тайлах Mapbox. Но если этими картами пользоваться, то обнаруживаешь, что там везде одно и то же. Либо ты сводишь картографию на векторных тайлах к выбору цветов, значков и шрифтов, либо создаёшь свои полсотни слоёв, тратишь полгода, чтобы обойти ограничения формата, и в итоге получаешь примерно то же, что на CartoCSS, только с запутанной серверной инфраструктурой на JavaScript. Так что отчасти Кристоф прав: либо технологии, либо качество карты.

Поспорить с Юрием Астраханом, который с группой помощников разрабатывает Kartotherian, можно будет 21-22 ноября в Москве на конференции «Открытые ГИС».

 3 комментария   2015   проекты

Свобода выбора

Google открыл для России сервис «Map Maker», под впечатлением от которого Яндекс когда-то сделал НЯК. Учитывая запоздание, сложно понять, зачем, хотя возгласы «здорово» и «будем рисовать» под новостями лишают остатков надежды на светлое будущее OSM. Как поясняет менеджер сервиса карт в интервью Вестям.Хайтек, главная цель Map Maker — «дать людям инструмент, позволяющий добавлять информацию самостоятельно, <...> дополнить работу картографов, исправить их ошибки». Те, кто помнит косяки гугля с Рыбинским водохранилищем, Невским проспектом, дырявыми федеральными трассами, призрачными станциями метро, домами посреди проспектов и прочим, могут представить фронт работ перед народными картографами.

Кажется, развитие любительской картографии идёт в обратную сторону. Сначала был OpenStreetMap со сложной структурой и открытыми данными. Затем появился НЯК, где участников постоянно шлёпают по рукам, избегают серьёзных вопросов и не дают ни программистов, ни интерфейсов. Теперь GMM, который даже администрируют, как показал белорусский опыт, индиффирентные люди из Индии, которые умеют два ответа: «разбирайтесь сами» и «забаним». Но люди идут — почему? В то время, как OSM держится на двух столпах: геоданных и сообществе, — коммерческие альтернативы предпочитают заменить один или даже два из них громким названием (хотел добавить «и пиаром», но когда вы последний раз видели рекламу НЯК?). Взлетит ли GMM, где вы никто, ваши данные вам не отдадут, и единственная перспектива роста — стать модератором? Конечно, это же Google.

Хотя технически Map Maker похож на НЯК, его modus operandi существенно иной: участникам предлагают не создавать карту заново, а редактировать ту, что уже есть в Google Maps. То есть, открыв сайт проекта, вы можете получить сведения о любом отрезке любой дороги в России: ограничение скорости, количество полос, покрытие и его качество, ограничения проезда. Отредактированные или добавленные данные, следовательно, значительно проще интегрировать в основные карты. Это даёт участникам Map Maker то, чего тщетно добивались от Яндекса участники НЯК и сочувствующие: смысл работы.

Кстати, насчёт гуглокарт. Вместе с открытием Map Maker Google объявил о сотнях новых и обновлённых карт городов, немало из которых лежат за полярным кругом. Конечно, обрисовывать или таскать названия оттуда нельзя, но Стефан Кнаус нашёл остроумный способ выудить из их карт пользу. Он навеян английскими сайтами валидации по картам Ordnance Survey. Зачем срисовывать, когда можно просто сравнить? Сайт compare.osm-tools.org фильтрует данные OpenStreetMap и карту Google, оставляя только дороги, реки и озёра. И затем показывает разницу. Найдя недостающую дорогу или озеро, можно открыть редактор и дорисовать их по разрешённым снимкам (не забывайте про IRS сканэкса). Конечно, на крупных масштабах могут ошибочно отмечаться существующие в OSM дороги: точностью привязки коммерческие карты в России не блещут.

 17 комментариев   2014   gmm   проекты

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

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

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

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

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

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

 7 комментариев   2014   проекты   экспорт

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

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

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

 5 комментариев   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, чтобы обновлять тайлы в заданном регионе.

 1 комментарий   2014   проекты
Ранее Ctrl + ↓

Мнения, высказанные на этом сайте, отражают точку зрения лично автора сайта и ничью больше: ни его бывших или настоящих работодателей, ни семьи и знакомых.