Routage et calculs d'itinéraires
Cette activité permet de comprendre le fonctionnement des applications de location des vélos en libre service à la minute (ou tout autre moyen de transport) et que l’on retrouve souvent aux abords du lycée. Plusieurs sociétés se partage le marché à Paris. Nous allons nous intéresser au fonctionnement de ces vélos afin de savoir : Comment elles apparaissent sur une carte lorsqu’elles sont disponibles. Comment le problème de calcul d’itinéraires vient du calcul du plus court chemin sur un graphe. Comment est calculé le trajet entre vous et la trottinette ou visualiser le trajet que vous avez effectué .
Les captures d'écran et les explications doivent apparaître dans le compte rendu.
Exercice 1 :
1 - Ouvrir un nouveau projet Python sur https://replit.com/
2 - Recopier le programme suivant
3 - Une fois le programme compilé, un fichier "macarte1.html" est généré par replit.
4 - Télécharger puis ouvrir ce fichier - Sur quelle ville s'affiche la carte? Pourquoi?
Exercice 2
1 - Modifiez le programme ci-dessous pour qu'il génère une carte centrée sur la ville de votre choix (la longitude et la latitude d'une ville sont facilement trouvables sur le web). Il est possible d'obtenir un niveau de zoom différent en ajoutant un paramètre "zoom_start"
2 - On va maintenant voir comment on peut ajouter des POI ( Points Of Interest ) sur la carte. Un point d’intérêt sera simplement défini par ses coordonnées (latitude et longitude). Nous avons uniquement ajouté la ligne "folium.Marker...", il faut juste renseigner les coordonnées souhaitées (ici 43.708960093183734 pour la latitude et 7.281420476735443 pour la longitude)
Il est possible d'ajouter plusieurs marqueurs sur une même carte, il suffira d'ajouter autant de ligne "folium.Marker([latitude, longitude]).add_to(c)" que de marqueurs désirés. C’est ainsi que les vélos apparaissent sur la carte de l’application.
3 - Lorsque vous cliquez sur le vélo de votre choix, un « popup » apparait comme sur la photo ci-dessous. On a donc associé les informations concernant l’autonomie restante, le tarif, une partie du numéro de série… Il suffit de cliquer sur le marqueur pour que l'information définie par le paramètre "popup" apparaisse à l'écran (ici en cliquant sur le marqueur nous verrons donc apparaitre "Lycée Don Bosco Nice").
Lorsque l’on veut récupérer un véhicule ou que l’on a fini son trajet, l’application nous propose d’afficher l’itinéraire. Nous allons donc nous intéresser au calcul d’itinéraire mais avant cela comprenons ensemble comment notre position est détectée et transmise.
Pour pouvoir trouver le plus court chemin les puces de géo localisation utilisent un algorithme (il diffère en fonction des marques) qui se rapproche de l’algorithme de Dijkstra.
Après avoir regardé la vidéo ci-dessus, vous allez trouver le plus court chemin entre Grenoble et Bordeaux.
Bordeaux → Nantes : 4h
Bordeaux → Marseille : 9h
Bordeaux → Lyon : 12h
Nantes → Paris : 2h
Nantes → Lyon : 7h
Paris → Grenoble : 4h30
Marseille → Lyon :2h30
Marseille → Grenoble : 4h30
Lyon → Grenoble : 1h30
Lyon → Paris : 2h30
4 - Comme le font communément tous les GPS et toutes les applications de cartographie, nous aimerions tracer un itinéraire à partir des coordonnées GPS de départ et d'arrivée
Une fois l'exécution du programme terminée (cela peut prendre quelques minutes en fonction du nombre de points à calculer), la variable routeLatLons va s'afficher. Comme vous pouvez le constater, cette variable contient une liste de couples de valeurs (latitude, longitude). Cette liste contient donc les coordonnées des différents points par lesquels il faut passer pour se rendre du point de départ jusqu'au point d'arrivée (en passant bien évidemment par les routes définies dans Open Street Map).
5 - Nous allons maintenant afficher la liste des différents points sur une carte pour en faire un itinéraire. Testez le programme ci-dessous (une fois le programme Python exécuté, ouvrez avec un navigateur web le fichier "Itinéraire.html").
6 - Retrouver le point de départ et le point d'arrivée
7 - En vous aidant de l'exercice précédent tracer l'itinéraire entre Grenoble (Fontaine du lion) et Bordeaux ( Place des Quinconces)