Import de données attributaires suivi d'une jointure

Import de données attributaires suivi d'une jointure

La jointure attributaire permet de joindre une table attributaire (ne comportant pas d'objets géométriques, par ex. un fichier .TXT / .CSV / DBF / XLS / XLSX / ODS) chargée dans QGIS avec une couche vectorielle géographique déjà chargée dans QGIS.

Il faut faire attention à ce qu'une ligne de la table de la couche vectorielle soit en correspondance avec au plus une (0 ou 1) ligne de la table attributaire à joindre, sinon QGIS prendra une ligne correspondante de façon imprévisible.

Les formats autorisés sont les formats texte délimité (.txt, .csv, .dbf), les formats de feuille de calcul (xls, xslx, ods) et les formats de bases de données gérés par QGIS : SQLite, PostgreSQL (Les formats de bases de données ne sont pas étudiés dans la présente formation)

MéthodeImport de données attributaires avec jointure

L'objectif est d'importer les données attributaires contenus dans le fichier CSV ATTRIBUTS_COMMUNES.csv et de le joindre à la couche géographique COMMUNE.SHP

Ouvrir la couche géographique COMMUNE (data_foad_qgis/BD_TOPO/H_ADMINISTRATIF/COMMUNE.SHP) avec la commande "Couche/Ajouter une couche vecteur" ou cliquer sur l'icône

.

Ouvrir la couche attributaire ATTRIBUTS_COMMUNES (data_foad_qgis/Divers/ATTRIBUTS_COMMUNES.csv) avec la commande "Couche/Ajouter une couche vecteur" ou cliquer sur l'icône

.

Choisir le type de fichier « Valeurs séparées par une virgule [OGR] (*.csv) »

Les 2 couches sont ouvertes dans QGIS :

Panneau Couches

La table attributaire de la couche COMMUNE se présente comme suit :

Table attributaire de la couche COMMUNE

Celle de la couche (non géographique) ATTRIBUTS_COMMUNES est la suivante :

Table attributaire de la couche ATTRIBUTS_COMMUNES

La jointure sera effectuée sur le code INSEE, qui est présent dans les 2 tables attributaires :

  • Couche COMMUNE : champ CODE_INSEE

  • Couche ATTRIBUTS_COMMUNES : champ INSEE_COMM

CONSEIL

Même si QGIS peut joindre des champs de types différents (numérique et chaîne de caractères), il est conseillé d'utiliser des champs de même type.

Dans le cas présent les champs CODE_INSEE et INSEE_COMM sont de type chaîne de caractères.

Double-cliquer sur le nom de la couche géographique (COMMUNE) dans la fenêtre des couches pour ouvrir la fenêtre des propriétés de la couche.

Onglet Jointure

Dans l'onglet jointure,cliquer sur le bouton ‘+' et dans la boîte de dialogue ‘Ajouter une jointure vectorielle', choisir :

  • La couche attributaire à joindre (la couche de texte délimité) : ATTRIBUTS_COMMUNES

  • Le champ de la couche attributaire à joindre : INSEE_COMM

  • Le champ ciblé de la couche vectorielle géographique : CODE_INSEE

On choisira de préfixé les champs de la table à joindre avec un préfixe court (par défaut c'est le nom de la table distante ce qui peut conduire à des noms de champs très longs et éventuellement poser problèmes avec le format SHP qui limite les noms de champs à 10 caractères).

Boîte de dialogue Jointure

Valider avec Ok

La jointure à réaliser apparaît dans la fenêtre des propriétés de la couche avec, si on veut l'afficher, le résumé des paramètres de jointure :

Jointure

Il est possible de modifier la jointure par un double-clic dessus, puis la boîte de dialogue s'ouvre à nouveau.

Valider avec OK pour réaliser la jointure

Les attributs de la couche de texte délimité sont alors ajoutés à chaque élément de la couche vectorielle géographique :

Résultat de la jointure

L'enregistrement du projet QGIS permet de sauvegarder cette jointure et de prendre en en compte les mises à jour successives de la couche attributaire (le fichier .CSV), effectuées hors QGIS.

Le résultat de la jointure peut être sauvegardé dans une nouvelle table vecteur.

Dans ce cas, il faut sauvegarder la couche vecteur résultat de la jointure avec la commande ‘Menu Couche>Sauvegarder sous...' ou clic droit sur la couche vectorielle géographique (COMMUNE) et commande ‘Sauvegarder sous...'

RemarqueÉdition des champs de jointure

Si l'option 'jointure de table éditable' n'a pas été activée lors de la définition de la jointure, les champs joints ne sont pas directement éditables dans la couche résultante. On ne peut alors les éditer qu'en passant par le fichier de la table d'origine ou bien en sauvegardant la couche vecteur résultant de la jointure comme nouvelle table.

Si l'option "Jointure de table éditable" a été activée dans la fenêtre de dialogue Jointure.

Les entités de la table jointe peuvent être modifiées à la condition d'activer également le mode édition pour la couche d'origine des entités jointes.

RemarqueTypes de champs

Lorsqu'on importe un fichier CSV seul dans QGIS, toutes les colonnes du fichier sont interprétées comme des chaînes de caractères et les colonnes de la jointure sont dans ce cas en format texte.

Pour importer et joindre tous les types de champs reconnus par QGIS, notamment les champs numériques, il est nécessaire d'associer au fichier CSV un fichier CSVT portant le même nom et enregistré dans le même répertoire.

Le fichier CSVT qui contient la structure et le format des champs du fichier CSV est automatiquement détecté quand celui-ci est importé dans QGIS.

Un exemple est décrit dans le chapitre  'Export de données attributaires'.

RemarqueFiltrage sur champs joints

On peut vouloir filtrer une table pour laquelle une jointure a été réalisée.

Dans ce cas QGIS affiche un message proposant de transformer la couche en 'couche virtuelle'.

La notion de couche virtuelle a été développé dans QGIS pour réaliser des requêtes SQL sur une ou plusieurs tables ouvertes dans QGIS. Le SQL est un point qui est abordé dans la formation Perfectionnement.

Pour réaliser un filtre sur une couche jointe il suffit de répondre ok à la boite de dialogue :

Nous reverrons plus en détail les couches virtuelles dans la formation perfectionnement.