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

проекты

Микромаппинг улиц

Photo by Dario Ayala /Montreal Gazette

Как вы знаете, линии highway в осме нужно нещадно резать. Изменилось количество полос? Остановка запрещена? Пунктирная разделительная сменилась сплошной? Появилась стрелочка «прямо или направо»? Началось место для парковки? Режем и расставляем теги.

Когда я год назад уточнял по панорамам улицы в своём районе, я быстро наткнулся на проблемы такого подхода. Например, parking:lane:*:capacity — количество мест. Звучит разумно, пока с другой стороны дороги не меняются полосы, и дорогу не нужно разбивать прямо по парковке. И пересчитывать capacity. А если на улице ещё есть велополоса, то микромаппинг становится совсем изнурительным.

Об этом в 2019 году писала Эмили из команды SharedStreets. Они занимались картированием условий вдоль тротуаров: разрешений на остановку и стоянку, мест для разгрузки, и тому подобного. В Северной Америке любят понаставить знаков — и наслаивающиеся теги ограничений на линиях улиц начинают угрожающе трещать. Страшно двигать точки, того и гляди, сломаешь.

Для решения предложили мапить ограничения косвенно, через знаки. Ставишь для знака точку со всеми нужными тегами, при желании связываешь с внешней базой. Когда приложению нужно узнать, что там с парковкой, оно проецирует эти точки на улицы и вычисляет применимые ограничения. Сразу понятна сторона улицы, и двигать геометрию не так страшно. Примерно так у нас картируют знаки «уступите дорогу»: недалеко от перекрёстка, чтобы было понятно, к чему относятся.

Увы, предложенный в статье тег никак не продвигали, и taginfo не может найти ни одного примера. Кто знает — идея разделить геометрию и атрибутику не так плоха. Может быть, мы бы и запреты обгона бы сейчас картировали через расположение знаков, а точек traffic_sign=city_limit хватило бы для неявного ограничения скорости в населённых пунктах.

Резать незачем

Год назад Алексу Сайделу (Supaplex030 в осме) понадобилось посчитать парковочные места в берлинском районе Нойкёльне. Для этого он разметил его весь (по снимкам, конечно) тегами parking:lane=*. Обработав данные в QGIS и посчитав отношение количества мест к зарегистрированным автомобилям, он сделал наглядную картинку. Для нас же важно то, как именно он рисовал эти места.

Он не отлавливал знаки на панорамах и не отмерял метры, чтобы поставить теги ровно на нужные отрезки дорог. Он не добавлял числа в capacity. Если посмотреть на район в OSM, удивляет, что свойства парковок стоят на целиковых отрезках от перекрёстка до перекрёстка. Алекс же в своём скрипте предобработки вырезает пять метров до перекрёстков, 15 м до автобусных остановок и прочие препятствия, а затем считает, сколько машин поместится с выбранным видом парковки (например, перпендикулярным).

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

Не остановиться

Почуствовав мощь предобработки и похожесть отрисованной карты на спутниковый снимок, Алекс продолжил. Как правильно показать велодорожки? Можно связать их с улицей через cycleway=lane и дополнительно описать в тегах bicycle:lanes и предложенном cycleway:separation. Несложно нарисовать стрелочки на полосах из значений turn:lanes.

Где этому предел? OpenStreetMap бесконечно глубок: можно мапить люки и уличные фонари. Автор выгреб из тегов и геометрии почти всё возможное. Особенно впечатлило, как он рисовал полосы вокруг островков безопасности: две линии проезжих частей превращал в один визуальный объект. А сам островок детально отрисовывал полигоном traffic_calming=island.

И это, конечно, микромапинг. Для нужного уровня детализации он оказался неизбежен. Всплыли и полигоны area:highway, которые не совсем про картографию. С их помощью отрисовываются стоп-линии на перекрёстках. А машинки вдоль дорог примыкают к поребрикам barrier=kerb. На эти линии предобработка полагается во многом — но, например, когда я вижу их в Москве, я вздыхаю и предпочитаю не смотреть. Ведь абсолютная практическая точность данных OSM не ниже полуметра и сопоставлять поребрики с другими объектами, часто нарисованными по разным источникам, больно.

Превосходство предобработки

Работа Supaplex030 показывает, что правильно расставленные теги заменяют микромапинг и сложные схемы с геометриями. Главное — не ожидать от осма, что всё нужное доставят в уже переваренном виде. Предварительная обработка сделает из геоданных то, что нужно именно вам: и велодорожки, и навигацию по площадям, рекам и железным дорогам, и картостиль, не отличимый от генштабовского.

Обработав OSM и наложив сверху немного местных открытых данных, Дастин Карлино сделал гениальный инструмент для дорожного планирования, симулятор трафика A/B Street. Машинки и велосипедисты ездят по правильным полосам, создают пробки, паркуются где надо. Даже и не скажешь, что это та же карта, что и у Mapbox, где одна линия на экране для дороги — уже достижение. Про A/B Street автор рассказал на SotM 2021, в том числе и про главную его проблему — отсутствие пользователей.

Когда в Maps.Me мне предложили вытащить из OSM данные для прокладки маршрутов через метро, я понимал невозможность задачи. Но формализация правил плюс предобработка — и навигация в двухстах городах у нас в кармане. Следующим шагом была бы навигация по остальному общественному транспорту, но я слишком выгорел, чтобы выдвинуть на голосование универсальную транспортную схему.

Профессиональное использование OpenStreetMap — это не только знание тегов и региональных особенностей. Это и умение правильно спланировать работу с данными, чтобы не нагрузить ни картографов, ни тайловый сервер. Предобработка — именно то волшебство, которое возносит данные OSM над коммерческими. Мы много говорим, что наша модель данных лучше других свободой в тегировании. Эта свобода требует знаний, алгоритмов и вычислительных ресурсов. Сложно. Но лучше несвободы.

 1 комментарий   6 мес   картостили   проекты   теги

Natural Earth v5

Есть набор геоданных, который использует примерно каждый, кто делает карту масштаба страны или континента. Это не OpenStreetMap — у нас всё плохо с генерализацией и с лицензией. Речь о данных Natural Earth: сборнике физических и политических слоёв в общественном достоянии. Из них можно быстро собрать обзорную карту с административными границами, морями и городами.

На прошлой неделе вышла версия 5.0.0 этого набора. Это довольно примечательное событие: до этого три с половиной года данные не обновлялись. В моей ленте обновление прошло одним твитом — внимания этому уделяют не больше, чем выходу ядра linux 5.0, или LibreOffice 7.0. Базовая инфраструктура, работу выполняет, надёжно и просто.

В списке изменений сплошная рутина, если не считать долгожданной поддержки спорных территорий:

  • Добавили точки зрения на административные границы. Теперь можно скачать слой ne_10m_admin_0 таким, как его видят в России, Украине, Польше или Японии — всего 31 страна. Или воспользоваться полями fclass_* в общем слое.
  • Перевели названия на 26 языков (ранее было 21), включая украинский. Переводы подтягивают через викиданные, идентификаторы которых массово раставляют в таблицах.
  • Обновили все границы и населённые пункты, переименовали Северную Македонию и Эсватини, пару островов и аэропортов.
  • Добавили слои admin-2 с американскими counties.
  • Разбили Аральское море на три поменьше, уточнили геометрию ещё нескольких озёр и название Псковского озера.
  • Восстановили 136 озёр, которые потеряли в четвёртой версии и добавили слои с гидрографией Австралии.
8 мес   проекты

Савёловские Мнёвники на Кушелевке под Семково

С этого дня поисковик Nominatim на главной osm.org по запросу «Савёловский» возвращает точно такие же результаты, как по «Савеловский», без «ё». Сара Хоффманн встроила в обработчик данных токенизатор ICU, благодаря которому взаимозаменяемые буквы можно заменять. Это требовало перезаливки данных в базу, которую приурочили к выходу Nominatim 4.0.0.

Действию, очевидному для любого, кто владеет русским языком, Nominatim просили научить с 2018 года. Было два способа: воспользоваться новым токенизатором, добавленным в PostgreSQL за пару месяцев до просьбы, или поправить таблицу автозамены в Nominatim. Последнее K Rahul Reddy сделал слишком поздно: его пул-реквест отклонили, потому что таблицу планировали убрать.

Русскоязычным сервисам было бы разумно забыть о номинатиме и воспользоваться альтернативными поисковыми движками: Pelias или Gazetteer. Не Photon — тот работает на данных Nominatim и пока различает эти буквы. К сожалению, размер имеет значение: несмотря на проблемы с поиском и сложный процесс установки, люди предпочитают пользоваться движками из списка Top 1.

В этом году разработка Nominatim набрала невиданную скорость: релизы выходили один за другим, а Саре постоянно находила что-то новое, о чём рассказать на конференциях или в блоге проекта. Причина — в деньгах. Движок останется открытым на 100%, но это не означает, что разработчики будут голодать. На сайте упомянуты несколько спонсоров — NLNet, OpenCage, GraphHopper, Komoot и другие. Судя по их количеству и по тому, что OSMF, чей грант запустил ускорение проекта, упомянут последним, денег там достаточно, чтобы Сара не занималась ничем другим. Это обнадёживает: может, скоро движок научится другим полезным эвристикам, типа учёта дефисов, пробелов и литер в номерах домов.

Помимо замены самопального токенизатора на стандартный ICU от ассоциации Unicode, в четвёртой версии убрали скрипты командной строки на PHP в пользу единого инструмента на Python. Этот инструмент помогает во всём, от подготовки базы данных до её обновления и администрирования. То есть, кажется, теперь не нужно устанавливать PHP для подготовки данных. В документации дописали большой раздел про настройку движка. И теперь можно подключить базу почтовых индексов для любой страны, а не только для США и Великобритании, как раньше.

9 мес   nominatim   osm.org   проекты

Районный бот

Я живу в классическом районе новостроек: широкие проспекты или лес по краям, десятки высоток внутри, и всё в пешей доступности. Застройщик не знал меры с торговыми площадями: у нас три ТЦ и офисные помещения в подвалах почти каждого дома. Короче, столько магазинов и заведений вокруг, что запомнить невозможно, поэтому хочется нарисовать карту.

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

Во-вторых, веб не нужен. Жизнь уходит из страничек в браузере, они — для чтения лонгридов, а тыкают люди в экраны телефонов. Делать проекты нужно там, где живёт твоя целевая аудитория. Ларёк с мороженым лучше открывать на пляже, а не в музее. Указания, куда пройти, — с собой, а не дома на компьютере. Ну и наконец, интерфейс телеграма — отличный вызов для картографического приложения.

Поле ввода и ряд кнопок под ним — это всё, что есть. Нечего таскать, некуда кликать. Бот простой и умеет только отвечать на вопросы. Но знает многое:

  • Ищет заведения по ключевым словам. Да, я внезапно написал геокодер.
  • Выдаёт карту из космоснимка, который я специально обрисовал в гимпе.
  • Подсказывает подъезд и этаж по номеру квартиры для всех домов.

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

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

Каждый вечер я возвращался домой и дописывал бота, чтобы переложить с себя на него все сложности. Вводить «https://» муторно — пусть бот сам превращает «Ttn. By» в «https://ttn.by». Не ждём точек с запятой и дефисов, позволяем пробелы и запятые. Вместо ввода номера дома предлагаем выбор из ближайших адресов. Ну и так далее: не нужно заставлять человека делать работу, с которой справится машина.

Так я собирал по 60-100 заведений в день, около 15 в час. Это включало в себя не только списывание данных, но и иногда разговоры с сотрудниками, которым я раздавал визитки бота. На районе около полутысячи заведений — знай я это заранее, дважды бы подумал, запуская проект. Но теперь он почти завершён, и я готовлю доклад на FOSDEM и приглашения для СМИ.

Уверен, эта новость вызовет три вопроса:

  1. Кто будет обновлять данные, когда я съеду с Маяка Минска?

Не знаю. То есть, конечно, любой человек может нажать кнопку «Поправить» под любым найденным в боте заведением, равно как и добавить новое. Но по опыту понятно, что никто этим заниматься не будет: людям, даже владельцам, проще написать админу в личку или забить. Нужны такие же энтузиасты, как я. И нужен интерфейс, который позволит на повторный обход полутысячи заведений угрохать не неделю, а один-два дня. Его зачатки уже есть (и способ описан в документации), но можно сделать удобнее, особенно для торговых центров. Я пока думаю, как.

  1. Где тут OpenStreetMap?

Только в подложке мини-карт и в классификации заведений, которая основана на тегах OSM. Ни одна точка не взята из этого проекта. Вести что-то подобное сразу в OSM — безумие: мы все знаем, что в наших редакторах просто добавлять заведения, но следить за их актуальностью и исправлять — невероятно сложно. И тегировать необычные магазины, типа вегетарианских продуктов, тоже: как бы вместо разработки не увязнуть на неделю в спорах с осмерами про теги. Так что нет, спасибо. Но базу заведений теоретически можно импортировать в OSM, так что если есть желающие, пишите.

  1. Как мне поднять такого же бота для своего района?

Самый главный вопрос! Бот опубликован на гитхабе, рядом с ним лежит огромная документация в пяти частях на русском языке. В ней я описал весь процесс, от обхода подъездов и установки бота до сбора заведений и администрирования. Если не считать русского языка, сообщения на котором разбросаны по коду, бот не привязан ни к каким атрибутам моего района. Хотите потратить неделю на обход каждого здания и потом поднять полезный сервис для всех соседей — буду рад помочь!

Приложение пилят — опенсорсные щепки летят. Пока готовил данные и писал бота, разочаровался в сложности базовых операций в вебе. Например, получить числа координат для прямоугольника можно на нескольких сайтах (например), и довольно удобно. А вот скопировать координаты одной точки — непросто. Специальные сайты писались семь-восемь лет назад и все сломались. А использовать для этого osm.org, где нужно открывать панель, ставить галочку, нажимать Ctrl+C... Линукс-версия телеграма не позволяет прикреплять координаты, поэтому пришлось писать свой сайт на замену. Очень простой: двигаешь карту, нажимаешь кнопку, вставляешь куда нужно.

Ещё я горжусь редактором точек в GeoJSON, которым пользуюсь для причёсывания базы заведений бота. Классические редакторы типа geojson.io, uMap, QGIS не катят: чтобы отредактировать точку, нужно ползать по таблицам, двигать мышкой, нажимать «сохранить». Здесь же всё супер-просто: двойной клик для создания точки, все свойства — простым текстом типа «name Название», по примеру Level0. Поэтому копипаст пачки атрибутов вообще не проблема. Есть фильтр а-ля поиск в JOSM, всё сохраняется автоматически и можно восстановить, если закроешь вкладку. Никаких меню и не больше шести кнопок на экране.

Эти новогодние каникулы прошли под темой хорошего пользовательского интерфейса. Видишь неудобство — не мирись, исправь. Именно так развиваются открытые экосистемы: людям чего-то не хватает, и внезапно у них щёлкает понимание, как должно быть, и образовывается время это сделать. Сообщество открытого кода последние годы пытается решить вопрос, что делать, когда понимание и время возникают у разных людей, и откуда взять деньги, чтобы их соединить. Но пока жителям Маяка Минска и тем, кто работает с точками в GeoJSON, немного повезло.

 9 комментариев   2021   проекты

Mapillary in 2020 will now have stories

Позавчера Mapillary неловко объявили, что их купил Facebook. Из размеров компаний уже понятно, что это большие новости: не зря они пролетели по всем технологическим блогам и телеграм-каналам про данные.

Хранить и обрабатывать миллионы фоточек для картографических нужд сложно. В 2009 году Джон Маккеррел сделал проект OpenStreetView, куда люди загружали снимки по одному через веб-интерфейс или пакетом через ftp. Модерировать их было скучно, законы на съёмку публичных пространств слишком ограничивали, а стоимость хранения данных не падала. Казалось, сделать открытую альтернативу Google Street View было технически невозможно.

Спустя пять лет шведский стартап Mapillary доказал обратное. Они не распространялись про источники финансирования, но кажется, среди коммерческих компаний был огромный запрос на хранение и обработку частных панорамных снимков. Для OpenStreetMap в компании за следующие шесть лет сделали очень много: собрали и опубликовали более миллиарда фотографий, встроили слои в iD и JOSM, автоматизировали распознавание дорожных знаков и прочих объектов. Mapillary ощущается такой же частью инфраструктуры открытых карт, как, например, Overpass API. Он полезен не только для OSM: муниципалитеты и министерства разных стран публикуют в нём снимки для отслеживания состояния улиц.

Для всех пользователей Mapillary эта покупка — отличная новость:

  • Источник финансирования стал понятен, и поэтому меньше опасений, что компания внезапно закроется.
  • Поддержка крупной компании — это дополнительное доверие со стороны других крупных компаний. То есть, больше снимков для нас и активнее разработка.
  • Разработчики перестанут отвлекаться на коммерческие задачи и сфокусируются на извлечении максимума картографических данных из фотографий.
  • Все снимки становятся бесплатны также и для коммерческого использования.

Последний пункт особенно удивляет, если не понимать, для чего фейсбуку Mapillary. Купили проект не за перспективную бизнес-модель: в сравнении с Facebook их прибыль ничтожна. Это не случай maps.me, когда после года бесплатного развития mail.ru потребовал от проекта прибыли. Технологические гиганты покупают стартап, если а) он решает какую-то проблему компании, б) у него исключительно талантливая команда. В последнем мы не сомневаемся.

Зарабатывать на Mapillary фейсбук не планирует, и конкуренции он тоже не боится. Полгода назад Grab купил OpenStreetCam — альтернативу Mapillary с 2016 года. Это был более гиковский проект, ориентированный только на снимки с автомобилей. Разработчики Telenav, владельца OSC, даже сделали интеграцию со сканерами OBD2: знание скорости и угла поворота машины помогает улучшать координаты с GPS. Увы, после покупки сервис долго не прожил: загрузка треков начала барахлить, ответственных не найти. Мы считаем, что OSC теперь решает внутренние задачи Grab, а для публики он умер.

OpenStreetCam создавали, потому что универсальный контракт с Mapillary был бы слишком дорогим, и перекупили его по той же причине. Сложно представить, что условный Uber сможет получить все фотографии от нынешнего владельца OpenStreetCam, их азиатского конкурента. Но Uber и Grab не конкуренты фейсбуку, а другие социальные сети едва ли могут получить преимущество от фотографий улиц. Поэтому открывая снимки Mapillary для коммерческого использования, Facebook ничем не рискует.

С покупкой Mapillary фейсбук получает миллиард фотографий и двадцать магистров и кандидатов наук с кучей опубликованных статей, патентов и алгоритмов. Зачем им? Ответ неожиданен и прост: пока мы не смотрели, Facebook превратился в главную технологическую компанию в OpenStreetMap, оставив окуклившийся Mapbox позади. Видимо, кто-то убедил Цукерберга, что на рынках Азии и Африки можно заработать больше, если в приложениях жители городов смогут найти свои улицы. А поскольку свою карту фейсбуку делать не резон, а готовые сложно подбирать и дорого покупать, то компания обратилась к OpenStreetMap.

Facebook известен в проекте тем, что с помощью нейросеточек находит на спутниковых снимках дороги, векторизует их, сравнивает с дорогами в OSM и помогает картографам быстро дорисовать недостающее. Первые их попытки добавлять дороги в Египте и Таиланде поссорили их с местными сообществами, но спустя три года все рады нажимать на кнопки в RapiD, вместо того, чтобы отрисовывать дороги руками. У фейсбука, разумеется, есть скрытая армия картографов, но главное в OpenStreetMap — одобрение сообщества.

А теперь представьте, что вдобавок к снимкам и данным OSM фейсбук получил фотографии Mapillary. Как тут развернутся их инженеры! Со спутника видна дорога, с камеры — её покрытие, разметка и знаки. Со спутника видим дом, с камеры — его высоту, материал, вывеску магазина. Берём заведения из OSM, сопоставляем с фотографиями, отмечаем вероятно устаревшие, передаём армии картографов. Считаем количество машин на фотографиях, выводим классификацию дорог. Несмотря на достижения команды Mapillary, они едва-едва вошли в океан способов использовать свои фотографии для улучшения карты. Взять тот же редактор Deriviste Ричарда Фейрхёрста: видишь скамейку на фото, кликаешь в неё, вводишь «скамейка», сохраняешь. Но в Mapillary уже умеют определять, что за объект на фото!

При всём этом ликовании некоторые осмеры в комментариях к новости настроены скептически, выкачивают свои снимки из Mapillary и закрывают аккаунты. Никто не любит фейсбук — и заслуженно. Я сам сократил посещение их сайта до пяти минут в день и не трогаю RapiD. Несмотря на заслуги Google и Microsoft, именно Facebook сегодня — технологическая корпорация зла. Проблема фейсбука не в технологиях, а в этике: едва ли Mapillary закроют или обвесят рекламой. Но кто знает, как именно компания воспользуется оригиналами фотографий со всего земного шара, чтобы пополнить свою базу данных о жителях (включая авторов снимков), их привычках, координатах и социальных связях?

Новые данные огорчат осмеров и новыми стычками с компанией. Facebook уже высказывал заинтересованность в импортах заведений и зданий. Усиленные распознанными фотографиями, коммерческие данные уверят сотрудников в том, что картографы-любители рядом не стояли с результатами работы их нейросеточек. Повторится Египет, только уже ближе к «первому миру». Компания извинится раз, извинится другой, а затем её инженеры найдут подход, чтобы убедить сообщество в том, что оно контролирует ситуацию. И в этот момент ещё часть контроля над данными уйдёт фейсбуку.

Уходить от Mapillary некуда: OpenStreetCam умер, остался... OpenTrailView 360 Ника Уайтлегга. Полностью открытый код, поддержка панорам, внимание на пешеходные маршруты. Достойное начинание — пока в проекте участвуют пара человек. Но стоит ему привлечь публику, как потребуется финансирование для хранения терабайтов фотографий и для разработки средств защиты личной информации, как то замыливания лиц и автомобильных номеров. Подобный проект может быть открытым в теории или в личном использовании, но масштабировать его можно только при поддержке крупной компании. Единственная альтернатива — каталог с геопривязанными фоточками на своём компьютере.

Facebook купил Mapillary, и это хорошая новость для фейсбука, для команды Mapillary, для жителей стран с плохими картами и для осмеров. Не терпится увидеть, как их разработчики придумают улучшать OpenStreetMap с новыми ресурсами и знаниями. Печально лишь то, что теперь, отправляя свежие снимки в Mapillary, нельзя не думать, что отправляешь свой маршрут и всё, что ты видел по пути, не в дружелюбную шведскую компанию, а в фейсбук.

 5 комментариев   2020   facebook   панорамы   проекты
Ранее Ctrl + ↓

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