Comment calculer la distance entre deux coordonnées GPS (en utilisant la latitude et la longitude)?
math
geolocation
geometry
latitude-longitude
geography
nicudotro
la source
la source
Réponses:
Calculez la distance entre deux coordonnées par latitude et longitude , y compris une implémentation Javascript.
Les emplacements ouest et sud sont négatifs. N'oubliez pas que les minutes et les secondes sont sur 60, donc S31 30 'est de -31,50 degrés.
N'oubliez pas de convertir les degrés en radians . De nombreuses langues ont cette fonction. Ou son calcul de simple:
radians = degrees * PI / 180
.Voici quelques exemples d'utilisation:
la source
Number.prototype.toRad = function() { return this * (Math.PI / 180); };
. Ou, comme indiqué ci-dessous, vous pouvez remplacer(Math.PI/2)
par 0,0174532925199433 (... quelle que soit la précision que vous jugez nécessaire) pour des performances accrues.R
que signifie normalement en mathématiques, puis recherchez les quantités pertinentes liées à la Terre pour voir si les chiffres correspondent.earthRadiusKm
pour êtrevar earthRadiusMiles = 3959;
fyi.Recherchez haversine avec Google; voici ma solution:
la source
Version C # de Haversine
Voici un violon .NET de cela , afin que vous puissiez le tester avec votre propre Lat / Longs.
la source
Version Java de Haversine Algorithm basée sur la réponse de Roman Makarov à ce fil
la source
0.07149
km alors que votre formule m'a donné0.07156
qui est une précision d'environ 99%C'est très facile à faire avec le type géographique dans SQL Server 2008.
4326 est SRID pour le modèle de terre élipsoïdale WGS84
la source
Voici une fonction Haversine en Python que j'utilise:
la source
Cela dépend de la précision dont vous avez besoin, si vous avez besoin d'une précision précise, il est préférable de regarder un algorithme qui utilise un ellipsoïde plutôt qu'une sphère, comme l'algorithme de Vincenty, qui est précis au mm. http://en.wikipedia.org/wiki/Vincenty%27s_algorithm
la source
Le voici en C # (lat et long en radians):
Si votre lat et long sont en degrés, divisez par 180 / PI pour convertir en radians.
la source
J'avais besoin de calculer beaucoup de distances entre les points pour mon projet, alors j'ai continué et j'ai essayé d'optimiser le code, j'ai trouvé ici. En moyenne, dans différents navigateurs, ma nouvelle implémentation s'exécute 2 fois plus vite que la réponse la plus votée.
Vous pouvez jouer avec mon jsPerf et voir les résultats ici .
Récemment, j'ai dû faire la même chose en python, voici donc une implémentation de python :
Et pour être complet: Haversine sur wiki.
la source
Version PHP:
(Supprimez tout
deg2rad()
si vos coordonnées sont déjà en radians.)la source
Une fonction T-SQL, que j'utilise pour sélectionner des enregistrements par distance pour un centre
la source
Si vous avez besoin de quelque chose de plus précis, jetez un œil à cela .
la source
I. Concernant la méthode "chapelure"
Voir ci-dessous la fonction en C qui prend en compte # 1 et # 2:
II. Il existe un moyen plus simple qui donne de très bons résultats.
Par vitesse moyenne.
Trip_distance = Trip_average_speed * Trip_time
Puisque la vitesse GPS est détectée par effet Doppler et n'est pas directement liée à [Lon, Lat], elle peut au moins être considérée comme secondaire (sauvegarde ou correction) sinon comme méthode principale de calcul de la distance.
la source
Si vous utilisez .NET, ne faites pas revivre la roue. Voir System.Device.Location . Nous remercions fnx dans les commentaires d' une autre réponse .
la source
Ce code Lua est adapté de choses trouvées sur Wikipedia et dans l' outil GPSbabel de Robert Lipe :
la source
la source
Ceci est une version de "Henry Vilinskiy" adaptée pour MySQL et Kilomètres:
la source
MySQL
a déclaréSomething is wrong in your syntax near '' on line 8
// declare distance float;
voici l'implémentation Swift de la réponse
la source
j'ai pris la meilleure réponse et l'ai utilisée dans un programme Scala
j'ai curry la fonction afin de pouvoir produire facilement des fonctions qui ont l'un des deux emplacements fixes et qui ne nécessitent qu'une paire de lat / lon pour produire la distance.
la source
Je suppose que vous le souhaitez le long de la courbure de la terre. Vos deux points et le centre de la terre sont sur un plan. Le centre de la terre est le centre d'un cercle sur ce plan et les deux points sont (à peu près) sur le périmètre de ce cercle. À partir de là, vous pouvez calculer la distance en découvrant quel est l'angle d'un point à l'autre.
Si les points ne sont pas aux mêmes hauteurs, ou si vous devez tenir compte du fait que la terre n'est pas une sphère parfaite, cela devient un peu plus difficile.
la source
J'ai récemment dû faire la même chose. J'ai trouvé ce site Web très utile pour expliquer le trig sphérique avec des exemples faciles à suivre.
la source
vous pouvez trouver une implémentation de ceci (avec quelques bonnes explications) en F # sur fssnip
voici les parties importantes:
la source
J'avais besoin de l'implémenter dans PowerShell, j'espère que cela peut aider quelqu'un d'autre. Quelques notes sur cette méthode
J'utilise Haversine, comme d'autres articles l'ont souligné, les formules de Vincenty sont beaucoup plus précises
la source
Version Scala
la source
// Peut-être une erreur de frappe?
Nous avons une variable inutilisée dlon dans GetDirection,
je suppose
devrait être
la source
Voici mon implémentation dans Elixir
la source
Version Dart
Algorithme Haversine.
la source
Je pense qu'une version de l'algorithme en R manque toujours:
la source
Voici une variante de Kotlin:
la source