4 - SQL - Bases de données

Gérer les bases et les tables

Utiliser Spatialite sous QGIS

SpatiaLite est l'extension spatiale de Sqlite. Il est conforme à la norme OGC-SFS (Open Geospatial Consortium - Simple Feature SQL) et ouvre la porte à la réalisation d'analyses spatiales au-delà des fonctions natives de QGIS.

SpatiaLite est utilisé par QGIS pour stocker ses propres informations. Il est donc disponible de façon sous-jacente lorsqu'on installe QGIS.

Remarque

Le plug-in 'édition hors connexion' permet de gérer la synchronisation avec une base SpatiaLite (offline.sqliter) embarquée.

Il est donc possible d'envisager des utilisations avec saisie terrain sous SpatiaLite puis synchronisation au retour avec une base partagée centrale (sous PostGIS par exemple).

Nous allons utiliser spatialite sous QGIS avec DBManager.

ComplémentSpatialite ou Geopackage comme base de données 'embarquée' ?

Spatialite ne permet pas de stocker des fichiers raster. C'est pourquoi l'OGC (Open Geospatial Consortium) a entrepris de définir en 2014 un format de ficher dérivé de Spatialte permettant de stocker également des rasters. Tout comme Spatialite, ce format a été défini essentiellement pour être efficace sur des appareils mobiles (base 'embarquée').

Geopackage diffère de manière subtile de Spatialite, il faut cependant noter que Spatialite dispose depuis la version 4.2.0 de fonctions SQL permettant le support de Geopackage.

En ce qui concerne l'utilisation du SQL sur des couches vecteurs, il n'y a pas de différences importantes entre Spatialite et Geopackage. C'est pourquoi dans la suite nous utilisons Spatialite, mais il serait tout à fait possible de faire les mêmes manipulation avec des fichiers geopackage.

Note : Bien que nous ne voyons pas la notion de Vue dans ce cours, il peut-être intéressant de connaître une différence notable entre Spatialite et Geopackage sous QGIS.

Pour Spatialite, avec Dbmanager, il est possible de transformer le résultat d'une requête SQL en vue avec le bouton 'creer vue', Mais, au moins jusqu'à la version 3.22 de QGIS, ce bouton n'est pas disponible pour les bases de données geopackage. En réalité la création des vues avec DBManager pour les geopackages n'est pas gérée. Il faut mettre à jour manuellement les tables internes `gpkg_contents' et 'gpkg_geometry_columns' :

A titre d'information, voici les commandes SQL nécessaires :

---- 2.1) Si vue sans géométries

--- choisir data_type=attributes dans le référencement de la table

INSERT INTO gpkg_contents(table_name, data_type, identifier, srs_id) VALUES ('test', 'attributes', 'test',0);

---- 2.2) Si vue avec géométries

---- 2.2.1) choisir data_type=features dans le référencement de la table

INSERT INTO gpkg_contents(table_name, data_type, identifier, srs_id) VALUES ('test', 'features', 'test',0);

---- 2.2.2) et définir la géométrie dans la table des géométries

INSERT INTO gpkg_geometry_columns (table_name, column_name, geometry_type_name,srs_id,z,m) VALUES ('test','geom','POLYGON',4326,0,0);

---- 2.3) Remarques : si erreur dans la définition de la table :

---- 2.3.1) Il faut supprimer l'ancienne référence :

DELETE FROM gpkg_geometry_columns WHERE table_name = 'test';

---- 2.3.2) on insert la nouvelle référence de la table :

INSERT INTO gpkg_geometry_columns (table_name, column_name, geometry_type_name,srs_id,z,m) VALUES ('test','geom','MULTIPOLYGON',2154,0,0);

Note : Le site mygeodata.cloud propose plusieurs convertisseurs de format de données dont un convertisseur de base de données Spatialite vers Geopackage.

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Licence ouverte ETALAB Réalisé avec Scenari (nouvelle fenêtre)