TD Boulevards hausmanniens › Vecteurs, partie 1

Légende : Cours TP
← Précédent ↑ Retour Suivant →

Abstraction

Modélisation de la donnée vecteur

La donnée vecteur est répartie en listes d’entités vecteurs, qu’on appelle parfois couches et qui sont purement abstraites, à ne pas confondre avec les couches cartographiques qui sont des rendus de style.

Chaque entitée est constituée d’un vecteur ainsi que des attributs. Les type d’attributs sont définis pour toute la couche. Il s’agit tout simplement d’un tableau, avec des colonnes définies. Sur QGIS, on y accède d’un clic droit sur la couche puis Ouvrir la table d’attributs .

  • En raisonnant depuis la carte, il s’agit bien d’ajouter des attributs aux objets de la carte (comme pour le BIM)
  • En raisonnant depuis les données, cela revient à mettre les géométries dans une colonne du tableau

Une couche vecteur spécifique est forcément de type point, ligne ou polygone mais aussi multi-point, multi-lignr, multi-polygone, qui permet à chaque vecteur d’être composé multiple géométries. Il s’agit là d’un choix sémantique : on préfèrera par exemple regrouper des polygones en une entitée unique (identifiant et attributs uniques) dans l’intérêt de la gestion. Ainsi les communes françaises sont de type multi-polygone pour permettre les enclaves car l’identité de la donnée est communale, fût-elle morcellée sur le territoire.

Acquisition

Données téléchargées

Récupérer les tronçons de route

Pour reconstituer notre boulevard, nous téléchargeons la donnée ROUTE 500 disponible en libre téléchargement sur le site professionnel des l’IGN.

La page Catalogues de données du site professionnels.ign.fr .
Onglet de téléchargement pour la base de données ROUTE 500 .
  • Se rendre sur professionnels.ign.fr puis la rubrique Catalogues de données
  • Dans Les bases de données vectorielles , suivre le lien Libre et gratuit- ROUTE 500®
  • Ouvrir l’onglet Téléchargement puis télécharger l’archive ROUTE 500® - 75 - Paris au format 7z
  • Depuis l’archive, extraire le répertoire ROUTE500_1-1_SHP_LAMB93_D075_2012-11-21 /ROUTE500 /1_DONNEES_LIVRAISON_2012-11-00091 /R500_1-1_SHP_LAMB93_D075-ED121 dans un nouveau répertoire td/vecteur/ROUTE500
    • Si nécessaire, installer l’utilitaire 7-Zip (pour Windows).
Répertoires à extraire de l’archive vers td/raster/ROUTE500

Numérisation sur fond cartographique

QGIS permet de numériser des entités vectorielles sur la carte. Il s’agit alors d’édition des données et non plus du projet : le travail n’est pas enregistré dans le projet (comme c’est le cas pour l’ajout de couches, le style, la projection...) mais dans le fichier de données.

Cela s’appelle le Mode édition , que l’on doit activer sur une couche vectorielle dès lors qu’on souhaite modifier ses données. C’est valable pour la numérisation d’entités, la suppression, l’ajout de colonnes, etc.

Pour créer une couche, on clique sur le menu Couche- Créer une couche . On a alors le choix entre Shapefile et Spatialite , dont les particularités sont décrite plus bas.

Créer une nouvelle couche Spatialite

En préalable, il faut avoir choisi un boulevard pour l’étude. Voir : Sujet .

Nous allons créer une couche de type Polygone dans un nouveau fichier SQLite

  • Menu Couche- Créer une couche- Nouvelle couche Spatialite (Spatialite équivaut à SQLite)
  • Indiquer :
    • Base de données : nommer le fichier à créer travail.sqlite dans td/vecteur/
    • Nom de la couche : ilots (pas de caractères accentués)
    • Colonne de géométrie : geometry (peu importe, en fait)
    • Type : Polygone
    • SCR : Lambert 93 (EPSG:2154 )
    • Créer une clé primaire autoincrémentée : OUI pour disposer d’un identifiant automatiquement généré pour toute création d’entité (cela va de soi pour notre utilisation SIG mais pas pour SQLite qui est une base de donnée générique)
    • Liste d’attributs : définir 1 attribut nommé nom de type Donnée texte de largeur 255 maximum (à définir sous Nouvel attribut , puis cliquer sur Ajouter à la liste d’attribut
  • Valider sur OK : la donnée est désormais créée (comme fichier) et automatiquement ajoutée à QGIS (comme couche)
Coin supérieur-gauche de QGIS, mode édition actif, avec le menu du mode édition

Essai de numérisation

La couche est vide. Pour lui ajouter des entités, nous devons Basculer en mode édition en cliquant sur l’icone , qui fait partie de la barre d’outil Numérisation (Vue- Barres d’outils- Numérisation ).

Commençons par un essai :

  • cliquer sur Ajouter une entité (îcone )
  • cliquer dans la carte pour démarrer le tracé
  • définir d’autres points par un clic gauche
  • terminer par un clic droit (le clic droit n’est pas compté comme point)
  • une popup s’ouvre pour donner la valeur de l’attribut nom : on peut laisser vide et valider
  • activer l’outil de noeuds (îcone )
  • sélectionner le polygone en cliquant sur une arrête
  • zoomer sur un sommet du polygone et le déplacer par un cliqué-déplacé
  • sélectionner le sommet en cliquant dans le carré
  • appuyer sur la touche suppr pour supprimer le sommet

Attention : rien n’est enregistré tant qu’on enregistre pas explicitement via le menu du mode édition . Par ailleurs, il est plus sûr de clôre le mode édition dès qu’on n’a plus à modifier les données, en cliquant sur la même îcone . QGIS demandera alors s’il faut enregistrer ou annuler les modifications. Mais la règle est d’enregistrer régulièrement, après chaque action, typiquement toutes les 5 minutes.

Îlots numérisés sur le boulevard Voltaire, entre la place de la République et la place Voltaire

Numériser les îlots du plan Tardieu 1839 intersectant le boulevard

Après familiarisation avec le l’outil de numérisation, nous pouvons dessiner les îlots sur le plan Tardieu.

  • suivre assez précisément la forme des tracés
  • sauvegarder au moins après chaque îlot
  • de temps en temps, vérifier la superposition sur la couche OpenStreetMap, en masquant momentanément le plan Tardieu
  • quitter le mode édition après l’opération

Archivage

Shapefile et MapInfo

Le format Shapefile est le premier standard de facto pour stocker des données vecteurs dans des fichiers, créé par ESRI en 1998. Il reste aujourd’hui l’un des formats les plus répandus. Sur QGIS, certains plugins travaille directement à partir du Shapefile ou en produisant une Shapefile.

Le Shapefile est en fait constitué de plusieurs fichiers, gardant le même nom avec des extensions différentes. Pour Le Shapefile TRONCON_ROUTE , on a :

  • TRONCON_ROUTE.shp : contient les vecteurs
  • TRONCON_ROUTE.dbf : contient les attributs, au format dBase
  • TRONCON_ROUTE.shx : contient l’index, pour retrouver efficacement les vecteurs (et leur position dans TRONCON_ROUTE.shp ) d’après une étendue géographique donnée.

MapInfo est un logiciel concurrent. Son format est lui aussi devenu standard de facto . Dans le même principe, une couche TRONCON_ROUTE se répartit en 2 fichiers :

TRONCON_ROUTE.mif : vecteurs

TRONCON_ROUTE.mid : attributs

Les multiples fichiers sont solidaires pour la même couche : l’un ne peut pas être exploité sans les autres. Ceci pour des raisons historiques : pour des raisons de performances d’accès, il était peu pratique de traiter avec une archive. C’était plus simple en éclant par fichier. Encore aujourd’hui, ce design permet d’ouvrir en lecture de très lourds shapefile, en ne chargeant que le nécessaire au fil de la navigation dans la vue cartographique de QGIS, grâce à l’index du Shapefile.

De ce fait, pour transferer une donnée Shapefile ou MapInfo, on l’archive généralement au format ZIP.

Onglet Style des Propriétés de la couche vecteur, pour changer la couleur et l’épaisseur (Largeur ) du trait

Ajouter la donnée TRONCON_ROUTE au projet QGIS

La donnée ROUTE téléchargée précédemment est au format Shapefile. Nous allons ouvrir la donnée TRONCON_ROUTE dans QGIS pour travailler avec.

  • Importer la donnée en couche QGIS par un glissé-déposé du fichier td/raster/ROUTE500/RESEAU_ROUTIER/TRONCON_ROUTE.shp dans la zone du panneau Liste des couches de QGIS (le fichier
    SHP} est celui à ouvrir, enregistrer, etc. car c’est lui qui représente tous les autres.
  • L’autre méthode consiste à faire Couche- Ajouter une couche- Ajouter une couche vecteur puis choisir le fichier (sinon l’icône , à gauche).

Pour améliorer la lisibilité des lignes :

  • Ouvrir les propriétés de la couche TRONCON_ROUTE en double-cliquant sur son nom
  • Dans l’onglet Style , changer la couleur et la largeur, par exemple en choisissant le violet avec 1 mm

SQLite, une base de données relationnelle locale

Prononcé SQL-Lite , SQLite n’est à l’origine pas spécifique à la géo. C’est une base de données relationnelle dans un seul fichier. Il est fonctionnellement similaire au format de base de données Microsoft Access.

Le fichier .sqlite contient des tables. Tout comme dans MySQL ou PostgreSQL, chaque table contient des lignes (les entités) et des colonnes (les attributs).

Ce format est prometteur, du fait de sa simplicité logique (équivaut à un répertoire de Shapefiles) et sa capacité de rassembler un jeu de données complet.

Notre base de données travail.sqlite

Précédement pour de la numérisation, nous avons créé le fichier td/vecteur/travail.sqlite . Si c’était un shapefile, nous aurions 4 à 6 fichiers solidaires pour cette simple couche, car le format Shapefile est ainsi, ce qui oblige à zipper pour transférer par mail. Le format SQLite est plus simple : tout est dedans.

De surcroit, le fichier SQLite peut contenir de nombreuses couches car c’est une véritable base de données, comme un fichier Microsoft Access. Cela permet d’exécuter des requêtes SQL pour effectuer des traitements avancés sans interface graphique.

Pour nous, c’est un puissant outil de stockage. On pourrait intégrer à notre base travail.sqlite toutes les autres données vectorielles du projet, simplifiant d’autant l’arborescence des fichiers.

PostGIS, la base de données spatiale relationelle client/serveur

Une base de données PostGIS est en fait la célèbre Base de donnée relationnelle PostgreSQL dans laquelle on a importé les fonctions PostGIS qui permettent de manipuler des géométries 2D et 3D. Ce sont des logiciels libres.

La base PostgreSQL est client/serveur , contrairement à SQLite qui est local . Le client/serveur est ce qu’on appelle le cloud . Cela signifie que :

  • plusieurs personnes (clients ) peuvent accéder aux données en même temps
  • le serveur et la base de données sont délocalisés : dans les mêmes murs ou ailleurs sur Internet

PostGIS est à PostgreSQL ce que Spatialite est à SQLite : le premier est une cartouche géographique du second. PostgreSQL et SQLite sont des bases de données génériques. PostGIS et Spatialite sont des fonctions spécifiques à la géo qui reposent sur PostgreSQL et SQLite, respectivement.

PostGIS est très utilisé dans le secteur de l’information géographique, et l’est de plus en plus. Son intérêt est évident pour qui veut mutualiser ou centraliser des données pour une équipe, donner un accès temps réel aux partenaire, etc.

Il est également utilisé en local (pour soi-même, sur son propre ordinateur), mais Spatialite est souvent suffisant pour ce cas.

Web Map Service (WFS) : couche en streaming depuis le cloud

Le standard WFS définit un mode de requêtage s’appuyant sur HTTP : il organise la consommation de couches vectorielles. Contrairement à un fichier qui serait téléchargé intégralement, la donnée est potentiellement infinie et le WFS permet de récupérer à la demande les entités filtrées par région ou par attribut.

C’est du streaming de couche , conceptuellement comparable au streaming de vidéos : on récupère la donnée par morceaux, au fil de leur consultation.

Liste des couches WFS disponibles sur le service du BRGM (Bureau des Ressources Géologiques et Minières)

Analyse

Outil d’identification

Panneau d’identification apparaissant en bas à gauche de QGIS après clic sur un tronçon du boulevard Voltaire

Afficher les attributs d’un tronçon en cliquant sur la carte

Pour identifier des tronçons de route :

  • Rendre visible la couche TRONCON_ROUTE, si nécessaire
  • Activer l’outil d’identification : îcone
  • Cliquer sur la ligne d’un tronçon : un panneau apparaît, normalement sous la liste des couches. Un arbre dépliant permet de visualiser les attributs.
  • Si les accents s’affichent mal, alors l’encodage des caractères n’est pas bien interprété : il faut se rendre dans Propriétés de la couche- Général- Encodage des données sources et changer soit pour l’UTF8 , soit pour l’ISO-8851-1 .

Table d’attributs

Pour visualiser la couche en tant que tableau , cliquer avec le bouton droit sur son nom puis Ouvrir la table d’attribut (sinon depuis le menu Couche )

Table d’attribut de la couche TRONCON_ROUTE

Interroger la source de données

La méthode la plus commune pour interroger des données tabulaires est le langage SQL, très puissant pour effectuer des jointures entre plusieurs tables, des agrégation de données, calculs avancés...

Un SIG comme QGIS apporte des interfaces graphiques pour plus d’intuitivité qui font néanmoins appel à des sous-ensembles de la syntaxe SQL, notamment les expression booléennes (ayant pour résultat VRAI ou FAUX .

Par exemple :

  • "nom_commune" = 'Vincennes'
  • "departement" = 92 AND "population" > 5000

Ces expressions sont appliquées à chaque entitée pour être évaluées à VRAI ou FAUX. On les exploite dans différents contextes :

  • sélectionner des entités, pour la surbrillance sur la carte ou supprimer d’après une condition
  • restreindre à la source les entités qui seront traitées par le SIG
  • définir des styles multiples, pour définir les critères qui s’appliquent à chaque règle

Nous aborderons plus loin les opérations-types de l’analyse : filtre, attributs calculés, jointures, agrégation. Ces opérations sont applicables aussi bien pour analyser que pour afficher . Dans un cas, le produit de l’opération devient une donnée en soi. Dans l’autre, il s’agit de paramétrage pour l’affichage : le traitement se fait à la volée .

Filtres

Filtrer consiste à restreindre les entités. On a en sortie une donnée de structure identique à la donnée d’entrée qui est l’ensemble des entités en entrée qui valident la condition du filtre.

Filtrer ne change pas la cardinalité des données : une route reste une route, un point un point, etc. Les entités ne sont pas dédoublées.

Le filtre est défini par une expression algébrique booléenne, c’est-à-dire ayant pour valeur VRAI ou FAUX , pour l’entité respective pour laquelle elle est évaluée. Si la valeur est VRAI alors l’entité est inclue dans la donnée en sortie. Si c’est FAUX , elle en est exclue.

Exemple d’expression de filtre pour une données routes : nb_voie >= 2 (VRAI si le nombre de voies est supérieur ou égal à 2)

Le filtre de couche QGIS ne modifie pas les données

Définir un filtre sur une couche vectorielle de QGIS ne touche qu’au projet et pas aux données. Il altère la manière dont le projet voit la donnée. C’est une abstraction d’accès.

Ainsi un fichier de données peut être présent via de multiples couches, qui accèdent chacune un sous-ensemble de la donnée via son filtre respectif.

Filtrer les tronçons de route qui sont à vocation régionale

Fenêtre de filtre vierge
  • Pour définir un filtre, cliquer du bouton droit sur la couche TRONCON_ROUTE puis Filtrer . Auparavant, c’est bien de garder visible la table d’attributs pour mieux repérer la colonne à utiliser.
  • La fenêtre d’expression SQL s’affiche alors. Expression de filtrage propre au fournisseur désigne l’expression SQL à entrer dessous, mais tous les boutons sur la partie supérieure de la fenêtre sert à le faire avec la souris. Fournisseur désigne ici le pilote (logiciel) par lequel QGIS accède au fichier.
  • Dans la liste des Champs , double-cliquer sur celui qui nous concerne : VOCATION . "VOCATION" s’ajoute alors dans l’expression.
  • Cliquer ensuite sur =
  • Pour insérer la valeur régionale exacte (à la majuscule près), cliquer sur le bouton Tout (à droite sous l’encadré Valeurs ) puis double-cliquer sur la valeur Liaison régionale apparue dans la liste.
  • L’expression SQL est complète. Il faut lire : entité de TRONCON_ROUTE ] dont l’attribut VOCATION est égal au texte Liaison régionale . Valider en cliquant sur OK .

La carte ne montre alors que les entités validant la condition. La table attributaire est restreinte également aux entités validant la condition. En fait, le filtre s’applique en amont de QGIS du côté du pilote d’accès à la donnée

Après l’opération, désactiver le filtre en supprimant le texte de l’expression (vider et cliquer sur OK ), pour la sélection de notre boulevard.

Tronçons de route à vocation régionale

Selection

Sélection (en jaune) des tronçons composant le boulevard Voltaire

Sélectionner les tronçons du boulevard et les isoler dans une nouvelle couche

  • Zoomer sur le boulevard à l’aide de la vue aérienne en fond de carte
  • Rendre visible la couche TRONCON_ROUTE complète (sans filtre)
  • Activer l’outil de sélection (icône )
  • Cliquer successivement sur les tronçons en appuyant sur la touche Control pour ajouter à la sélection
  • Cliquer du bouton droit sur le nom de la couche TRONCON_ROUTE puis Enregistrer sous
  • Choisir le format SQLite et comme fichier, via le bouton Parcourir , choisir td/vecteur/troncon_route.sqlite
  • Cocher l’option N’enregistrer que les entités sélectionnées et valider sur OK

La nouvelle couche troncon_route (SQLite) est automatiquement ajoutée au projet et nous pouvons désactiver TRONCON_ROUTE pour mieux la voir.

Traitements (1e partie)

Zones tampons

Boulevard Voltaire au niveau de la place de la République : buffer semi-transparent (en vert) autour de la ligne du boulevard (en rouge) avec le découpage d’orthophotos

Au niveau métier, le tompon représente la propagation d’un phénomène dans un rayon donné, ou les zones de X mètres autours d’une surface donnée. C’est transformer le concept de distance (à quelque chose ) en surface.

Le tampon est la surface regroupant tout point situé à une distance inférieure donnée d’une géométrie initiale.

La zone tampon pour un point est un disque qui a pour rayon la distance du tampon : dans un rayon de 10 km autours de [...]

QGIS ne permet pas les courbes, seulement des segments droits pour les lignes et polygones. Un cercle est donc approché par un hexagone à N points. Lors de l’application d’un tampon, on peut préciser ce N .

Outil de calcul de tampon

Produire la surface théorique du boulevard à partir des routes

Pour notre proposition d’aménagement, nous devons choisir une largeur. La cohérence dépend du boulevard choisi. On peut choisir la largeur du boulevard actuel qui a été construit, ou proposer une autre largeur. Comme exemple, pour le boulevard Voltaire on propose 30 mètres de largeur.

La distance du tampon est la moitié de la largeur (le tampon s’établie de part et d’autre de la ligne).

  • Ouvrir la couche troncon_route.sqlite , résultat de la sélection du boulevard réalisée dans le module Vecteurs, partie 1 .
  • Ouvrir l’outil de calcul de tampons : menu Vecteur- Outils de géotraitement- Tampon(s)
  • Choisir la couche troncon_route et la distance choisie
  • Comme fichier en sortie , cliquer sur Parcourir et choisir le fichier à créer : td/vecteur/troncon_route.buffer.shp
  • Cocher l’option Union des résultats du tampon et Ajouter le résultat au canvas

Arranger et archiver le projet

Le fichier td/projet-1.qgs doit représenter le projet QGIS dans son état à ce stade. Au délà de cette consigne, il est conseillé d’archiver la totalité du répertoire afin de pouvoir, en cas de problème, revenir à cet état.

De plus, les multiples opérations et libres essais ont potentiellement laissé le projet dans un état désordonné.

  • Nettoyer les couches qui doivent l’être, si nécessaire
  • Copier le projet en td/projet-1.qgs
Suivant → ← Précédent Retour