Trouver un logement convenable à proximité de l’école de nos enfants est une préoccupation commune à de nombreuses familles. Heureusement, les cartes isochrones offrent un moyen efficace de visualiser les zones accessibles en fonction du temps de trajet. Dans cet article, vous apprendrez à utiliser Python et les bibliothèques Leaflet et Folium pour créer une carte isochrone interactive de la ville de Nantes, en France, et trouver l’endroit idéal pour vivre près de la nouvelle école de vos enfants.

Conditions préalables
Avant de commencer, assurez-vous que les bibliothèques Python suivantes sont installées dans votre environnement :
- Folium
- Requests
- Shapely
import folium
import requests
from shapely.geometry import Polygon
from shapely.ops import cascaded_union
De plus, vous devrez obtenir un jeton d’accès pour le service Mapbox isochrone. Si vous n’en avez pas encore, vous pouvez créer un compte Mapbox gratuit et obtenir le jeton sur leur site web.
Étape 1 : Définir l’emplacement et les intervalles de temps
Tout d’abord, nous devons déterminer l’emplacement de la nouvelle école de vos enfants à Nantes. Utilisez les coordonnées de latitude et de longitude pour marquer cet emplacement sur la carte.
# Définit la localisation et le point de départ (Nantes, France)
lat = 47.23864
lon = -1.53362
J’ai utilisé Google Maps pour localiser l’endroit. Cliquez avec le bouton droit de la souris sur le nœud rouge de la carte et vous obtiendrez les coordonnées dont vous avez besoin. 📍🗺
Déterminez ensuite les intervalles de temps souhaités en minutes, en tenant compte du temps maximum que vous êtes prêt à consacrer au trajet quotidien de vos enfants vers et depuis l’école. Par exemple, vous pouvez fixer des intervalles de 10, 20 et 30 minutes.
# Définit les intervalles de temps en minutes pour les isochrones.
intervals = [5, 10, 15] # Fixé à 5, 10 et 15 minutes à la vitesse moyenne d'une personne marchant.

Étape 2 : Obtenir les données isochrones
Nous allons utiliser la bibliothèque requests pour envoyer une requête HTTP au service Mapbox isochron et obtenir les données pour chaque intervalle de temps.
# Définir le jeton d'accès pour le service isochron
token = "pk.token.mapbox" # Remplacer par votre propre token
# Créer une carte interactive en utilisant Folium
map = folium.Map(location=[lat, lon], zoom_start=15)
# Traverser les intervalles de temps et obtenir les isochrones
pour intervalle dans intervalles :
# Construire l'URL de la requête isochrone.
url = f "https://api.mapbox.com/isochrone/v1/mapbox/walking/{lon},{lat}?contours_minutes={intervalle}&polygones=true&access_token={token}"
# Effectuer la requête HTTP et obtenir les données de la réponse
response = requests.get(url)
data = response.json()
Nous construirons l’URL de la requête isochron en utilisant les coordonnées de l’école et le jeton d’accès fourni par Mapbox. Ensuite, nous enverrons la requête et obtiendrons la réponse au format JSON.
Étape 3 : Traiter les données et générer les polygones
Une fois les données JSON obtenues pour chaque isochrone, nous allons extraire les coordonnées des polygones des isochrones en utilisant la bibliothèque shapely.
# Extraire les coordonnées des polygones isochrones
coordinates = data["features"][0]["geometry"]["coordinates"]]
# Créer un polygone Shapely et ajouter les points du polygone
polygone = Polygone(coordonnées[0])
# Ajouter le polygone à la carte en tant que couche GeoJSON
folium.GeoJson(
data=data,
style_function=lambda x : {'fillColor' : '#e26e4d', 'colour' : '#ea4141', 'weight' : 1, 'fillOpacity' : 0.3},
name=f "{intervalle} min"
).add_to(map)
Nous utiliserons ensuite l’opération cascaded_union de shapely pour combiner les polygones d’isochrones en un seul. Nous obtiendrons ainsi un polygone représentant toutes les zones accessibles dans les intervalles de temps définis.
Étape 4 : Créer la carte interactive avec Folium
Nous allons utiliser la bibliothèque Folium pour créer une carte interactive et ajouter le polygone isochrone en tant que couche GeoJSON. Nous allons définir un style pour le polygone et ajuster l’opacité pour une meilleure visualisation.
# Ajouter une couche de contrôle pour basculer l'affichage des isochrones
folium.LayerControl().add_to(map)
En outre, nous ajouterons d’autres couches utiles, telles que les écoles, les transports publics ou les magasins à proximité, afin de vous aider à prendre une décision éclairée quant à l’emplacement de votre nouvelle maison.
Étape 5 : Enregistrer et afficher la carte interactive
Enfin, nous allons enregistrer la carte interactive dans un fichier HTML et l’afficher dans un navigateur web. Le fichier HTML contiendra tous les éléments nécessaires, y compris les données et les paramètres de la carte.
# Enregistrer la carte interactive sous forme de fichier HTML
map.save("webmap.html")
https://javierladino.com/es/wp-content/uploads/2023/05/webmap.html
Vous pourrez explorer la carte interactive ☝ pour trouver des zones qui se situent dans les intervalles de temps souhaités et qui sont proches de l’école de vos enfants. Cela vous aidera à identifier les quartiers potentiels et à prendre une décision éclairée quant à l’emplacement de votre nouvelle maison.
Conclusions
Dans cet article, vous avez appris à utiliser des cartes isochrones pour trouver un logement près de la nouvelle école de vos enfants en utilisant Python et les bibliothèques Leaflet et Folium. Ces cartes interactives vous permettront de visualiser les zones accessibles en fonction du temps de trajet et de prendre une décision éclairée quant à l’emplacement de votre logement. Vous êtes maintenant prêt à commencer votre recherche et à trouver l’endroit idéal pour vivre près de l’école de vos enfants – bonne chance !
Télécharger le code sur Github
Vous pouvez accéder au code du bloc-notes Python à partir du lien suivant :
