Qgis et les Bases de Données spatiales
Référencer les colonnes géométriques des tables et des vues dans les Bases de Données
La création des tables spatiales, des vues spatiales ou l’ajout d’un champ géométrique à une table attributaire nécessitent une implémentation spécifique et la mise à jour des tables systèmes pour que ces tables et ces vues soient interprétées comme des données spatiales dans Qgis.
Postgis
Préalable : Pour un accès plus rapide au schéma Postgis, il faut valider la case à cocher "Utiliser la table des métadonnées estimées" dans l’édition de la connexion afin d’éviter à l’extension Postgis de passer en revue toutes les tables pour les analyser.
Les tables spatiales :
La fonction AddGeometryColumn permet de créer le champ géométrique dans la table cible et de paramétrer automatiquement la table système GEOMETRY_COLUMNS
La commande AddGeometryColumn est de la forme suivante :
AddGeometryColumn(varchar catalog_name, varchar schema_name, varchar table_name, varchar column_name, integer srid, varchar type, integer dimension, boolean use_typmod=true) ;
- Le champ table_name contient le nom de la table
- Le champ column_name contient le nom du champ géométrique
- le champ srid contient l’identifiant du système de coordonnées (Code EPSG en règle générale)
- Le champ type contient le type de géométrie (POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION ou GEOMETRY pour les collections d’objets)
- Le champ dimension contient la dimension spatiale (2, 3 ou 4) du champ géométrique
- Le catalogue et le schéma ne sont pas obligatoires, la création s’effectue dans le schéma courant.
- Le champ use_typmod permet d’utiliser les contraintes sur les champs géométriques avec les anciennes versions)
Ex : select AddGeometryColumn(’demo_table’, ’Geometry’, 2154, ’POLYGON’,2) ;
La fonction DropGeometryColumn (varchar catalog_name, varchar schema_name, varchar table_name, varchar column_name) ; permet de retirer la colonne géométrique de la table cible et de mettre à jour la table système GEOMETRY_COLUMNS
Les vues spatiales
Les vues PostGIS sont interprétées automatiquement dans Qgis lorsque la vue contient le champ géométrique et au moins un champ numérique entier (integer). Dans le cas ou la vue possède plusieurs champs numériques entier, il convient de choisir la colonne de la clé primaire dans la fenêtre "Ajouter des couches PostGIS" pour rendre la couche sélectionnable. La clé primaire doit être un champ numérique entier (l’index ou l’identifiant de la table support est conseillé).
Important : il n’est pas nécessaire de déclarer les vues dans la table système GEOMETRY_COLUMNS, car les vues héritent du comportement de la table parent.
Spatialite
Les tables spatiales :
La fonction AddGeometryColumn permet de créer le champ géométrique dans la table cible et de paramétrer automatiquement la table système GEOMETRY_COLUMNS
La commande AddGeometryColumn est de la forme suivante :
AddGeometryColumn( table String , column String , srid Integer , geom_type String , dimension String [ , not_null Integer ] )
Les paramètres de la commande sont identiques à la commande PostGIS, sauf pour le champ not_null qui permet de forcer la création de l’objet géographique.
Ex : select AddGeometryColumn(’demo_table’, ’Geometry’, 2154, ’GEOMETRY’,2) ;
La fonction RecoverGeometryColumn ( table String , column String , srid Integer , geom_type String , dimension Integer ) ; permet de valider la colonne géométrique existante dans la table cible et de paramétrer automatiquement la table système GEOMETRY_COLUMNS.
La fonction DiscardGeometryColumn ( table String , column String ) ; permet de retirer la colonne géométrique de la table cible et de mettre à jour la table système GEOMETRY_COLUMNS
Les vues spatiales
Les vues Spatialite doivent être déclarées dans la table système VIEWS_GEOMETRY_COLUMNS, la commande suivante permet d’insérer manuellement une vue spatiale dans la table VIEWS_GEOMETRY_COLUMNS
INSERT INTO views_geometry_columns (view_name, view_geometry, view_rowid, f_table_name, f_geometry_column) VALUES (’demo_vue’, ’geometry’, ’ROWID’, ’table_reference’, ’geometry’) ;
- Le champ view_geometry contient le type de géométrie
- le champ view_rowid est le numéro de l’enregistrement (ROWID)
- Le champ f_table_name contient le nom de la table parent support de la vue
- Le champ f_geometry_column contient le nom du champ géométrique
Remarque : Les outils de création de requête spatialite_gui ou qspatialite permettent de créer automatiquement les tables spatiales et les vues spatiales. Les vues doivent inclure le champ géometrique et le champ ROWID de la table Parent.