1. Mise en place
Créer un dossier TP_folium et enregistrer dans ce dossier le fichier python avec le code ci-dessous :
# on importe le module folium
import folium
# on définit un point géographique par ses coordonnées
# longitude et lattitude
coords = (48.8398094,2.5840685)
# on crée une carte centrée sur ce point géographique
map = folium.Map(location=coords, tiles='OpenStreetMap', zoom_start=5)
# on considère un nouveau point
coords = (48.8490591,2.577023)
# on ajoute un marqueur correspondant à ce point sur la carte
folium.Marker(location=coords, popup = "MacDo").add_to(map)
# on considère un nouveau point
coords = (48,2.57)
# on ajoute un marqueur correspondant à ce point sur la carte
folium.Marker(location=coords, popup = "MacDo").add_to(map)
# on sauvegarde la carte dans notre dossier sous la forme
# d'un fichier html
map.save(outfile='map.html')
On utilise dans de ce tp le module python folium :
https://python-visualization.github.io/folium/
Si ce module n’est pas installé , installer le avec la commande :
pip install folium
Tester votre programme et consulter votre dossier TP_folium, ce programme python a permis la création d’un fichier html. Ouvrez ce fichier dans votre navigateur favori.
Exercice 1 : Modifier votre programme pour afficher une carte centrée sur Lille permettant d’afficher la position du Lycée Faidherbe.
On désire à présent utiliser ce module pour afficher la position survolée par la station spatiale internationale ISS en temps réel.
2. Récupérer des informations sur ISS via une requête serveur
On va à présent utiliser la bibliothèque request : https://requests-fr.readthedocs.io/en/latest/user/quickstart.html
Cette bibliothèque permet d’effectuer simplement des échanges de requêtes http en particulier avec une API.
Pour obtenir les renseignements nécessaires sur l’ISS, on va utiliser l’API :
http://api.open-notify.org/
Cette API nous donne au format JSON différents renseignements sur la station spatiale internationale.
Modifier le programme précédent en :
import requests
import folium
donnees_ISS = requests.get('http://api.open-notify.org/iss-now.json').json()
Exécuter le programme.
Exercice 2 :
1. Après avoir exécuté le programme, déterminer à l’aide de commandes en console le type de la variable donnees_ISS et son contenu.
2. Modifier votre programme pour afficher à l’aide de folium la zone géographique survolée par ISS.
On pourra avoir besoin d’utiliser la méthode float qui permet de transformer une chaîne de caractères en un flottant.
Exercice 3 :
Modifier votre programme pour afficher les différentes positions survolées par ISS à différents instants.
On pourra pour cela utiliser la bibliothèque time et la méthode time.sleep(mon_temps).
On peut aussi compléter le programme ci-dessous en reprenant ce qui a été fait auparavant.
# on importe le module folium
import folium
import requests
import time
# on utilise la méthode sleep de time pour faire une pause
# time.sleep(temps_en_secondes)
donnees_ISS = requests.get('http://api.open-notify.org/iss-now.json').json()
longitude=float( donnees_ISS['iss_position']['longitude'])
latitude=float( donnees_ISS['iss_position']['latitude'])
coords = ( latitude , longitude )
map = folium.Map(location=coords, tiles='OpenStreetMap', zoom_start=3)
# on ajoute 10 marqueurs
for i in range(10):
donnees_ISS = requests.get('http://api.open-notify.org/iss-now.json').json()
longitude=float( donnees_ISS['iss_position']['longitude'])
latitude=float( donnees_ISS['iss_position']['latitude'])
coords = ( latitude , longitude )
folium.Marker(location=coords, popup = "ISS").add_to(map)
time.sleep(5)
# on sauvegarde la carte dans notre dossier sous la forme
# d'un fichier html
map.save(outfile='position_Iss.html')
Pour préparer le tp prochain :
On désire afficher sur une carte les stations V’Lille ayant encore des vélos disponibles à partir des données figurant sur la page :
https://opendata.lillemetropole.fr/explore/dataset/vlille-realtime/export/
En vous inspirant de ce qui a été fait pour la station ISS, créer un programme permettant d’afficher les stations ayant encore des vélos disponibles ou des places disponibles.
Proposition de Correction :