La gestion des tables d’une base de données SpatiaLite avec QGis 2.8

La gestion d’une base de données SpatiaLite est très simple. Le gestionnaire de base de données de QGis fournit les fonctions pour créer, renommer, modifier, supprimer et vider les tables à l’aide des outils disponibles dans le menu Table du gestionnaire. Dans cet article nous verrons en détail chacun de ces outils.

Création d’une table SpatiaLite

Il est assez facile de créer de nouvelles tables à l’aide du gestionnaire de base de données. Lorsque vous créez une nouvelle table, vous pouvez spécifier si elle sera une table spatiale ou une table non spatiale.
Nous allons créer une nouvelle table spatiale dans SpatiaLite pour stocker des données sur des sondes bathymétriques. Pour ce faire, nous disposons de deux moyens:

  • Pour créer rapidement une nouvelle couche de SpatiaLite (et éventuellement une base de données) directement à partir de la fenêtre de QGis, cliquez sur Couche | Créer une couche | Nouvelle couche SpatiaLite… ou utilisez le raccourci clavier Ctrl + Maj + A

créer une table SpatiaLite directement à partir de QGis

  • A partir du gestionnaire de base données:

1. Ouvrez le gestionnaire de base de données en cliquant sur Gestionnaire de base de données sous Base de données. Développez SpatiaLite et sélectionnez la base de données dans laquelle vous voulez créer une nouvelle couche.
2. Cliquez sur Table | Créer une Table pour ouvrir la fenêtre Créer une Table.
3. Entrez le nom de table (ici Sondes).
4. Cliquez sur le bouton Ajouter un champ pour ajouter un nouveau champ de la table. Une nouvelle ligne apparaîtra dans la liste des champs. Définissez le champ nom et type pour chaque attribut souhaité.
5. Définissez le champ de clé primaire. Il faudra que les noms de ce champ soient uniques pour chaque enregistrement.
7. Sélectionnez Créer une colonne géométrique, puis choisissez les options suivantes :

  • Le Type de géométrie: POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTYPOLYGON, GEOMETRY COLLECTION
  • Le nom du champ géométrique
  • Le nombre de Dimensions : 2 si XY, 3 si XYZ
  • Le SCR (SRID) c’est à dire le code EPSG du système de coordonnées

8. Sélectionnez Créer un Index spatial pour créer un index pour la table.
9. votre dialogue doit ressembler à la capture d’écran suivante. Si c’est le cas, cliquez sur le bouton créer pour créer la nouvelle table.
fenêtre créer une table du gestionnaire de base de données de qgis 2.8
10. Si la table est créée avec succès, un message confirme que tout s’est bien passé. Fermez la boîte de dialogue, puis cliquez sur le bouton Fermer pour fermer la fenêtre Créer une table.
11. pour afficher la nouvelle table, vous devrez actualiser l’arborescence en sélectionnant la base de données SpatiaLite dans l’arborescence puis cliquer sur Actualiser sous Base de données ou appuyer sur la touche F5 de votre clavier. Notez que la table créée aura l’icône correspondante au type de couche (point, ligne,…) ce qui indique que c’est une table spatiale avec une géométrie.

résultat de la créatiuon d'une table avec le gestionnaire de base de données de qgis

Renommer une table

Pour renommer une table, procédez comme suit :
1. Ouvrez le gestionnaire de base de données. Dans l’arborescence, développez l’arborescence et sélectionnez la base de données contenant la table que vous souhaitez renommer.
2. Dans l’arborescence, sélectionnez la table que vous souhaitez modifier. Faites un clic droit sur la table et choisissez Renommer dans le menu contextuel pour le renommer.

Modification des propriétés d’une table

Pour modifier les propriétés d’une table, effectuez les opérations suivantes :
1. Ouvrez le gestionnaire de base de données en cliquant sur Gestionnaire de base de données  sous Base de données. Dans l’arborescence, développez l’arborescence et sélectionnez la base de données contenant la table que vous souhaitez modifier.
2. Dans l’arborescence, sélectionnez la table que vous souhaitez modifier. Cliquez sur Table | Éditer la table pour ouvrir la fenêtre de propriétés de la table.
3. la fenêtre de propriétés de la table (illustrée dans la capture d’écran suivante) comporte trois onglets, index, colonnes et contraintes — qui permettent la modification de certaines propriétés de la table

propriétés de la table spatialite

Les onglets et les boutons grisés correspondent à des opérations non supportées par SpatiaLite. Ceci ne veut pas dire que vous ne pouvez absolument pas les réaliser, mais qu’il vous faudra un autre outil. Vous pouvez télécharger et installer, par exemple, DB Browser for SQLite, un outil OpenSource qui vous permettra une gestion plus complète de votre base de données SpatiaLite.

L’onglet colonnes répertorie tous les champs, leur type, si des valeurs null sont autorisées, et leurs valeurs par défaut. Sous la liste des champs, il y a quatre boutons. Le bouton  ajouter une colonne ouvre une fenêtre et vous permet de créer un nouveau champ et spécifier ses propriétés. Le bouton  ajouter une colonne de géométrie ouvre une fenêtre et vous permet de créer un nouveau champ de la géométrie et spécifier ses propriétés. Les boutons éditer et supprimer sont désactivés.
SpatiaLite ne supporte pas les commandes de modification de table, comme éditer et supprimer des champs existants. Vous pourrez les réaliser avec DB Browser for SQLite.
L’onglet contraintes répertorie toutes les contraintes sur la table ; leur nom, leur type et les colonnes qui sont touchée par les contraintes.
SpatiaLite ne prend pas en charge les ajouts ou suppressions d’une contrainte d’une table existante : par conséquent, ces options sont désactivées.Vous pourrez les réaliser avec DB Browser for SQLite.

onglet index des proipriétés d'une table spatialite
L’onglet Index répertorie tous les index sur la table, leur nom et  les colonnes qui font partie de l’index. Le bouton ajouter un index ouvre une fenêtre qui vous permet de créer un nouvel index en sélectionnant le champ d’index et en fournissant un nom d’index. Le bouton Ajouter un index spatial ajoute un index spatial à la table. Cette option n’est disponible que si la table possède un champ de  géométrie. Le bouton Supprimer un index  supprime l’index sélectionné.

Suppression d’une table

Il existe deux façons de supprimer une table dans une base de données au sein de QGIS : en utilisant le panneau PARCOURIR dans QGIS ou en utilisant le gestionnaire de base de données.
Pour supprimer une table à l’aide du panneau Parcourir dans QGIS Desktop, développez la base de données dont vous souhaitez supprimer une table, puis faites un clic droit sur la table et choisissez Supprimer la couche.
Pour supprimer une table à l’aide de DB Manager, ouvrez le gestionnaire de base de données. Dans l’arborescence, développez la base de données contenant la table que vous souhaitez supprimer. Faites un clic droit sur la table dans l’arborescence et choisissez Effacer dans le menu contextuel.

Vider une table

Pour supprimer tous les enregistrements d’une table sans supprimer la table, ouvrez le gestionnaire de base de données. Dans l’arborescence, développez l’arborescence et sélectionnez la base de données contenant la table que vous souhaitez vider. Dans l’arborescence, sélectionnez la table que vous souhaitez vider. Cliquez ensuite sur Table -> Vider la table.

Si cet article vous a intéressé et que vous pensez qu'il pourrait bénéficier à d'autres personnes, n'hésitez pas à le partager sur vos réseaux sociaux en utilisant les boutons ci-dessous. Votre partage est apprécié !

7 thoughts on “La gestion des tables d’une base de données SpatiaLite avec QGis 2.8

  1. Bonjour et merci pour ces tutos spatialite fort instructifs!
    J’utilise ces BD sur QGIS par le biais du plugin DBmanager et j’ai découvert que QGIS offre la possibilité de stocker dans une base, une table de style. On peut enregistrer grâce au bouton en bas à gauche de l’onglet « style » des propriétés (dans l’arborescence QGIS) un style dans la BD en cliquant sur « enregistrer le style dans une base de donnée (spatialite) » lorsque la couche provient d’une BD.
    Il est possible d’enregistrer le style par défaut en cochant la case ad hoc ce qui calibre la colonne « useAsDefaut » de la table « layer_style  » sur « 1 » ce qui a pour effet de lier le style automatiquement à sa couche lors du chargement dans n’importe quel projet. Chose vraiment très pratique, seulement lorsque l’on déconnecte et reconnecte la BD dans le plugin ou lorsque l’on reconnecte la BD au plugin sur un autre poste, le lien saute. La table de style est toujours là, les colonnes et enregistrements inchangés mais le style ne s’applique plus par défaut aux couche, il faut alors le réappliquer (ce dernier est toujours enregistré en bonne et due forme dans la table heureusement) à chaque couche manuellement.
    Connaitriez-vous cette fonction et ses subtilités et pourquoi ce lien saute à chaque nouvelle connexion de la base au plugin?

    1. Quelle version de QGis utilisez vous? Je suis sur la 3.2 et le problème ne se pose pas. La symbologie est bien maintenue après déconnexion et reconnexion, ainsi qu’à partir d’un autre poste.

      1. Je suis sur la dernière version de 2.18.
        C’est noté pour la 3.2, il doit y avoir une différence de codage dans la BD si celle ci est construite à partir de version 3 et + car les symbologies sont difficilement compatibles et la table layer_style n’est pas compréhensible sur 3.x si construite sur 2.x.
        Je testerais ultérieurement donc, merci de votre réponse.

        1. Bon ça ne fonctionne pas du tout sur la 3.2 non plus de mon côté, moins bien encore que sur la 2.18… Je n’arrive même pas à allouer un style par défaut aux couches et lorsque j’enregistre certain style et que je tente de les réappliquer manuellement, la fenêtre me propose tous les styles de la BD sauf celui alloué par défaut à la couche en question; si je tente la même manip sur une autre couche, le 1er style réapparait mais celui concerné par la seconde couche disparait à son tour, c’est à n’y rien comprendre…

          1. Je vous confirme que je ne rencontre aucun problème sur mon poste avec la 3.2
            Pour définir le style par défaut j’ouvre les propriétés de la couche, dans l’onglet style je défini les style souhaité, puis je clique sur le bouton STYLE en bas à gauche et je sélectionne Enregistrer par défaut, puis Enregistrer dans la base source. Peut-être vous suivez un autre chemin?

  2. Non j’utilise la même méthode. Je vois apparaitre le style avec son code type QML et type SLD dans la table de style crée dans la BD, le auquel il est rattaché, le valeur indiquant que c’est un style par défaut donc tout ça a l’air bon. En revanche les colonne f_table_catalog et f_table_schema refusent obstinément de se remplir. Peut être la source du problème car sur la 2.18 les styles ne fonctionnant pas avaient ce défaut mais je pouvais y remédier en complétant les valeurs à la main (f_table_catalog contient le chemin d’accès de la BD). Ces colonnes sont-elles complétées chez vous? Travaillez-vous sur windows et bien avec le plugin DB manager (un autre plugin gérant spatialite étant disponible je crois « Qspatialite » de son petit nom)?

    1. Je ne comprends pas bien en quoi le plugin est concerné. Pour définir le style par défaut je ne passe pas du tout par le plugin. Dans la fenêtre « couches » j’ouvre les propriétés et je fais la définition. Si j’ouvre DB manager et je vais dans l’onglet « Aperçu » je vois la couche avec la symbologie par défaut que j’ai enregistrée.
      En outre, la table layer_styles de la base est complètement vide, mais tout marche sans problème. Mystère…

Répondre à Atilio Francois Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *