Чи є хороша бібліотека аналізу треків GPS?


35

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

  • Обчисліть пройдену відстань на трасі
  • Обчисліть середню швидкість і миттєві швидкості по колії
  • Обчисліть час у русі проти часу нерухомого
  • Спростіть доріжку, усуньте нерухомі сегменти
  • Сегментуйте доріжку на окремі доріжки, по одній на поїздку
  • Згладьте помилку вибірки GPS
  • Створіть профіль висоти, шукаючи точки в DEM
  • Перетворення треків у GPX, KML тощо для візуалізації

Існує безліч додатків, які аналізують GPS-доріжки. Я шукаю бібліотеку програмного забезпечення або набір інструментів для написання сценарію, щоб я міг писати власні програми. Мене мало хвилює формат введення; будь-який час, розмічений у Lat / lon балів, добре. Я в основному працюю в Python на Unix, але майже будь-яка мова буде робити.

Існуючі інструменти, які я використовую, включають GPSBabel та GDAL / OGR для перетворення та PostGIS для роботи з геометрією треку як рядкової лінії. Але в основному я закінчую писати власний код Python, який працює на масивах пар lat / lon, і це відчуває занадто низький рівень. Також деякі задачі, описані вище (наприклад, усунення помилки GPS), є досить тонкими. Чи є там якась існуюча бібліотека, яку я повинен використовувати?


1
Через тиждень-другий та щедрості я думаю, що відповідь на моє запитання тут "ні, немає бібліотеки для обробки треків GPX". Дуже багато додатків і кодів, але немає інструменту загального призначення. Це корисно знати. Для мене шлях вперед полягає в тому, щоб написати якийсь код PostGIS, який працює зі схемою, створеною імпортом GPX ogr2ogr. Ця схема містить як простий LineString для треку, так і таблицю точок із часовими позначками для часового виміру.
Нельсон

Чи є також код Delphi?

Google щойно оголосив API треків, про який я згадую тут для повноти. Це виглядає корисно, але в іншому напрямку, ніж я шукаю; докладніше про сухарях та геофасадах.
Нельсон

1
@Nelson Погляньте на цей відповідь, один з творця (досить відмінний онлайн редактор їзди) їздити з GPS від: stackoverflow.com/a/13084082/401828
heltonbiker

@Nelson Це питання для мене ще дуже актуальне, майже через 4 роки. Ви знайшли гарне рішення тим часом?
amball

Відповіді:


7

Ну, начебто залежить від обраної вами мови програмування, але я розробив mineturer.org на Java (сайт, по суті, це сайт для завантаження, аналізу та відображення GPX-даних).

Я використовував 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 pkg.
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 та файлів.

LB є https://github.com/jimmykane/quantified-self-lib Інтерфейс користувача на основі кутового https://github.com/jimmykane/quantified-self

Демонстрація демо https://www.quantified-self.io

Що можна зробити, це проаналізувати файл GPX, TCX або Fit, створити статистику, таку як підйом, спуск, відстань,


0

Відмінне запитання! Останнім часом я досить багато працюю з даними GPX, і найпростішим рішенням, який я знайшов, було перетворення точок треку в просторовий формат db, а потім створення представлень (просторових і табличних) для узагальнення даних за потребою. Мені не вдалося отримати результати, необхідні за допомогою OGR для імпорту моїх GPX-даних, тому я закінчив використовувати простий скрипт python для переміщення по XML-структурі дерева GPX і завантаження його в db (SpatiaLite в моєму випадку). Це, безумовно, не допомагає вам уникнути винахідлення колеса, проте я виявив, що мені вдалося отримати бажані результати підсумовування треків за допомогою поїздки, використовуючи існуючі функції SQL та просторові SQL.


1
Основний недолік, який я бачив при використанні PostGIS LineStrings, це те, що вони не містять даних часових позначок. Я, безумовно, можу відстежувати їх самостійно в окремій схемі, але тоді PostGIS не робить нічого, щоб допомогти мені зробити обчислення за часом. Чи є у вас якісь хитрощі для цього?
Нельсон

0

Я розробляю цю маленьку м'якушку для власного використання. Це в основному для візуалізації та не підтримує всіх ваших потреб, але, можливо, це може допомогти!


Спасибі! Це з відкритим кодом і на Java, тому це, безумовно, допомога.
Нельсон

0

ризикуючи не відповісти на ваше фактичне запитання :-), дозвольте запропонувати чудову програму, про яку ви, можливо, не чули, це все, що ви перерахували -

це мій єдиний приклад для перегляду, редагування та передачі GPX, серед іншого.

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

З повагою


Спасибі! TopoFusion - чудовий додаток для Windows, але мені дуже потрібна бібліотека. dotSpatial має якийсь корисний набір код для ліжечка. Це під публічною ліцензією Mozilla.
Нельсон

0

Якщо вам потрібна якась абстрактна специфікація для нейтральної мови, API, існує GeoAPI:

"Спільнота розвитку у створенні GIS-рішень докладає величезних зусиль. Проект GeoAPI має на меті зменшити дублювання та підвищити сумісність, надаючи нейтральні інтерфейси, призначені лише для інтерфейсів, похідні від стандартів OGC / ISO."

http://www.geoapi.org/

а точніше Стандарт впровадження (PDF)


0

Завантажте ваш трек GPX на цю URL-адресу

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

  • Обчисліть пройдену відстань на трасі
  • Обчисліть середню швидкість
  • Обчисліть час у русі проти часу, нерухомого (видно на профілі швидкості)
  • Спростіть доріжку, усуньте нерухомі сегменти
  • Згладьте помилку вибірки GPS
  • Перетворює KML / KMZ трек тощо для візуалізації
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.