X

QGIS : jointure d’un fichier excel à une couche SIG

Comment fusionner un fichier excel à une couche SIG sur QGIS (v 2.18)? On dispose de données dans un fichier excel qu’on souhaiterait mettre en correspondance avec les attributs d’une couche SIG. Cette fusion appelée jointure excel dans QGIS peut se résumer en 2 étapes :

  • L’import du tableur dans le logiciel;
  • Puis, l’ajout de la jointure dans les propriétés du vecteur.

Afin de réaliser ce tutoriel, la grandes lignes de la fusion dans le logiciel sont expliquées dans le paragraphe ci-après.

1. Principes de la fusion du tableur excel à une couche SIG dans QGIS

On considère deux fichiers : un fichier shape et un fichier excel. Avant d’importer le tableur excel dans QGIS, il est important de vérifier que les valeurs attributaires d’un champ du vecteur et celles d’une colonne du tableur sont identiques en respectant la casse. Ainsi, après jointure, toutes les valeurs attributaires apparaitront et seules les informations des colonnes du fichier excel correspondantes seront stockées dans la table attributaire du vecteur.

Alors, on considère par exemple le vecteur « a » et un fichier excel. Le vecteur a deux champs : « id » et « A1 » qui contiennent 10 entités. Le tableur a quant à lui 3 colonnes nommées « lettre », « statut » et « date_examen » comportant 11 lignes. « A1 » et « lettre » possèdent les données communes qui permettent la mise en correspondance de la table attributaire du vecteur et du tableur comme le montre la table 1. Toutefois, la ligne du tableur où la colonne lettre a la valeur « K » ne possède aucune valeur correspondante dans la colonne réceptrice de la couche. Cette ligne avec toutes les valeurs des différents champs (« statut », « date_examen ») du tableur  n’est donc pas prise en compte lors de la fusion.

Table 1 : Présentation des valeurs correspondantes du champ de la table attributaire du vecteur et du tableur excel.

A1 (table attributaire du vecteur)lettre (colonne du tableur excel)
AA
BB
CC
DD
EE
FF
GG
HH
II
JJ
 K (aucune correspondance)

La figure 1 ci-après montre les données avant fusion de la couche SIG et du fichier excel.

Figure 1 : Données de la couche SIG et du fichier excel avant jointure dans QGIS.

2. Import du tableur dans QGIS

Dans un premier temps, on enregistre le fichier excel en csv avec un séparateur en point-virgule par exemple. Il est possible d’importer un fichier excel en l’état mais pour ma part, les données sont illisibles même en changeant l’encodage.

Dans QGIS, il existe deux manières pour importer le tableur (.csv) :

  • Couche > Ajouter une couche > Ajouter une couche vecteur > Type de source : fichier (attention à l’encodage);
  • Couche > Ajouter une couche > Ajouter une couche de texte délimité ou en cliquant sur l’icône représentant un guillemet qui aura pour conséquence la création d’une couche. Cette couche peut être une simple table attributaire ou un vecteur avec des objets géométriques. Puis, dans la fenêtre (figure 2), on charge le fichier et on nomme la couche qui sera produite. On encode le fichier (ici : latin1) pour la lecture des attributs. Les délimiteurs ou séparateurs des colonnes sont dans notre exemple des points-virgule. Le fichier comporte des en-têtes définis par les noms des champs et le fichier n’a pas de géométrie. Par ailleurs, on peut définir le point comme géométrie si on avait dans notre fichier des coordonnées géographiques x et y qui correspondent respectivement aux longitudes et latitudes. Les valeurs du tableur apparaissent dans la fenêtre. Après validation, la couche « tableur » avec sa seule table attributaire et donc sans géométrie est chargée dans QGIS. On peut même vérifier que toutes les informations sont bien présentes en ouvrant la table attributaire.

Figure 2 : Création de la couche issue du tableur csv.

3. Ajout de la jointure Excel QGIS dans les propriétés du vecteur

Pour lancer la jointure vectorielle, on ouvre les propriétés de la couche « a » qui doit recevoir les données du tableur en double cliquant sur la couche ou Couche > propriétés. Ensuite, sur l’onglet Jointures de la fenêtre (figure 3), on ajoute une nouvelle jointure.

Figure 3 : Paramétrage de la jointure Excel QGIS.

On paramètre la jointure vectorielle :

  • joindre la couche : correspond à la table attributaire du tableur;
  • puis, Champ de jointure : champ du tableur (ici : lettre) avec des valeurs attributaires identiques avec celles du champ (ici : « A1 ») dans la couche cible;
  • Mettre la couche jointe en cache dans la mémoire virtuelle : QGIS « plante » à chaque fois que je l’utilise…;
  • Choisir les champs à joindre : on peut sélectionner les champs du tableur à fusionner;
  • Enfin, Personnaliser le préfixe des champs : on peut différencier les champs fusionnés.

On valide la règle de jointure puis on l’applique à la couche SIG. On obtient alors la table attributaire fusionnée avec l’ensemble des informations de la couche réceptrice et les valeurs correspondantes des champs choisis du tableur.

Figure 4 : Résultat de la jointure Excel QGIS.

Enfin, on n’oublie pas d’enregistrer la couche SIG fusionnée sous un autre nom.

En remarque, le tableur comportait des valeurs de type date sous excel et on note que la table attributaire fusionnée ne tient pas compte du type de champ importé puisque date_examen dans la couche réceptrice est un champ de type texte. Est-il possible de forcer le type de champ lors de l’import d’un fichier de texte délimité?

Pour conclure, ce tutoriel nous a montré comment joindre un tableur avec une couche SIG. Il est important de vérifier les champs de correspondance avant d’entamer la fusion sous QGIS. A tes jointures!

Florian Delahaye: Passionné de Géomatique

View Comments (4)

  • Bonjour,
    Merci pour ce tutoriel.
    Savez-vous s'il est possible de joindre automatiquement des couches nouvellement crées à un même tableau ?
    Très bonne journée,

  • Une fois que la jointure est faite est-il possible de fusionner définitivement afin de pouvoir rééditer les données sur la couche fusionnée? Merci

  • Je réponds à ma propre question : une fusion définitive de la jointure peut se faire en exportant simplement la couche jointurée..

Related Post