Bonjour,
je suis navré mais je n'ai pas trouvé la solution à ma question sur le forum.
J'ai une table dans access, dans laquelle chaque enregistrement contient une coordonnée GPS (lat, long). La table est remise à 0 au départ et contient à l'arrivée un certain nombre de points. Ex: 30 points.
Afin de calculer la distance entre le départ et l'arrivée, je dois calculer la distance entre chaque point et additionner ces distances pour obtenir la globale.
je souhaite calculer la distance entre chaque point et stocker cette distance dans une variable que j'incrémente chaque fois, pour avoir à la fin la distance totale entre le départ et l'arrivée.
Comment est-ce que je fais une boucle qui calcule:
#record 1 à #record 2
#record 2 à #record 3
etc. jusqu'à la fin ?
le code que j'utilise pour calculer la distance entre 2 points est:
donc je souhaite que la boucle charge la variable x1, y1, x2, y2 en passant d'un enregistrement à un autre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 lat1 = x1 lng1 = y1 lat2 = x2 lng2 = y2 rlo1 = dtR(lng1) rla1 = dtR(lat1) rlo2 = dtR(lng2) rla2 = dtR(lat2) dlo = (rlo2 - rlo1) / 2 dla = (rla2 - rla1) / 2 A = (Sin(dla) * Sin(dla)) + Cos(rla1) * Cos(rla2) * (Sin(dlo) * Sin(dlo)) d = 2 * arctan2(Sqr(A), Sqr(1 - A)) retour = (EarthRadius * d) 'sortie = Format(retour, "#####.##" & " m") sortie = Round(retour, 1) & " m"
Quelqu'un pourrait-il m'aider ?
d'avance merci.
Solution
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Set Rs = CurrentDb.OpenRecordset("T_NMEA", dbOpenTable, dbReadOnly) Set Rs2 = CurrentDb.OpenRecordset("T_NMEA", dbOpenTable, dbReadOnly) Rs2.MoveNext Do 'Rs.MoveFirst 'While Not Rs.EOF With Rs x1 = !x y1 = !y id1 = !IDNMEA MsgBox id1 & " - id1" End With 'Do With Rs2 x2 = !x y2 = !y id2 = !IDNMEA MsgBox id2 & " - id2" End With 'Loop Rs.MoveNext Rs2.MoveNext Loop Until Rs.EOF Rs.Close
Partager