Ce tutoriel vous fournit les différentes étapes pour gérer des bases de données dans QGIS. Même si QGIS peut gérer plusieurs types de bases de données, nous avons utilisé ici SpatiaLite car il fournit un bon nombre de fonctionnalités sans nécessiter d’installation particulière et en demandant très peu de travail d’administration.
En utilisant le gestionnaire de base de données inclus dans QGis, vous pouvez effectuer un certain nombre d’opérations sur les bases de données.
Les principales opérations sont : créer des index, des vues spatiales et non spatiales, import et export de données, exécuter des requêtes. Après avoir vu le gestionnaire de base de données QGis et les principes d’utilisation de SpatiaLite dans ce tutoriel, vous serez bien équipé pour écrire des requêtes plus complexes et profiter pleinement des commandes SQL et SpatiaLite SQL.
Notions fondamentales de base de données
Une base de données est un ensemble structuré de données. Les Bases de données offrent plusieurs avantages sur les données stockées dans un format de fichier simple, comme les shapefile ou les KML. Les avantages incluent des requêtes complexes, des relations complexes, l’évolutivité, la sécurité, et l’intégrité des données, pour n’en nommer que quelques-uns.
Il existe plusieurs types de bases de données. Toutefois, le type le plus courant de base de données est le type de Base de données relationnelle. C’est sur ce type là qu’on travaillera dans ce tutoriel.
Tables de base de données
Une base de données relationnelle stocke les données dans des tables. Une table est composée de lignes et de colonnes, où chaque ligne est un enregistrement de données unique et chaque colonne stocke une valeur de champ associée à chaque enregistrement. Une table peut contenir n’importe quel nombre d’enregistrements. Toutefois, chaque champ est nommé de manière unique et stocke un type de données spécifique.
Un type de données restreint les informations qui peuvent être stockées dans un champ, et il est très important que le type de données approprié ainsi que ses paramètres associés, soit choisi correctement pour chaque champ dans une table. Les types de données communs sont les suivants :
• Entier
• Flottant/réel/décimal
• Texte
• Date
Chacun de ces types de données peut avoir un ensemble de contraintes supplémentaires, telles que la définition d’une valeur par défaut, une limite pour la taille du champ ou interdire les valeurs nulles.
Outre les types de données communs qui ont été mentionnés précédemment, certaines bases de données prennent en charge le type de champ « géométrie », permettant aux types suivants de géométrie d’être stckés :
• Point
• Multi-point
• Line
• Multi-ligne
• Polygone
• Multi-polygone
Les types multi-point/ligne/polygone stockent des géométries multi-parties : pour un seul enregistrement de la table, plusieurs parties de géométrie lui sont associées.
Les fichiers shapefiles stockent des données géospatiales en géométrie multi-type. Utiliser ce type de géométrie est une bonne pratique si vous prévoyez la conversion vers ou à partir de ce format
Les relations entre les tables
Une relation entre tables relie les enregistrements de ces tables. L’avantage de relationner des tables est de réduire la redondance des données et d’accroître l’intégrité des données. Afin de relier deux tables, chaque table doit contenir un champ clé indexé.
Organiser les tables afin de réduire la redondance s’appelle normalisation. En général, la normalisation implique répartir de grandes tables dans des tables plus petites et moins redondantes, suivi de la définition des relations entre les tables.
Un champ peut être défini comme un index. Un champ défini comme un index doit contenir uniquement des valeurs uniques pour chaque enregistrement, et par conséquent, il peut être utilisé pour identifier de manière unique chaque enregistrement d’une table. Un index est utile pour deux raisons. Tout d’abord, il permet aux enregistrements d’être rapidement retrouvés au cours d’une requête (si le champ indexé fait partie de la requête). Deuxièmement, un index peut être défini pour être une clé primaire pour une table, permettant de construire des relations entre les tables.
Une clé primaire consiste en un ou plusieurs champs qui identifient un enregistrement au sein d’une table.
Une clé externe consiste en un ou plusieurs champs qui identifient un enregistrement dans une autre table.
Lorsqu’une relation est créée, un enregistrement d’une table est liée à un enregistrement d’une autre table. Avec des tables connexes, des requêtes plus complexes peuvent être exécutées et la redondance dans la base de données peut être réduite.
Langage d’interrogation structuré (SQL)
Le Langage SQL (Structured Query Language) est un langage conçu pour gérer des bases de données et les données qu’elles contiennent. Aborder exhaustivement SQL est une entreprise qui déborde le cadre de ce tutoriel. Nous reprendrons ici les quelques éléments de base du langage et que nous utiliserons dans ce tutoriel.
Nota:Une liste complète des commandes SQLite SQL sont disponibles à http://www.sqlite.org/lang.html. Une liste complète des commandes SQL de l’extension SpatialLite sont disponibles à .
SQL fournit des fonctions pour sélectionner, insérer, supprimer et mettre à jour les données. Quatre fonctions fréquemment utilisées de données SQL sont les suivantes:
• SELECT : cette fonction récupère un jeu de données d’une ou plusieurs tables basées sur une expression. Une requête est à la base une structure de type
SELECT <champ(s)> FROM <table>
WHERE <opérateur> <valeur>;
où <champ(s)> est le nom du champ dont les valeurs doivent être récupérées et <table> est la table sur laquelle la requête doit être exécutée. La partie <opérateur> vérifie la condition (telles que =, > =, comme) et <valeur> est la valeur à comparer au champ.
• INSERT : cette fonction insère de nouveaux enregistrements dans une table. Par exemple
INSERT INTO <table>(<field1>, <field2>, <field3>) VALUES (<value1>, <value2>,
<value3>);
insère trois valeurs dans leurs domaines respectifs, où <value1>, <value2>, et<value3> sont stockés dans <field1>, <field2>, et<field3> de <table>.
• UPDATE : Cette fonction modifie un enregistrement existant dans une table. Par exemple
UPDATE <table>
SET <field> = <value>;
Cette instruction met à jour la valeur d’un champ, où <value> est stockée dans <field> de <table>.
• DELETE: supprime les enregistrements d’une table. Par exemple, l’instruction suivante supprime tous les enregistrements qui satisfont à la clause WHERE :
DELETE FROM <table> WHERE
<field> <operateur> <valeur>;
où <table> est la table où il faut supprimer les enregistrements , <field> est le nom du champ, <operateur> vérifie l’égalité, et <valeur> est la valeur à vérifier pour le champ.
Une autre fonction SQL d’intérêt est VIEW. Une vue est une requête stockée qui se présente comme une table mais qui est effectivement construite dynamiquement lorsque l’on appelle à la vue. Pour créer une vue, on fait simplement précéder une instruction SELECT avec CREATE VIEW AS <view_name> et ceci créera une vue nommée <view_name> . Vous pouvez ensuite traiter la nouvelle vue, comme s’il s’agissait d’une table.
Nous allons maintenant aborder concrètement les points suivants:
Chapitre 1 :La création d’une base de données spatiale Spatialite– Création d’une base de données, Import de données à partir d’un shapefile
Chapitre 2:Importer des données tabulaires (non spatiales) dans une base de données spatiale – Import d’une table Excel, création de géométries à partir des champs XY, export de données de SpatiaLite vers shapefile.
Chapitre 3: La gestion des tables avec SpatiaLite – Créer, renommer, éditer les propriétés, supprimer, vider une table SpatiaLite
Chapitre 4:Création de requêtes et de vues spatiales – Créer une requête SQL, créer une vue spatiale, supprimer une vue spatiale
Bonsoir, après deux mois de galère à essayer de faire fonctionner les requêtes utilisant les fonctions sur les géométries sous MAC OS, il convient, je crois d’AVERTIR les internautes de la quasi-impossibilité à faire fonctionner les extensions QspatiaLite et autres utilitaires…
La seule piste qui m’a permis d’avancer sont les contributions de cette page de forum déjà ancienne : http://www.forumsig.org/showthread.php/31388-Installation-de-pyspatialite-pour-Qspatialite-sur-Mac-OS-X