-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathalgorithme-route-gps.py
More file actions
66 lines (53 loc) · 2.84 KB
/
Copy pathalgorithme-route-gps.py
File metadata and controls
66 lines (53 loc) · 2.84 KB
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# On utilise la librairie de M. Kuranowski appelée pyroutelib3
# https://github.com/MKuranowski/pyroutelib3
# Cette librairie se base sur les données d'OpenStreetMap
from pyroutelib3 import Router
import sys
# Ici, à l'aide du constructeur (Router), on initialise un objet de type router
# Lors de l'instantiation, on lui spécifie via le paramètre "car" que l'on souhaite se déplacer en voiture.
# Mode de transport disponibles: car, cycle, foot, horse, tram, train
router = Router("car")
# On utilise la méthode findNode de l'objet router afin de récupérer le node le plus proche du couple latitude longitude spécifié
# https://www.openstreetmap.fr/ pour comprendre et https://www.openstreetmap.org pour trouver lat et lon
debutTrajet = router.findNode(50.198153,3.220213)
finTrajet = router.findNode(50.17601,3.22928)
# debutTrajet et finTrajet sont deux "Nodes" (=noeuds de navigation)
#Nous allonrs maintenant demander à l'objet router de trouver un ensemble de nodes à partir afin d'arriver du node de début au node de fin.
status, listeNodes = router.doRoute(debutTrajet, finTrajet)
print("Statut du calcul de l'itinéraire: ", status)
if status != 'success':
print(" Fin du programme. Revoyez vos coordonnées GPS")
sys.exit(1);
print()
print()
print("Voici les nodes à suivre: ")
print()
print()
print( listeNodes )
# Pourquoi je vois des nombres ? Réponse ici: https://wiki.openstreetmap.org/wiki/Node
# Pour openstreetmap un node est un point dans l'espace et possède un id unique permettant de le reconnaitre.
# Dans le répertoires d'exécution du programme on remarque l'apparition d'un dossier tilescache. Que contient t'il ? Pourquoi en a t'on besoin ?
print()
print()
print( "Conversion de la liste de nodes en liste de couples (Latitude,Longitude)")
print()
print()
listeLatLon = []
for node in listeNodes:
listeLatLon.append( router.nodeLatLon(node) )
print(listeLatLon)
print()
print()
# Nous avons maintenant une liste de couple latitude longitude mais pour un humain ce n'est pas très parlant.
# On peut utiliser un service de géocodage inverse ( lat long -> adresse ) afin de connaître l'adresse de nos points.
# Un service mis à dispo par l'état: https://adresse.data.gouv.fr/api -> /reverse/
# Exemple pour le point de départ: https://api-adresse.data.gouv.fr/reverse/?lat=50.198153&lon=3.220213
print( "Affichage des URLs à consulter")
urlReverseGeocoding = "https://api-adresse.data.gouv.fr/reverse/"
# Nous pouvons également utiliser google afin d'afficher les coordonnées sur une map
# https://developers.google.com/maps/documentation/urls/guide "Map Actions -> Search"
urlGoogle = "https://www.google.com/maps/search/?api=1&query="
for couple in listeLatLon:
print()
print( urlReverseGeocoding + "?long=" + str(couple[1]) + "&lat=" + str(couple[0]))
print( urlGoogle + str(couple[0]) + "," + str(couple[1]))