Есть ли хорошая библиотека для анализа GPS треков?


35

Я продолжаю писать собственный код для работы с треками GPS: файлы GPX и журналы NMEA со своего телефона, специальный регистратор GPS и т. Д. Мне кажется, что я заново изобретаю колесо, и мне интересно, есть ли какая-нибудь стандартная библиотека / инструмент, который можно использовать для работы с треками GPS. Некоторые из вещей, которые я люблю делать:

  • Рассчитайте расстояние, пройденное на трассе
  • Рассчитать среднюю скорость и мгновенные скорости по трассе
  • Рассчитать время в движении против времени стационарного
  • Упростить трассу, устранить стационарные сегменты
  • Разделить трек на отдельные треки, по одному на поездку
  • Сглаживает ошибку выборки GPS
  • Создайте профиль высот, просматривая точки в DEM
  • Конвертировать треки в GPX, KML и т. Д. Для визуализации

Существует множество приложений, которые анализируют треки GPS. Я ищу библиотеку программного обеспечения или набор инструментов для сценариев, чтобы я мог писать свои собственные приложения. Меня не очень волнуют форматы ввода; Любые временные метки широты и долготы хорошо. Я в основном работаю в Python на Unix, но почти любой язык подойдет.

Существующие инструменты, которые я использую, включают GPSBabel и GDAL / OGR для преобразования и PostGIS для работы с геометрией дорожки в виде строки. Но в основном я заканчиваю тем, что пишу свой собственный код на Python, который работает с массивами пар широта / долгота и который чувствует себя слишком низким уровнем. Также некоторые из перечисленных выше задач (например, устранение ошибки GPS) довольно тонкие. Есть ли какая-то существующая библиотека, которую я должен использовать?


1
После недели или двух и щедрости я думаю, что ответ на мой вопрос здесь: «Нет, библиотеки для обработки треков GPX нет». Много приложений и кода, но нет универсального инструмента. Это полезно знать. Для меня путь вперед - написать некоторый код PostGIS, который работает со схемой, созданной импортом GPX от ogr2ogr. Эта схема содержит как простую LineString для дорожки, так и таблицу точек с временными метками для измерения времени.
Нельсон

Delphi-код тоже вариант?

Google только что объявил API треков, который я упомяну здесь для полноты. Это выглядит полезным, но в другом направлении, чем я ищу; больше о сухарях и геозонах.
Нельсон

1
@ Нельсон Посмотрите на этот ответ от одного из создателей (довольно отличный редактор онлайн-езды) Ride With GPS: stackoverflow.com/a/13084082/401828
heltonbiker

@ Нельсон Этот вопрос все еще очень актуален для меня, почти 4 года спустя. Вы нашли хорошее решение в то же время?
Amball

Ответы:


7

Ну, в некотором роде это зависит от того, какой язык программирования вы выберете, но я разработал mineturer.org на Java (по сути, это сайт для загрузки, анализа и отображения GPX-данных).

Iv'e использовал JAX-B (http://jaxb.java.net/) для чтения файлов GPX (на основе схемы GPX) и JTS (http://www.vividsolutions.com/jts/) + собственный код для анализирующая.

Исходный код для mineturer.org доступен под MIT-лицензией по адресу https://bitbucket.org/atlefren/gpsorganizer/.

Я думаю, код может дать вам хотя бы несколько указателей?


Благодарность! Ваш сайт выглядит великолепно (и его можно использовать с помощью Google Translate, даже если вы не читаете по-норвежски). Вы делаете именно тот анализ, который я хочу, и это большая помощь, которую вы открыли. Для Python я бы, вероятно, использовал GEOS вместо JTS; есть приличные привязки.
Нельсон

2
если вам это нравится ... проголосуйте !!
Stev_k

1
Просто продолжение: я начал портировать этот проект на Python, используя Shapely и GeoAlchemy (и Flask), он работает, но в настоящее время довольно медленный. Код на github.com/atlefren/mineturer2 для любопытных
atlefren

3

Я написал математический C # -lib для 2d / 3d математического нацеливания на обработку GPS: чтение GPX и TCX, фильтрацию и упрощение треков, кластеризацию треков / сегментов и преобразование в 2d плоскость.

https://www.nuget.org/packages/Math.Matthey/

https://www.nuget.org/packages/Math.Matthey.Tools.TrackReaders/


Можно ли получить описание или документацию для этого Nugets?
Петр Крампл

Я посмотрю, смогу ли я добавить файл Readme.MD в пакет NuGet.
TMA

Спасибо, хранилище недоступно. Можно ли проанализировать также файлы gpx, содержащие <rte>и <rtept>элементы, помимо <trk>элементов?
Петр Крампл

1
На данный момент поддерживается только trrk-> trkseg-> trkpt с расширениями трек-точек Garmin, но я добавил rte-> rtept в 2.3.0, но проверки пока нет.
TMA

1
Добавлена ​​документация для обоих пакетов на nuget.org.
TMA

2

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

Это обеспечивает следующую функциональность:

  • RINEX коммунальные услуги
  • позиционирование
  • Остаточный анализ
  • Ионосферное моделирование
  • Имитация отслеживания сигнала T
  • Основные преобразования
  • Сбор и преобразование данных наблюдений
  • Сравнение и проверка файлов.
  • Редактирование данных
  • Автономное и относительное позиционирование.

Спасибо за ответ! GPSTk выглядит увлекательно, но на более низком уровне, чем я ищу. Похоже, он работает с необработанными радиосигналами GPS и извлекает из них данные о местоположении. У меня уже есть исправления местоположения от моего потребительского оборудования GPS и нет доступа к спутниковым данным низкого уровня.
Нельсон

1

Существует библиотека с открытым исходным кодом, которую я только что закончил разрабатывать (до стабильной версии) и пользовательский интерфейс для анализа GPX, TCX и подходящих файлов.

Библиотека является https://github.com/jimmykane/quanified-self-lib Пользовательский интерфейс, основанный на Angular https://github.com/jimmykane/quantified-self

Демонстрационная версия https://www.quanified-self.io

Что он может сделать, это проанализировать файл GPX, TCX или Fit, генерировать статистику, такую ​​как подъем, спуск, расстояние,


0

Отличный вопрос! В последнее время я довольно много работал с данными GPX, и самым простым решением, которое я нашел, было преобразование точек трека в пространственный формат БД, а затем создание представлений (пространственных и табличных) для суммирования данных по мере необходимости. Мне не удалось получить результаты, необходимые с помощью OGR для импорта моих данных GPX, поэтому я прекратил использовать простой скрипт на Python для обхода XML-структуры GPX и загрузки его в базу данных (в моем случае SpatiaLite). Это определенно не поможет вам избежать повторного изобретения колеса, однако я обнаружил, что смог получить желаемые результаты суммирования треков за поездку с использованием существующих функций SQL и пространственного SQL.


1
Основной недостаток, который я видел при использовании PostGIS LineStrings, заключается в том, что они не содержат данных меток времени. Я, конечно, могу отслеживать их самостоятельно в отдельной схеме, но тогда PostGIS не делает ничего, чтобы помочь мне сделать расчеты на основе времени. У тебя есть какие-нибудь хитрости для этого?
Нельсон

0

Я разрабатываю этот небольшой софт для собственного использования. Это в основном для визуализации и не поддерживает все ваши потребности, но, возможно, это может помочь!


Благодарность! Это с открытым исходным кодом и на Java, так что это определенно помощь.
Нельсон

0

рискуя не ответить на ваш настоящий вопрос :-), позвольте мне предложить отличное приложение, о котором вы, возможно, не слышали, которое выполняет все, что вы перечислили -

это мой универсальный магазин для просмотра, редактирования и передачи GPX, между прочим.

И, возможно, больше по теме, может быть, проверить пространство имен позиционирования dotSpatial (.NET): http://dotspatial.codeplex.com/wikipage?title=DotSpatial.Position

С уважением.


Благодарность! TopoFusion - отличное приложение для Windows, но мне действительно нужна библиотека. У dotSpatial есть полезный код для кроватки. Это по публичной лицензии Mozilla.
Нельсон

0

Если вам нужна какая-то абстрактная спецификация для независимого от языка API, есть GeoAPI:

«Сообщество разработчиков в создании ГИС-решений прилагает огромные усилия. Проект GeoAPI направлен на уменьшение дублирования и повышение совместимости путем предоставления нейтральных API-интерфейсов только для интерфейса, полученных на основе стандартов OGC / ISO».

http://www.geoapi.org/

и, более конкретно, Стандарт внедрения (PDF)


0

Загрузите ваш трек GPX на этот URL

Вам будут предоставлены большинство запрошенных вами услуг, а именно:

  • Рассчитайте расстояние, пройденное на трассе
  • Рассчитать среднюю скорость
  • Рассчитать время в движении в зависимости от времени стационарно (видно на профиле скорости)
  • Упростить трассу, устранить стационарные сегменты
  • Сглаживает ошибку выборки GPS
  • Преобразует дорожку KML / KMZ и т. Д. Для визуализации
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.