Приключение на час, туда и обратно
Упомянуто · Staniverse и ещё 2
Ценность путешествия не всегда измеряется в километрах от дома. Чтобы перезагрузить голову, необязательно лететь на Бали. Иногда хватает уехать на велике километров за двадцать, постоять у полузаброшенной церкви и посмотреть, как солнце садится в пруд у какого-то СНТ.
Всё лето ловил себя на одном и том же: открываю карту, ищу какую-нибудь POI в паре часов доступности, прикидываю километраж. Полчаса поисков ради полутора часов покатушки.
Хотелось нажать кнопку. «Вот тебе маршрут в твоём бюджете времени, через озеро и полузаброшенную церковь, держи файл для OsmAnd, садись и поезжай».
Так, когда оставались токены после рабочих и других задач, потихоньку вайбкодился Nearventure аж в нескольких воплощениях (веб-апп и тг-бот с зачатками Mini App @nearventure_bot). Во всех логика примерно одна: кидаете (или отмечаете) геопозицию старта, говорите, сколько у вас времени и на чём вы двигаетесь, тыкаете слои (природа, храмы, наследие) — на выходе кольцевой маршрут и GPX для навигатора.
Демо доступно по адресу nearventure.ru
Сразу проговорю: оно сырое. Очень. Пруф-оф-концепт. Мне важнее было понять, тяну ли я такое технически (на удивление, никогда не делал веб-приложения, мини-аппы в тг, вообще тайпскрипт что-то) и примерить на себя возможную будущую профессию после магистратуры, исследуя возможные интерфейсы для этой задумки.

Сейчас оно работает для ПФО, для построения и хранения графов всей РФ в GraphHopper (он считает оптимальный маршрут после того, как по изохроне подбираются объекты выбранных категорий в бюджете времени) 4GB RAM моей VPS и сколько-то свопа не хватает. Похоже, нужно рассмотреть вариант не держать их постоянно в оперативке, а подгружать с SSD, потеряв в отзывчивости. Но коли мне, кажется, скоро нужно будет СЗФО, то придётся сделать так. Кстати, если бы не тг-часть, то оно бы работало на 150-рублёвой впске от клауд.ру.
Поскольку я для других своих проектов хочу когда-то заиметь базу достопримечательностей, стояла задача самому себе что-то придумать из открытых данных. Но тут началась одна из двух больших болей. Пример: на Соборной площади в Слободском стоит деревянная Михайло-Архангельская церковь 1610 года ака «без единого гвоздя, была в Париже, а ты — нет». Туристы знают её так, в OSM она подписана так же, в Викивояже. А в официальном Реестре объектов культурного наследия Минкульта она значится как «Часовня Верхне-Чепецкого монастыря». Другое имя, другой тип. Автоматом эти две записи не совпадут никогда.
Под это дело вырос отдельный инструмент, poi-toolkit, который живёт в отдельном репозитории. Он собирает базу из пяти открытых источников: OSM, ЕГРКН, музеи Минкультуры, Викидата, Викивояжа. Умеет в процессе пользоваться локальным геокодером Photon, к нему есть готовая БД России и не нужно платить Яндексам за их дорогущий сервис. Здесь было важно, чтобы у каждой строчки было видно, откуда она приехала в финальный файл, который я импортирую в бэкенд. А могу и не для него хотеть использовать.

Примерно как работает
В случае выше я просто дописал в OSM альтернативное имя, чтобы мэтчеру было за что зацепиться. И вот такой мороки там много. С дублями, как их обрабатывать, как выбирать из какого источника что брать и какой приоритет.
Хочется, чтобы обычная покатушка превращалась в акт гражданской науки. В начале этого велосезона, когда я стал изучать окрестности Слободского за деревней Бакули (там музей Бакулева, того самого кардиохирурга) набрёл на славный водоём. Сфоткал, трек записал. А в OSM (который использует не только моё сырое демо, но и куча настоящих и полезных приложений/сервисов) его не было. Значит, ни мой сервис, ни любой другой маршрут туда или через него не построит. Для них там просто пусто. Ну я взял и обвёл его по спутнику в Rapid Editor. Теперь водоём есть в OSM, доехал до тайлов, и GraphHopper со свежими весами спокойно тянет туда дорогу. А там отличные кольца получаются для велопрогулок в разные стороны от него.
Что в идеальном мире должно происходить? Доехал до точки — проверил, что объект вообще существует, завёл недостающие теги, залил фотку в Викисклад. Мне бы ещё 360-камеру с GPS для Mapillary, но это уже фантазии в одном ряду с лазерным сканером и трёхдверной Нивой.
Геймификацию с ачивками хотел, но на текущей стадии упёрся в закон: авторизацию через тг просто так не воткнёшь. А заводить вход через VK или мейл.ру и потом уведомлять РКН, что я обрабатываю персональные данные, чё-т не хочется. Но с помощью этой геймификации можно было бы как раз наполнять открытые данные и даже больше. Например, просить пройтись с включенным видео на телефоне вокруг какого-то труднодоступного объекта и отправить его. На сервере бы посчитались Gaussian Splat`ы, загрузились в мой будущий каталог и на какую-нибудь метавёрс-платформу, чтоб весь мир мог оказаться в этой локации. Или делать из этого генеративный арт в TouchDesigner. Переизобретение Niantic, конечно, но с целью документации и сохранения наследия.
Ещё нужно научить процесс построения маршрута смотреть на погоду: в +32 тянет к воде и в тень, а после дождя в лес не сунешься, зато по асфальту доедешь до дальней церкви. Я понимаю, что там можно придумывать наказания и поощрения в профилях GH.

Карьер в Первомайском
Более DH-ная задача — посадить агента на LangGraph, чтобы ползал за описаниями мест по Интернетам, книгам и открытым архивам (той же Библиотеки им. Герцена). В Telegram-боте есть режим «экскурсовода», который ведёт от точки до точки. Туда больше информации, рерайтной под формат и с генерацией голосовых дикторским голосом очень пригодилось бы. Как и для какого-нибудь моего будущего ультимативного ИИ-компаньона-гида по Вятке. А то будем все ходить с XR-очками лёгкими вместе в мире дополненной реальности, так пусть хоть аниме-девочки экскурсоводят по купеческому и природному!
А ещё было бы классно уметь не только паразитировать на открытых данных, но и отдавать в них что-то обратно. Те же расписания музеев от Минкультуры массово заливать в OSM через JOSM. Пока не рискую, но хоть понимаю, что инструмент можно создать самому (осталось узнать про отношения сообщества к такому и чтоб инструмент был надёжным, чего пока нет).
Код с доками лежит на гитхабе. Там же рядом poi-toolkit для него (и не только)
Помочь можно правками OSM в своём регионе, PR и Issues (вдруг у кого лишние токены остаются в неделях), ну и донатами (на те же подписочки, сервера и прочее. домен-то я зачем-то уже купил, хах).
Для вдохновения почитайте: раз, два, три.
Я и сам писал про важность открытых карт, и показывал на своём велосипедном примере




