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.

Avertissement

À 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
Important

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/

Flèche nord

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 (ID et adresse) 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.

Important

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.

Astuce

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 SEARCH de l’API Adresse)

    • Comment envoyer la requête au serveur ? (Lisez ce tutoriel à propos du module requests)

    • Stockage de la réponse

      Astuce

      Commencez 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 ?
Astuce

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 QgsVectorLayer dispose 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 adresse et le champ ID

      • Envoie 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