Existe-t-il une bonne bibliothèque d’analyses de traces GPS?


35

Je continue d'écrire du code personnalisé pour travailler avec les pistes GPS: fichiers GPX et journaux NMEA de mon téléphone, enregistreur GPS dédié, etc. J'ai l'impression de réinventer la roue et je me demande s'il existe une bibliothèque / un outil standard que je peux utiliser pour travailler. avec des pistes GPS. Certaines des choses que j'aime faire:

  • Calculer la distance parcourue sur la piste
  • Calculer la vitesse moyenne et les vitesses instantanées sur la piste
  • Calculer le temps en mouvement par rapport au temps stationnaire
  • Simplifier la piste, éliminer les segments immobiles
  • Segmenter une piste en pistes séparées, une par voyage
  • Lisser l'erreur d'échantillonnage GPS
  • Créer un profil d'altitude en recherchant des points dans un DEM
  • Convertir les pistes en GPX, KML, etc. pour la visualisation

Il existe de nombreuses applications pour analyser les traces GPS. Je recherche une bibliothèque de logiciels ou un ensemble d’outils pouvant être écrit pour pouvoir écrire mes propres applications. Je me moque bien des formats d’entrée; N'importe quel type de points lat / long estampillés. Je travaille principalement en Python sous Unix, mais à peu près n'importe quel langage fera l'affaire.

Les outils existants que j'utilise comprennent GPSBabel et GDAL / OGR pour la conversion et PostGIS pour utiliser la géométrie de la piste sous forme de chaîne de caractères. Mais je finis surtout par écrire mon propre code Python qui fonctionne sur des tableaux de paires de lat / lon et qui semble trop bas. De plus, certaines des tâches ci-dessus (comme l'élimination de l'erreur GPS) sont assez subtiles. Existe-t-il une bibliothèque que je devrais utiliser?


1
Après une semaine ou deux et une prime, je pense que la réponse à ma question est "non, il n'y a pas de bibliothèque pour le traitement des pistes GPX". Beaucoup d'applications et de code, mais pas d'outil à usage général. C'est utile de le savoir. Pour moi, la voie à suivre consiste à écrire du code PostGIS qui fonctionne avec le schéma créé par l'importation GPX de ogr2ogr. Ce schéma contient à la fois un simple LineString pour la piste et une table de points avec des horodatages pour la dimension temporelle.
Nelson le

Le code Delphi est-il aussi une option?

Google vient d'annoncer une API Tracks que je mentionne ici par souci d'exhaustivité. Cela semble utile, mais dans une direction différente de celle que je recherche; plus sur la chapelure et les geofences.
Nelson

1
@Nelson Jetez un coup d'œil à cette réponse de l'un des créateurs de (plutôt excellent éditeur de
balades en

@ Nelson Cette question est toujours d'actualité pour moi, près de 4 ans plus tard. Avez-vous trouvé une bonne solution entre-temps?
amball

Réponses:


7

Cela dépend un peu du langage de programmation de votre choix, mais j’ai développé mineturer.org en Java (le site est essentiellement un site de téléchargement, d’analyse et d’affichage des données GPX).

J'ai utilisé JAX-B (http://jaxb.java.net/) pour lire les fichiers GPX (basés sur le schéma GPX) et JTS (http://www.vividsolutions.com/jts/) + leur propre code pour en cours d'analyse.

Le code source de mineturer.org est disponible sous une licence MIT à l' adresse https://bitbucket.org/atlefren/gpsorganizer/.

Je suppose que le code pourrait vous donner des indications au moins?


Merci! Votre site a fière allure (et est très utilisable via Google Translate même si vous ne lisez pas le norvégien). Vous faites exactement le type d'analyse que je veux et c'est une aide précieuse que vous ayez ouverte à l'origine. Pour Python, j'utiliserais probablement GEOS au lieu de JTS; il y a des liaisons décentes.
Nelson

2
si vous l'aimez ... upvote it !!
Stev_k

1
Juste un suivi: j'ai commencé à porter ce projet en Python, en utilisant Shapely et GeoAlchemy (et Flask), cela fonctionne mais est plutôt lent pour le moment. Code chez github.com/atlefren/mineturer2 pour les curieux
atlefren

3

J'ai écrit une bibliothèque mathématique en C # pour le traitement mathématique 2D / 3D: lecture de GPX et TCX, filtrage et simplification de pistes, regroupement de pistes / segments et transformation en plan 2D.

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

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


Est-il possible d'obtenir une description ou de la documentation pour ces nugets?
Petr Krampl

Je verrai si je peux ajouter un fichier Readme.MD à l’équipement NuGet.
tma

Merci, le référentiel n'est pas accessible. Est-il possible d'analyser aussi les fichiers gpx contenant des éléments <rte>et des <rtept>éléments, en plus des <trk>éléments?
Petr Krampl

1
Pour l'instant, ne prend en charge que les extensions de point de trace Garmin trrk-> trkseg-> trkpt, mais j'ai ajouté rte-> rtept dans la version 2.3.0, mais aucune validation jusqu'à présent.
tma

1
Ajout de la documentation pour les deux packages sur nuget.org.
tma

2

La trousse à outils GPS devrait aider. Il s'agit d'une bibliothèque open source et d'une suite d'applications visant à libérer les chercheurs du codage de niveau inférieur.

Il fournit les fonctionnalités suivantes:

  • Utilitaires RINEX
  • Positionnement
  • Analyse résiduelle
  • Modélisation ionosphérique
  • Simulation de poursuite du signal T
  • Transformations de base
  • Collecte et conversion de données d'observation
  • Comparaison de fichiers et validation.
  • Édition de données
  • Positionnement autonome et relatif.

Merci d'avoir répondu! GPSTk a l'air fascinant, mais il est à un niveau inférieur à ce que je recherche. Il semble qu’il s’agisse de travailler avec des signaux radio GPS bruts et d’en tirer des repères de localisation. Je dispose déjà de la localisation de mon matériel GPS grand public et je n’ai pas accès aux données satellites de bas niveau.
Nelson

1

Il existe une librairie open source que je viens de terminer (pour stable) et une interface utilisateur pour analyser les fichiers GPX, TCX et les fichiers d’ajustement.

La lib est https://github.com/jimmykane/quantified-self-lib L'interface utilisateur basée sur Angular https://github.com/jimmykane/quantified-self

Démo en direct https://www.quantified-self.io

Ce qu'il peut faire, c'est analyser un fichier GPX, TCX ou Fit, générer des statistiques telles que l'ascension, la descente, la distance, etc.


0

Excellente question! J'ai récemment pas mal travaillé avec les données GPX et la solution la plus simple que j'ai trouvée consiste à convertir vos points de trace en un format de base de données spatiale, puis à créer des vues (spatiale et tabulaire) résumant les données si nécessaire. Comme je ne pouvais pas obtenir les résultats nécessaires en utilisant OGR pour importer mes données GPX, j'ai fini par utiliser un simple script python pour parcourir l'arborescence XML du GPX et la charger dans la base de données (SpatiaLite dans mon cas). Cela ne vous aide certainement pas à éviter de réinventer la roue, mais j’ai constaté que j’ai pu obtenir les résultats souhaités en résumant les pistes par trajet en utilisant les fonctions SQL existantes et SQL.


1
Le principal inconvénient de l'utilisation de PostGIS LineStrings est qu'ils ne contiennent pas de données d'horodatage. Je peux certes les suivre moi-même dans un schéma séparé, mais PostGIS ne fait alors rien pour m'aider à faire des calculs temporels. Avez-vous des astuces pour ça?
Nelson

0

Je développe ce petit logiciel pour mon propre usage. C'est principalement pour la visualisation et ne répond pas à tous vos besoins, mais peut-être que ça peut aider!


Merci! C'est open source et en Java, donc c'est certainement une aide.
Nelson

0

au risque de ne pas répondre à votre question actuelle :-), permettez-moi de vous suggérer une excellente application dont vous n'avez peut-être pas entendu parler, qui fait tout ce que vous avez indiqué -

c'est mon guichet unique pour la visualisation, l'édition et le transfert de GPX, entre autres choses.

Et peut-être plus sur le sujet, peut-être vérifier l'espace de noms de positionnement de dotSpatial (.NET): http://dotspatial.codeplex.com/wikipage?title=DotSpatial.Positioning

Cordialement.


Merci! TopoFusion est une excellente application pour Windows, mais j'ai vraiment besoin d'une bibliothèque. dotSpatial a du code utile à écrire. C'est sous licence publique Mozilla.
Nelson

0

Si vous souhaitez une spécification abstraite pour une API indépendante de la langue, il existe GeoAPI:

"La communauté de développement qui développe des solutions SIG déploie des efforts considérables. Le projet GeoAPI vise à réduire les doublons et à accroître l'interopérabilité en fournissant des API neutres, à interface uniquement, dérivés des normes OGC / ISO."

http://www.geoapi.org/

et plus spécifiquement la norme d'implémentation (PDF)


0

Téléchargez votre piste GPX vers cette URL

La plupart des services que vous avez demandés vous seront fournis, notamment:

  • Calculer la distance parcourue sur la piste
  • Calculer la vitesse moyenne
  • Calculer le temps en mouvement par rapport au temps stationnaire (visible sur le profil de vitesse)
  • Simplifier la piste, éliminer les segments immobiles
  • Lisser l'erreur d'échantillonnage GPS
  • Convertit la piste KML / KMZ, etc. pour la visualisation
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.