{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![En tête general](img/En_tete_general.png)\n",
"\n",
"\n",
"*(C) Copyright Franck CHEVRIER 2019-2021 http://www.python-lycee.com/*\n",
"\n",
" Pour exécuter une saisie Python, sélectionner la cellule et valider avec SHIFT+Entrée.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Cartographie et itinéraires (corrigé)\n",
"\n",
"
\n",
" Note :
Il est possible que les droits paramétrés ne permettent pas au Notebook d'afficher directement les cartes.
Dans ce cas, pour obtenir les affichages, il y a deux solutions :
\n",
"\n",
"
\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Les modules Python folium et pyroutelib3 permettent de générer respectivement une carte et un itinéraire entre deux points dont les coordonnées GPS sont connues.\n",
"\n",
"__1. La fonction Python itineraire donnée ci-dessous permet de générer une carte avec un itinéraire entre deux points dont on connaît les coordonnées GPS.
Lire les commentaires de la fonction et exécuter la cellule pour mettre cette fonction en mémoire.__"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import folium # import du module pour générer une carte\n",
"from pyroutelib3 import Router # import des fonctionnalités pour générer un itinéraire\n",
"\n",
"def itineraire(Depart,Arrivee,mode):\n",
" \"\"\"\n",
" génère une carte représentant un itinéraire avec :\n",
" Depart : coordonnées GPS du point de départ\n",
" Arrivee : coordonnées GPS du point d'arrivée\n",
" mode : mode de transport (\"car\",\"cycle\",\"foot\",\"horse\",\"tram\",\"train\")\n",
" \"\"\"\n",
" \n",
" # Calcul des coordonnées du point central de la carte\n",
" # (au milieu du segment joignant Depart et Arrivee)\n",
" \n",
" Vue = ((Depart[0]+Arrivee[0])/2,(Depart[1]+Arrivee[1])/2)\n",
" \n",
" # Réglage du zoom initial\n",
" zoom = 15\n",
" \n",
" # Génération de la carte\n",
" Carte = folium.Map(Vue, zoom_start=zoom)\n",
" \n",
" # Placement des marqueurs des points de Départ et d'Arrivée\n",
" folium.Marker(Depart,popup=\"Départ\").add_to(Carte)\n",
" folium.Marker(Arrivee,popup=\"Arrivée\").add_to(Carte)\n",
" \n",
" try:\n",
" # Génération de l'itinéraire avec le mode de transport choisi\n",
" router = Router(mode)\n",
" D = router.findNode(*Depart)\n",
" A = router.findNode(*Arrivee)\n",
" routeLatLons=[Depart,Arrivee]\n",
" status, route = router.doRoute(D, A)\n",
" if status == 'success': routeLatLons = list(map(router.nodeLatLon, route))\n",
" \n",
" # Tracé de l'itinéraire sur la carte\n",
" folium.PolyLine(routeLatLons, color=\"magenta\", weight=2.5, opacity=1).add_to(Carte)\n",
" \n",
" except:\n",
" # Si l'itinéraire ne peut pas être généré: affichage d'un message d'erreur\n",
" print(\"La carte a été créée mais impossible de générer l'itinéraire demandé\")\n",
"\n",
" # La fonction renvoie la carte créée \n",
" return Carte\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"2. Exécuter la cellule ci-dessous, puis répondre aux questions concernant cet itinéraire :\n",
"\n",
"
\n",
"\n",
"
\n",
"L'itinéraire est défini dans la ville de Strasbourg, il indique comment se rendre en voiture de la place de la gare (GPS 48.58486732288321, 7.735525889175579) au Quai de Turckheim (GPS 48.58083428820921, 7.738795275340017) (dans le très joli quartier de la petite France)."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"