{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Cartographie TP 4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " Écrire votre nom " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*ici*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Itinéraires\n", "\n", "Chacun d'entre nous a déjà utilisé des applications qui donnent un itinéraire entre deux lieux:\n", "\n", "Par exemple voici un itinéraire entre les lycées de Jean moulin (Draguignan) et du val d'Argens(le Muy) \n", "\n", "\n", "\n", "itineraire\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "## Un programme:\n", "\n", "**En Python la bibliothèque pyroutelib3 permet de déterminer des itinéraires à partir de coordonnées 'GPS'**\n", "\n", "Si elle n'est pas installée :\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ " #pip install pyroutelib3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Le programme suivant stocke dans une liste une série de coordonnées de points qui réalise un itinéraire entre deux lieux :**" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from pyroutelib3 import Router\n", "from geopy.geocoders import ArcGIS\n", "\n", "geolocator = ArcGIS()\n", "\n", "location1 = geolocator.geocode(\"Le Muy\")\n", "location2 = geolocator.geocode(\"Draguignan\")\n", "\n", "lat1=location1.latitude\n", "lon1=location1.longitude\n", "\n", "lat2=location2.latitude\n", "lon2=location2.longitude\n", "\n", "print(lat1,lon1)\n", "# création de l'itinéraire\n", "router = Router(\"car\")\n", "depart = router.findNode(lat1,lon1)\n", "print(depart)\n", "arrivee = router.findNode(lat2, lon2)\n", "print(arrivee)\n", "status, route = router.doRoute(depart,arrivee)\n", "if status == 'success':\n", " routeLatLons = list(map(router.nodeLatLon, route))\n", "\n", "# on fait afficher la liste obtenue et sa longueur\n", "print(routeLatLons)\n", "print(len(routeLatLons))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "### Faisons afficher cet itinéraire sur une carte\n", "\n", "Comme il y a 382 marqueurs, on utilisera une boucle qui ne fera afficher qu'un marqueur sur 10 \n", "\n", "**Testez ce code :**" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from pyroutelib3 import Router\n", "import folium\n", "from geopy.geocoders import ArcGIS\n", "\n", "geolocator = ArcGIS()\n", "\n", "location1 = geolocator.geocode(\"Le Muy\")\n", "location2 = geolocator.geocode(\"Draguignan\")\n", "\n", "\n", "lat1=location1.latitude\n", "lon1=location1.longitude\n", "\n", "lat2=location2.latitude\n", "lon2=location2.longitude\n", "\n", "router = Router(\"car\")\n", "depart = router.findNode(lat1, lon1)\n", "arrivee = router.findNode(lat2, lon2)\n", "status, route = router.doRoute(depart, arrivee)\n", "if status == 'success':\n", " routeLatLons = list(map(router.nodeLatLon, route))\n", "\n", " # création de la carte\n", "c= folium.Map(location=[lat1, lon1],zoom_start=10)\n", "for indice,coord in enumerate(routeLatLons):\n", " if indice%10==0:\n", " coord=list(coord)\n", " folium.Marker(coord).add_to(c)\n", " \n", "# voici une méthode pour sauvegarder la carte obtenue\n", "c.save('maCarte5.html')\n", "# affichage de la carte\n", "display(c)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "### Un itinéraire en vélo...\n", "\n", "Observer le code et repérez la ligne où on peut modifier le moyen de transport par : cycle, foot, horse, tram ou train\n", "\n", "## À faire :\n", "\n", "**Écrire un programme qui affiche un itinéraire entre deux localité de votre choix en vélo, à pied ou à cheval..**\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Écrire le code ici" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "## Calculer la distance entre deux lieux\n", "\n", "Si on additionne des distances géodésiques (Voir TP 2) de lieux proches, on approxime assez bien la distance réelle\n", "\n", "Dans le code précédent routeLatLons est une liste de coordonnées de points proches les uns des autres\n", "\n", "**Voici un code qui permet d'additionner les distances géodésiques de ces lieux en miles**" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8.843997795927313 miles\n" ] } ], "source": [ "from pyroutelib3 import Router\n", "from geopy.geocoders import ArcGIS\n", "from geopy.distance import geodesic\n", "geolocator = ArcGIS()\n", "\n", "location1 = geolocator.geocode(\"Le Muy\")\n", "location2 = geolocator.geocode(\"Draguignan\")\n", "\n", "\n", "lat1=location1.latitude\n", "lon1=location1.longitude\n", "\n", "lat2=location2.latitude\n", "lon2=location2.longitude\n", "\n", "router = Router(\"car\")\n", "depart = router.findNode(lat1, lon1)\n", "arrivee = router.findNode(lat2, lon2)\n", "status, route = router.doRoute(depart, arrivee)\n", "if status == 'success':\n", " routeLatLons = list(map(router.nodeLatLon, route))\n", " \n", "# calcul de la distance\n", "d=0\n", "\n", "for i in range(0,len(routeLatLons)-1,1):\n", " d=d+geodesic(routeLatLons[i],routeLatLons[i+1]).miles\n", "\n", "print(d, \" miles\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "## À faire :\n", "\n", "**Faites calculer la distance en km entre deux lieux de votre choix pour une ballade à pied ...**" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Écrire le code ici" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "
\n", " Enregistrez ce travail sous le nom : cartographie_tp_1_votre_nom.ipynb et déposez le là où on vous le dira \n", "\n", "### Pour enregistrer:\n", "\n", "1. File\n", "2. Save notebook as\n", "3. Pour le récupérer cliquez sur le dossier à gauche en haut...\n", "4. cliquez droit sur le fichier et download\n", "\n", "### Autre méthode \n", "\n", "Dans **home**\n", "sélectionnez le fichier et download \n", "\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.7" } }, "nbformat": 4, "nbformat_minor": 2 }