5 - SQL - Bases de données

Présentation de DBManager

Mise en oeuvre

Nous allons mettre en pratique SQL dans les SGBD SpatiaLite, puis PostGIS.

Pour chacun de ces SGBD il existe de nombreux 'clients' permettant d'écrire et d'exécuter les requêtes SQL. Depuis QGIS nous allons utiliser le plugin DBManager qui s'interface aussi bien avec SpatiaLite que PostGIS. C'est le plugin qui est le plus porté par la communauté QGIS.

Nous utiliserons également QspatiaLite qui est un plugin spécifique pour SpatiaLite qui propose un éditeur SQL avancé (ergonomie proche de celle de MapInfo). Pour ceux qui en dispose, il est possible d'utiliser PgAdmin III qui est le client le plus populaire de PostGIS et qui dispose de fonctionnalités intéressantes comme un assistant à l'écriture de requêtes SQL.

Pour mettre en œuvre le plugin DB Manager...

Vérifiez qu'il est bien installé ou sinon installez le.

Gestionnaire d'extension de QGIS

Le plugin est alors disponible dans le menu 'bases de données' de QGIS.

Menu Base de données

Il est possible de créer une nouvelle base de données spatialite à partir de QGIS en exportant une première couche (clic droit, enregistrer sous) puis de choisir le format spatialite (et pas sqlite).

Pour se connecter la première fois à une base de données existante (spatialite ou postgis) dans DBManager, il est nécessaire de le faire par l'intermédiaire de QGIS.

Établir la connexion avec la base de données QGIS_perf_sandbox_V2.sqlite (QGIS_perf_sandbox pour les versions de QGIS antérieure à la V2.0) en utilisant le bouton 'ajouter une couche spatialite' Ajouter une couche spatialite et désigner le fichier QGIS_perf_sandbox_V2.sqlite fourni dans le jeux de données (répertoire Divers). Puis connecter... vous devez voir apparaître cette boîte de dialogue :

Connexion sandbox

En lançant DB Manager vous devez maintenant pouvoir vous connecter à cette base.

Nb : Une base de données de type PostGIS peut être protégée par mot de passe, dans ce cas il faut le saisir dans la fenêtre qui apparaît pour cela.

DbManager

L'onglet info fournit les informations sur les tables

DBManager Informations

On peut par exemple lire que la table COMMUNE contient 19 enregistrements (rows), qu'il y a une colonne de géométrie contenant des objets 'MULTIPOLYGONS', que la projection est Lambert 93 et qu'il n'y a pas d'index spatial ('No spatial index defined...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 'SQL window' ouvre une nouvelle boîte de dialogue dans laquelle nous allons pouvoir exécuter des ordres SQL.

Exemple : sélectionner tous les objets de la table commune :

Sélection avec DBManager

ComplémentGlisser / lâcher

DBmanager autorise le glisser/lacher (drag'n'drop), à partir du navigateur de QGIS et inversement, ou entre bases à l'intérieur de DBManager, ou même à partir de toute source valide depuis le navigateur de fichier de windows, c'est une autre façon que celles que nous verrons plus loin d'importer des données dans SpatiaLite ou PostGIS.

Le résultat d'une requête SQL peut-être chargé comme une nouvelle couche dans QGIS en cochant la case 'Charger en tant que nouvelle couche'.

Il faut préciser la colonne avec des valeurs entières et uniques. Ce doit être un champ de type INTEGER, on choisira si on ne dispose de rien d'autres le champ PKUID, mais par exemple pour la table COMMUNE se pourrait être ID_BDCARTO. La colonne géométrique est en générale la colonne de nom Geometry.

Attention

Problèmes connus avec Spatialite

QGis utilise gdal/ogr pour lire et écrire dans les bases spatialite.

Avec gdal 1.10.1 (voir le menu a propos de QGIS pour vérifier la version) il y a des lenteurs en création des bases spatialite. C'est corrigé à partir de gdal 1.10.2 (QGIS 2.6).

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Maîtrise d'ouvrage : MEDDE - METL - MAAF / Maîtrise d'œuvre : ENTE Aix - ENSG / Licence ouverte ETALAB Réalisé avec Scenari (nouvelle fenêtre)