Pratique de geopandas: données vélib
Lire et enrichir des données spatiales
Dans cette partie, nous utiliserons la fonction suivante, qui facilite
le téléchargement et le dézippage des données proposées sur data.gouv
:
import requests
import tempfile
import zipfile
temporary_location = tempfile.gettempdir()
def download_unzip(url, dirname = tempfile.gettempdir(), destname = "borders"):
myfile = requests.get(url)
open(dirname + '/' + destname + '.zip', 'wb').write(myfile.content)
with zipfile.ZipFile(dirname + '/' + destname + '.zip', 'r') as zip_ref:
zip_ref.extractall(dirname + '/' + destname)
Exercice 1: lire et explorer la structure de fichiers géographiques
- Utiliser la fonction
download_unzip
avec l’url https://www.data.gouv.fr/fr/datasets/r/07b7c9a2-d1e2-4da6-9f20-01a7b72d4b12 pour télécharger les données communales. - Importer le fichier avec la package
geopandas
(si vous avez laissé les paramètres par défaut, le fichier devrait être à l’emplacementtemporary_location + "/borders/communes-20190101.json"
). Vous pouvez le nommercommunes_borders
- Regarder les premières lignes des données. Identifier la différence avec un DataFrame standard.
- Afficher l’attribut
crs
decommunes_borders
. Ce dernier contrôle la transformation de l’espace tridimensionnel terrestre en une surface plane. - Afficher les communes de l’Aveyron (département 12) et utiliser la méthode
plot
- Réprésenter la carte de Paris : quel est le problème ?
En effet, on ne dispose ainsi pas des limites des arrondissements parisiens, ce qui appauvrit grandement la carte de Paris. On peut les récupérer directement depuis le site d’open data du grand Paris:
Exercice 2: compléter des données spatiales issues de sources différentes
- Importer les données de découpage des arrondissements parisiens à l’adresse https://opendata.paris.fr/explore/dataset/arrondissements/download/?format=geojson&timezone=Europe/Berlin&lang=fr
- Vérifier sur une carte que les découpages des arrondissements sont bien présents
- Vérifier l’attribut
crs
. Est-il cohérent avec celui des données communales ? - Retirer Paris du jeu de données communales et utiliser les arrondissements
pour enrichir (nommer l’objet obtenu
data_borders
). Ici, on peut ne pas se soucier de la variable commune de superficie aux niveaux différents car on va la recréer. En revanche, renommer la variablec_arinsee
eninsee
avec la méthoderename
et faire attention aux types des variables - Créer une variable
dep
stockant le département - Représenter les communes de la petite couronne parisienne (75, 92, 93, 94)
Utiliser des données géographiques comme des couches
graphiques
Souvent, le découpage communal ne sert qu’en fond de cartes, pour donner des repères. En complément de celui-ci, on peut désirer exploiter un autre jeu de données. On va partir des données de localisation des stations velib, disponibles sur le site d’open data de la ville de Paris et requêtables directement par l’url https://opendata.paris.fr/explore/dataset/velib-emplacement-des-stations/download/?format=geojson&timezone=Europe/Berlin&lang=fr
Exercice 3: importer et explorer les données velib
- Importer les données velib sous le nom station
- Représenter sur une carte les 100 stations les plus importantes. Vous pouvez également afficher le fonds de carte des arrondissements en ne gardant que les départements de la petite couronne (75, 92, 93, 94). Cette page peut vous aider pour afficher plusieurs couches à la fois (nous irons plus loin lors du chapitre XXXX).
- (optionnel) Afficher également les réseaux de transport en communs, disponibles ici. L’url à requêter est https://data.iledefrance-mobilites.fr/explore/dataset/traces-du-reseau-ferre-idf/download/?format=geojson&timezone=Europe/Berlin&lang=fr
Jointures spatiales
Les jointures attributaires fonctionnent comme avec un DataFrame pandas
. Pour conserver un objet spatial in fine, il faut faire attention à utiliser en premier (base de gauche) l’objet geopandas
. En revanche, l’un des intérêts des objets geopandas est qu’on peut également faire une jointure sur la dimension spatiale.
La documentation à laquelle se référer est ici.
Exercice 4: Associer les stations aux communes et arrondissements auxquels ils appartiennent
- Faire une jointure spatiale pour enrichir les données de stations d’informations sur l’environnement.
Appeler cet objet
stations_info
- Représenter la carte des stations du 19e arrondissement (s’aider de la variable
c_ar
). Vous pouvez mettre en fond de carte les arrondissements parisiens. - Compter le nombre de stations velib et le nombre de places velib par arrondissement ou communes (pour vous aider, vous pouvez compléter vos connaissances avec ce tutoriel). Représenter sur une carte chacune des informations
- Représenter les mêmes informations mais en densité (diviser par la surface de l’arrondissement ou commune en km2)
Exercice 5 (optionnel): Relier distance au métro et capacité d’une station
Une aide ici
- Relier chaque station velib à la station de transport en commun la plus proche. Vous pouvez prendre les localisations des stations ici
- Quelle ligne de transport est à proximité du plus de velib ?
- Calculer la distance de chaque station à la ligne de métro la plus proche. Faire un nuage de points reliant distance au métro et nombre de places en stations