“$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
dd + mm.mmmm/60
4405.2015 —-> 44 + 05.2015/60 = 44,0867 degres
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 !
Code source : test-mo-calculs-geolocalisation.zip