Utilisation de DBManager avec PostGIS

Mise en œuvre en pratique SQL dans le SGBD PostGIS (démonstration)

Si la base de données PostGIS est protégée par un mot de passe, il faut le saisir dans la fenêtre qui apparaît pour cela.

Nous rappelons ici les principales étapes...

La fenêtre suivante apparaît indiquant que la connexion avec la base de données PostGIS est effective.

Nb : A noter que chaque utilisateur dispose de Privilèges qui sont indiqués. C'est l'administrateur de la base de données qui règles les droits et rôles.

Un utilisateur doit pourvoir au minimum 'accéder aux objets', un producteur doit pouvoir 'créer de nouveaux objets'.

Lorsqu'on se place sur un objet, on peut lire les privilèges de l'objet en question.

Cliquer sur le schéma utilisé ici public puis sur le nom du fichier souhaité : ici route_xy (attention, il ne s'agit ici que d'une démonstration).

La fenêtre suivante apparaît indiquant tous les champs attributaires de cette table PostGIS :

Table

L'onglet info fournit les informations sur les tables

On peut par exemple lire que la table route_xy contient 3818 enregistrements (rows), qu'il y a une colonne de géométrie contenant des objets 'LINESTRING', que la projection est Lambert 93 et qu'il n'y a pas d'index spatial (nous verrons ce que cela signifie concrètement plus tard).

L'onglet table fournit une vision des données de la table et l'onglet preview une visualisation de la géométrie.

Le bouton 'fenêtre SQL' (ou menu Base de données / Fenêtre SQL) ouvre une nouvelle boîte de dialogue dans laquelle nous allons pouvoir exécuter des ordres SQL.

On se propose de sélectionner tous les tronçons de route de la table route_xy dont le champ numéro comprend la valeur D104.

On se place alors n'importe où sur la base de donnée, et on lance la fenêtre SQL.

La requête est :

1
SELECT * FROM route_xy where numero = 'D104'

Après avoir cliqué sur le bouton Exécuter (F5), la liste des enregistrements de la table correspondant à la requête apparaît dans la partie Résultat de la fenêtre.

En cochant la case Charger en tant que nouvelle couche, on peut afficher dans QGIS les données résultant de la requête.

Résultat

Il faut désigner obligatoirement la colonne avec des valeurs entières et uniques (identifiant) et la colonne géométrique.

La colonne Géométrique peut être trouvée dans l'onglet info de la table sous DBManager ou l'on voit que le champ 37 est de type geometry(LineString, 2154). La colonne avec des 'valeurs entières et uniques' est donnée par la rubrique Constraint dans le même onglet, il s'agit de la colonne gid.

Si nous voulions rajouter un identifiant unique on aurait pu le créer en modifiant la requête SQL :

1
SELECT row_number() over() as ident, * FROM route_xy where numero = 'D104'

L'info-bulle de la couche résultante dans QGIS après chargement indique la source (lorsqu’on positionne la souris sur le nom de la couche) :

table ="(SELECT * FROM route_xy WHERE numero = 'D104')"

Infobulle dans QGIS