Conversions des coordonnées GPS

Trame NMEA 0183

“$GPGGA,084222.000,4405.2015,N,00457.8908,E,1,05,1.7,26.5,M,,,,0000*3F"

Latitude et longitude dans le format : ddmm.mmmm et dddmm.mmmm

Conversion format GPS en degré décimal dd.dddd

dd + mm.mmmm/60

4405.2015 —-> 44 + 05.2015/60 = 44,0867 degres

Conversion degré décimal dd.dddd en Degres Minutes decimal-Seconds (D° M’ S’’)

d = 44.0867

D = int(d) —> 44

M = int((d - D) x 60) —> ((44.0867 - 44) x 60) = 5,202 = 5

s = (d - D - M/60) x 3600 —> (44.0867 - 44 - 5/60) x 3600

ou s = (d - D) x 3600 - M x 60

44.0867 —> 44° 5’ 12.12"

Remarques :

  • En C/C++, on peut utiliser floor() (ou floorf(), floorl()) pour récupérer le plus grand entier inférieur ou égal à x. Ces fonctions sont disponibles à partir de math.h. Sous Qt, on peut utiliser qFloor() (qmath.h).

  • Attention aux erreurs de précision des floats et des doubles !

Calculs de distance

Code source : test-mo-calculs-geolocalisation.zip

Retour au sommaire