J'ai des emplacements GPS bruts pour une piste et j'ai besoin d'obtenir une vitesse maximale. Des méthodes simples (calculer la vitesse entre 2 points, prendre au maximum) donneront de grands nombres sans signification en raison de l'inexactitude du GPS, le point saute. Pouvez-vous suggérer un bon algorithme prêt à l'emploi pour résoudre ce problème?
gps
movement-data
JaakL
la source
la source
Réponses:
Pour obtenir de la vitesse, vous devez bien sûr avoir le temps . Ainsi, vous pouvez ordonner vos points par le temps dans une feuille de calcul comme la mode, avec des colonnes {Time, X, Y}, en augmentant le temps.
Voici un exemple où l'unité GPS a presque terminé un circuit dans le sens antihoraire:
Ces points n'ont pas été obtenus à intervalles de temps égaux. Par conséquent, il est impossible à partir de la carte seule d'estimer les vitesses. (Pour vous aider à visualiser ce voyage, cependant, je me suis assuré de collecter les valeurs GPS à des intervalles presque égaux, afin que vous puissiez voir que le voyage a commencé rapidement et ralenti à deux points intermédiaires et à la fin.)
Parce que vous êtes intéressé par la vitesse, calculez les distances entre les rangées successives ainsi que les différences de temps. La division des distances par les différences de temps donne des estimations de vitesse instantanées. C'est tout ce qu'on peut en dire. Regardons un graphique de ces estimations en fonction du temps:
Les points rouges tracent les vitesses tandis que la courbe grise est un lisse brut, uniquement pour guider l'œil. L'heure de la vitesse maximale et la vitesse maximale elle-même sont claires à partir du graphique et facilement obtenues à partir des données jusqu'à présent si vous utilisez un tableur ou de simples fonctions de résumé des données dans un SIG. Cependant, ces estimations de vitesse sont suspectes car les points GPS contiennent clairement une erreur de mesure.
Une façon de faire face aux erreurs de mesure consiste à accumuler les distances entre plusieurs périodes et à les utiliser pour estimer les temps. Par exemple, si les données {Différence horaire, Distance} précédemment calculées sont
puis les temps écoulés et les distances totales sur deux périodes sont obtenus en ajoutant chaque paire de rangées successives:
Recalculez les vitesses pour les temps et distances accumulés.
On peut effectuer ce calcul pour n'importe quel nombre de périodes, en obtenant des tracés toujours plus fluides et plus fiables au prix de la moyenne des estimations de vitesse sur des périodes plus longues. Voici des tracés des mêmes données calculées pour 3 et 5 périodes, respectivement:
Remarquez comment la vitesse maximale diminue avec la quantité de lissage. Cela arrivera toujours. Il n'y a pas de réponse correcte unique: combien vous lissez dépend de la variabilité des mesures et des périodes de temps que vous souhaitez estimer les vitesses. Dans cet exemple, vous pourriez signaler une vitesse maximale pouvant atteindre 2,5 (sur la base de points GPS successifs), mais elle serait quelque peu peu fiable en raison des erreurs dans les positions GPS. Vous pouvez signaler une vitesse maximale aussi faible que 2,1 sur la base du lissage sur cinq périodes.
Il s'agit d'une méthode simple mais pas nécessairement la meilleure. Si nous décomposons l'erreur de localisation GPS en un composant le long du chemin et un autre composant perpendiculaire au chemin, nous constatons que les composants le long du chemin n'affectent pas les estimations de la distance totale parcourue (à condition que le chemin soit suffisamment bien échantillonné: c'est-à-dire que vous ne "coupez pas les coins"). Les composantes perpendiculaires à la trajectoire augmententles distances apparentes. Cela peut potentiellement biaiser l'estimation vers le haut. Cependant, lorsque la distance typique entre les lectures GPS est grande par rapport à l'erreur de distance typique, le biais est faible et est probablement compensé pour les minuscules ondulations du chemin qui ne sont pas capturées par la séquence GPS (c'est-à-dire, certaines coupes de coin sont toujours fait). Par conséquent, cela ne vaut probablement pas la peine de développer un estimateur plus sophistiqué pour faire face à ces biais inhérents, à moins que la fréquence d'échantillonnage GPS ne soit très faible par rapport à la fréquence avec laquelle le chemin "oscille" ou l'erreur de mesure GPS est importante.
Pour mémoire, nous pouvons montrer le vrai résultat correct , car ce sont des données simulées:
La comparaison avec les graphiques précédents montre que dans ce cas particulier, le maximum des vitesses brutes surestimait le maximum réel tandis que le maximum des vitesses à cinq périodes était trop faible.
En général, lorsque les points GPS sont collectés à haute fréquence, la vitesse brute maximale sera probablement trop élevée: elle a tendance à surestimer le maximum réel. Dire plus que cela dans n'importe quel cas pratique nécessiterait une analyse statistique plus complète de la nature et de la taille des erreurs GPS, de la fréquence de collecte GPS et du caractère tortueux du chemin sous-jacent.
la source
Ce n'est pas un script ou un algorithme prêt à l'emploi. Ce que j'ai fait dans l'image ci-dessous montrant la vitesse moyenne (en km / h):
r.neighbors
pour obtenir la vitesse moyenne d'une fenêtre raster spécifiée.la source
r.neighbors
, j'obtiens la vitesse moyenne.Étant donné que vos données GPS sont inexactes, vous ne pourrez estimer que la vitesse maximale.
Vous pouvez essayer de le calculer en calculant la vitesse non pas sur des segments mais sur des polylignes (vitesse moyenne), pour minimiser l'effet des imprécisions.
Avez-vous d'abord essayé de nettoyer vos données (Douglas-Peucker par exemple) pour ne garder que les points les plus pertinents?
la source