🗺️ Как и обещал, более технический follow-up к моему посту про визуализацию GPS-треков. Получилось немного рандомно, потому что правда не знаю, как такую широкую тему структурировать.Сначала пару слов про Arc. Это iOS-only приложение (а точнее, два приложения: бесплатный Arc Mini и его «старший брат» Arc Timeline, который требует подписку), которое записывает gps-треки и анализирует их. Встроенный анализ нас сейчас не очень интересует, а вот запись — ещё как. Я не перестаю поражаться, насколько качественно он записывает геопозицию. Он способен трекать локацию в фоновом режиме с точностью до десятка метров (можно понять, по какой стороне дороги я иду!) и при этом съедает от силы 15% заряда в день. Все варианты, что я пробовал на андроиде, либо плохо трекают, либо жрут батарейку, либо и то и то. Главная причина, почему я до сих пор беру с собой айфон, хотя пользуюсь андроидом как основным устройством несколько месяцев как.Из минусов — вытащить из него юзабельные данные — это большая боль. Хоть он и хранит их в iCloud в каком-то собственном формате, не очень понятно как их преобразовать во что-то юзабельное типа GPX (скорее всего в теории возможно, но я не копался). Arc Mini умеет экспортировать GPX только за один день, повторять это 400+ раз мне не хотелось. Поэтому мне пришлось взять триал подписки на Arc Timeline и заставить его сделать помесячные экспорты. Такой вот неприятный вендор-лок.Теперь про визуализацию. Сначала я просто взял GPX данные и загрузил их в gpx.studio. Я боялся, что мне придётся ставить что-то типа Google Earth, но в итоге был приятно удивлён, что нашёлся такой удобный, лёгкий и красивый инструмент. Но сырые данные оказались немного шумными: например, если в поезде пропадал сигнал и точка оказывалась в 500 метрах от предыдущей, на визуализации они просто соединялись прямой линией. Мне это не понравилось, и я навайбкодил препроцесс-скриптик на питоне, который проходился по точкам, и, если они расположены больше чем в N метрах друг от друга, разрезал сегмент в этом месте на два. Да, буквально такую задачу я поставил Cursor, и на удивление он с первого раза написал годную имплементацию. Это помогло избавиться от большей части рандомных лазеров, стреляющих во все стороны.Мне очень хочется построить по этим данным scratch-map / «туман войны»: такую карту, на которой отмечены области, которые ты когда-либо посетил. Чтобы такое сделать, в принципе достаточно взять какую-нибудь систему разделения поверхности Земли на ячейки (например, H3 или S2), замапить все точки на ячейки определенного размера (я бы наверное выбрал поменьше, не больше 100м) и зарендерить эти ячейки. А если ещё посчитать количество точек в каждой ячейке, то получится heatmap — ещё одна визуализация, которую мне хотелось бы реализовать. Она позволит более точно и наглядно сравнить, по каким улицам я всё-таки чаще ходил.Ещё одно направление мысли — замапить точки на OSM-фичи. Хоть треки и довольно точные, на самых посещаемых участках заметно, что их бросает туда-сюда. Если «снапнуть» каждую точку к ближайшей дороге на OpenStreetMap, можно будет гораздо точнее судить о том, сколько раз я ходил по какой улице. Но это ещё сложнее: надо выкачивать датасет OSM, писать скрипт, обрабатывать миллион корнер кейсов. Я никогда с таким не работал, но однажды хочется попробовать.Ещё можно попробовать проанализировать данные по способу перемещения: разделить прогулки, поездки на велосипеде, машине, поезде и самолете. Это позволит посчитать всякую интересную статистику: например, сколько километров я прошёл пешком. Это не совсем тривиальная задача, но если натравить на неё какую-нибудь нейронку, мне кажется, может получиться что-то дельное.Как-то так. Данные очень любопытные, меня правда завораживает бродить по карте и вспоминать истории, связанные с тем или иным местом. Идей, что можно сделать ещё — тоже хоть отбавляй. Но только где найти время и мотивацию их реализовывать? Если будут какие-то подвижки, которые ещё не тянут на собственный пост в этот канал, буду рассказывать в лайв-канале, подписывайтесь
Оставить комментарий/отзыв