5 Évaluation
5.1 Consignes
Date limite de rendu : 04/01/2026 minuit. En cas de dépassement une pénalité pourra être appliquée.
Certains travaux réalisés par les élèves seront pris en compte dans leur évaluation.
- Algorithme de géotraitement
lieux_propices.py(exercice Section 3.3.6 - 8 points)- a minima l’intersection finale (5 pts)
- le calcul de la surface par arrondissement (3 pts)
- Projet (10 points) au choix parmi :
- Carthagéo Thématique : Cartographie avec PyQGIS (Section 5.2)
- Carthagéo Numérique : Géocodeur (Section 5.3)
- Respect des consignes (délais, envoi - 2 points):
- Le code doit être commenté et fonctionnel. Les méthodes doivent être commentées (Docstrings et commentaires en ligne) pour faciliter leur compréhension.
- Les fichiers de code doivent porter dans leur entête le nom de leur auteur ainsi que la version de QGIS sur laquelle ils ont été développés / testés (QGIS 3.4 est à proscrire).
- Les tests unitaires et la documentation complète ne sont pas attendus
- Les scripts doivent être regroupés dans un groupe portant votre nom.
- Les documents doivent être fournis soit dans une archive compressée téléchargeable via un lien Chapril ou équivalent (merci d’éviter Dropbox ou WeTransfer). Ou soit un lien vers un dépôt git.
Le lien est à envoyer par mail à nicolas (point) roelandt (at) univ-eiffel (point) fr.
À part l’ajout des couches produites, le script ne doit pas interagir avec l’interface utilisateur et ne doit en aucun cas:
changer le système de référence de coordonnées du projet
supprimer des couches déjà présentes
L’utilisateur ne doit pas intervenir sur le script Python pour changer un chemin de fichier, cela doit être géré par l’interface QGIS (chemins relatifs).
5.2 Projet Cartographie
Objectif: utiliser les fonctionnalités de cartographie de PyQGIS
Pour cela, à partir du résultat produit par lieux_propices.py, créer un nouveau script lieux_propices_carto.py et créer les fonctionnalités suivantes:
- choix des couches à représenter (Métros, Espaces verts, Gares, etc…), la symbologie sera définie dans le code
- choix de la couleur pour la zone propice (la symbologie des autres couches est fixée selon vos choix)
- choix du titre
- Respect du TOLES (Titre, Orientation, Légende, Echelle, Sources)
- choix du chemin permettant l’export du fichier pdf
Un pdf produit avec le script devra être joint pour illustrer le résultat attendu.
Vous pouvez vous inspirer du cours suivant de Georges Hinot : https://hg-map.fr/tutos/73-qgis-et-python?start=5/
Vous pouvez utiliser les flèches nord du projet QGIS : https://github.com/qgis/QGIS/tree/master/images/svg/arrows/
5.3 Projet Géocodeur
Objectif: développer un script permettant de géocoder des adresses à l’aide de l’API Adresse fournie par data.gouv.fr
Données : https://gitlab.univ-eiffel.fr/ame/intro-pyqgis/-/raw/main/adresses.csv?inline=false/
5.3.1 Fonctionnalités
A partir d’un fichier .csv chargé dans Qgis, l’utilisateur pourra:
Créer une nouvelle couche de points avec:
une géométrie correspond aux coordonnées transmises par l’API et transformées en Lambert93;
Les données contenues dans le fichier d’origine (
IDetadresse) et celles renvoyées par l’API (nom de la rue, numéro, etc.).
Par défaut, la nouvelle couche est ajoutée automatiquement au projet QGIS à la fin du traitement.
Un script de géotraitement (processing script tel que vu en Section 3.3) est attendu. En complément, un plugin peut être livré et donnera lieu à un bonus de 2 points.
5.3.2 Proposition de réalisation
Il est possible de réaliser les tâches demandées de plusieurs manières,
Voici une proposition de découpage des tâches à réaliser.
Afin de ne pas envoyer des requêtes inutiles, il est conseillé de travailler sur toutes les opérations avec une seule adresse puis de créer une boucle qui parcourra les adresses à géocoder.
Prise en main l’API
Comment construire la requête ? (point d’entrée
SEARCHde l’API Adresse)Comment envoyer la requête au serveur ? (Lisez ce tutoriel à propos du module requests)
Stockage de la réponse
AstuceCommencez avec une seule requête en stockant l’adresse dans une chaîne de caractères.
Déterminer comment extraire les données depuis la réponse
- Dans quel type d’objet sont contenues les informations ? Comment récupérer les coordonnées ?
C’est un travail d’enquête. Il faut découvrir comment accéder aux informations imbriquées dans la réponse. Il vous faudra décortiquer plusieurs couches stockées dans des objets variés.
Reconstruire la géométrie
Comment créer un point à l’aide de coordonnées ? (Regardez la documentation de
QgsPointXY))Quelle méthode permet d’ajouter des valeurs attributaires ?
Comment créer une couche vectorielle vide ?
Comment en paramétrer les attributs ?
Comment ajouter un point à une couche vectorielle ?
Boucler sur les adresses
Charger le fichier CSV et en extraire les entités
L’objet
QgsVectorLayerdispose d’une méthode dédiée qui retourne un objet qui permet d’itérer sur les entités de la couche.Comment accéder au champ
adresse?
Créer une boucle qui parcours les entités
Lit le champ
adresseet le champIDEnvoie une requête à l’API Adresse
Construit un point avec les données renvoyées et l’ajoute à la couche
Réaliser l’interface avec l’utilisateur
Chercher un fichier sur le disque
Sortie utilisateur
Assembler l’interface et le code Python
Tester
Ajouter le script ou le plugin à QGIS
Charger un fichier csv
avec les colonnes dans l’ordre
avec les colonnes dans le désordre
Tester la sortie
en mémoire
vers un fichier Géopackage