14.2. Créer des couches

Les couches peuvent être créées de plusieurs façons, notamment:

  • couches vides à partir de zéro

  • couches à partir de couches existantes

  • couches du presse-papier

  • couches à la suite d’une requête de type SQL basée sur une ou plusieurs couches (couches virtuelles)

QGIS fournit également des outils pour importer / exporter de / vers différents formats.

14.2.1. Création de nouvelles couches vecteur

QGIS vous permet de créer de nouvelles couches dans différents formats. Il fournit des outils pour créer des couches GeoPackage, Shapefile, SpatiaLite, GPX et Temporaire (également appelées couches de mémoire). La création d’une nouvelle couche GRASS est supportée dans le plugin GRASS.

14.2.1.1. Créer une nouvelle couche GeoPackage

Pour créer une nouvelle couche GeoPackage, cliquez sur le bouton newGeoPackageLayer New couche Géopackage… dans le menu Couche ► Créer couche ► ou dans la barre d’outils gestionnaire de source de données. La boîte de dialogue nouvelle couche géopackage s’affiche comme indiqué dans Fig. 14.17.

../../../_images/editNewGeoPackage.png

Fig. 14.17 Création d’une nouvelle couche depuis la boîte de dialogue GeoPackage

  1. La première étape consiste à indiquer l’emplacement du fichier de base de données. Pour ce faire, appuyez sur le bouton à droite du champ Base de données et sélectionnez un fichier GeoPackage existant ou créez-en un nouveau. QGIS ajoutera automatiquement la bonne extension au nom que vous fournissez.

  2. Donnez un nom à la nouvelle couche / table (Nom table)

  3. Définissez le type geometrie. S’il ne s’agit pas d’une couche sans géométrie, vous pouvez spécifier si elle doit Inclure la dimension Z et/ou Inclure les valeurs M.

  4. Spécifiez le système de référence de coordonnées à l’aide du bouton setProjection

Pour ajouter des champs à la couche que vous créez:

  1. Entrez le Nom du champ

  2. Sélectionnez le Type. Les types pris en charge sont Texte, Nombre entier (entier et entier64), nombre decimal, Date , Date and time, Binaire (BLOB) et Booléen.

  3. Selon le format de données sélectionné, saisissez Longueur maximale .

  4. Cliquez sur le bouton newAttribute Ajouter à la liste des champs

  5. Reproduisez les étapes ci-dessus pour chaque champ que vous devez ajouter

  6. Une fois que vous êtes satisfait des attributs, cliquez sur OK. QGIS ajoutera la nouvelle couche à la légende, et vous pouvez la modifier comme décrit dans la section Numériser une couche existante.

Par défaut, lors de la création d’une couche GeoPackage, QGIS génère une colonne d’ID d’entité appelée fid qui agit comme la clé primaire de la couche. Le nom peut être changé. Le champ de géométrie, s’il est disponible, est nommé geometry , et vous pouvez choisir de Créer un index spatial dessus. Ces options se trouvent sous Options avancées avec Identifiant de la couche (nom court et lisible) et Description de la couche.

Une gestion plus approfondie des couches GeoPackage peut être effectuée avec le Gestionnaire de bases de données.

14.2.1.2. Créer une nouvelle couche Shapefile

Pour créer une nouvelle couche au format ESRI Shapefile, cliquez sur le bouton newVectorLayer nouvelle couche Shapefile… dans le menu couche ► créer couche ► ou dans la barre d’outils gestionnaire source de données. La boîte de dialogue Nouvelle couche shape s’affiche comme indiqué dans Fig. 14.18.

  1. Fournissez un chemin et un nom de fichier à l’aide du bouton à côté de Nom de fichier. QGIS ajoutera automatiquement la bonne extension au nom que vous fournissez.

  2. Ensuite, indiquez Encodage de fichier des données

  3. Choisissez le Type de géométrie de la couche : No Geometry (résultant en un fichier au format .DBF), point, multipoint, ligne ou polygone.

  4. Indiquez si la géométrie doit avoir des dimensions supplémentaires : None, Z (+ valeur M) ou valeur M.

  5. Spécifiez le système de référence de coordonnées à l’aide du bouton setProjection

../../../_images/editNewVector.png

Fig. 14.18 Fenêtre de création d’une nouvelle couche Shapefile

Pour ajouter des champs à la couche que vous créez:

  1. Entrez le Nom du champ

  2. Sélectionnez les Type de données. Uniquement nombre décimal, nombre entier, Texte et Date sont pris en charge.

  3. Selon le format de données sélectionné, saisissez Longueur et Précision.

  4. Cliquez sur le bouton newAttribute Ajouter à la liste des champs

  5. Reproduisez les étapes ci-dessus pour chaque champ que vous devez ajouter

  6. Une fois que vous êtes satisfait des attributs, cliquez sur OK. QGIS ajoutera la nouvelle couche à la légende, et vous pouvez la modifier comme décrit dans la section Numériser une couche existante.

Par défaut, une première colonne entière id est ajoutée mais peut être supprimée.

14.2.1.3. Créer une nouvelle couche SpatiaLite

Pour créer une nouvelle couche SpatiaLite, cliquez sur le bouton newSpatiaLiteLayer Nouvelle couche SpatiaLite… dans le menu Couche ► Créer une couche ► ou dans la barre d’outils gestionnaire source données. La boîte de dialogue Nouvelle couche SpatiaLite s’affichera comme indiqué dans Fig. 14.19.

../../../_images/editNewSpatialite.png

Fig. 14.19 Fenêtre de création d’une nouvelle couche SpatiaLite

  1. La première étape consiste à indiquer l’emplacement du fichier de base de données. Pour ce faire, appuyez sur le bouton à droite du champ Base de données et sélectionnez un fichier SpatiaLite existant ou créez-en un nouveau. QGIS ajoutera automatiquement la bonne extension au nom que vous fournissez.

  2. Donnez un nom (nom de couche) à la nouvelle couche

  3. Définissez le type geometrie. S’il ne s’agit pas d’une couche sans géométrie, vous pouvez spécifier si elle doit Inclure la dimension Z et/ou Inclure les valeurs M.

  4. Spécifiez le système de référence de coordonnées à l’aide du bouton setProjection.

Pour ajouter des champs à la couche que vous créez:

  1. Entrez le Nom du champ

  2. Sélectionnez le Type. Les types pris en charge sont Texte, Nombre entier, Nombre décimal, Date , Date et temps.

  3. Cliquez sur le bouton newAttribute Ajouter à la liste des champs

  4. Reproduisez les étapes ci-dessus pour chaque champ que vous devez ajouter

  5. Une fois que vous êtes satisfait des attributs, cliquez sur OK. QGIS ajoutera la nouvelle couche à la légende, et vous pouvez la modifier comme décrit dans la section Numériser une couche existante.

Si vous le souhaitez, vous pouvez sélectionner la checkbox Créer une clé primaire auto-incrémentée sous la section Options avancées. Vous pouvez également renommer la Colonne de géométrie ( géométrie par défaut).

Une gestion plus approfondie des couches SpatiaLite peut être effectuée avec le Gestionnaire de bases de données.

14.2.1.4. Créer une nouvelle couche Maillage

Pour créer une nouvelle couche Maillage, cliquez sur le bouton newMeshLayer Nouvelle couche Maillage… dans le menu Couche ► Créer couche ► ou dans la barre d’outils Gestionnaire des sources de données. La boîte de dialogue Nouvelle couche Maillage s’affiche comme indiqué dans Fig. 14.20.

../../../_images/editNewMesh.png

Fig. 14.20 Fenêtre de création d’une nouvelle couche Maillage

  1. La première étape consiste à indiquer l’emplacement du fichier. Pour ce faire, appuyez sur le bouton à droite du champ Nom du fichier et sélectionnez un fichier de type maillage existant ou créez-en un nouveau.

  2. Indiquez un nom (Nom de la couche), c’est-à-dire le nom avec lequel la couche sera affichée dans le panneau Couches

  3. Select the File format: currently supported mesh file formats are 2DM Mesh File (*.2dm), Selafin File (*.slf) and UGRID (*.nc).

  4. Indiquez le Système de Coordonnées de Référence à appliquer au jeu de données

  5. The above steps will generate an empty layer that you can afterwards digitize vertices and add dataset groups to. It’s however also possible to initialize the layer with an existing mesh layer, i.e. populate the new layer with vertices or faces from the other. To do so:

    1. Cochez checkbox Initialiser le maillage en utilisant

    2. and select either a Mesh from the current project or Mesh from a file. Informations on the selected mesh file are displayed for checkup.

    Note that only the frame of the mesh layer is transferred to the new layer; their datasets are not copied.

14.2.1.5. Créer une nouvelle couche GPS

Pour créer un nouveau fichier GPX :

  1. Select Create Layer ► createGPX New GPX Layer… from the Layer menu.

  2. In the dialog, choose where to save the new file, name it and press Save.

  3. Trois nouvelles couches sont ajoutées au panneau Couches :

    • a point layer to digitize locations (waypoints) with fields storing the name, elevation, comment, description, source, url and url name

    • a line layer to digitize sequences of locations that make up a planned route (routes) with fields storing the name, symbol, number, comment, description, source, url, url name

    • and a line layer to track the receiver’s movement over time (tracks) with fields storing the name, symbol, number, comment, description, source, url, url name.

  4. Vous pouvez maintenant éditer n’importe laquelle de ces couches, comme décrit dans la section Numériser une couche existante.

14.2.1.6. Créer une nouvelle couche temporaire en mémoire

Les couches de travail temporaires sont des couches en mémoire, ce qui signifie qu’elles ne sont pas enregistrées sur le disque et seront supprimées à la fermeture de QGIS. Elles peuvent être utiles pour stocker les entités dont vous avez temporairement besoin ou comme couches intermédiaires pendant les opérations de géotraitement.

Pour créer un nouvelle couche temporaire, choisissez l’entrée createMemory nouvelle couche temporaire… dans le menu couche ► créer couche ► ou dans la barre d’outils gestionnaire de sources de données. La boîte de dialogue nouvelle couche temporaire s’affiche comme indiqué dans Fig. 14.21. Ensuite :

  1. Fournissez le Nom de couche

  2. Sélectionnez le Type de géométrie. Ici, vous pouvez créer une :

    • Couche de type pas de géométrie, servant de table simple,

    • Couche Point ou MultiPoint,

    • Couche LineString / CompoundCurve ou MultiLineString / MultiCurve,

    • Couche Polygone / CurvePolygon ou MultiPolygon / MultiSurface.

  3. Pour les types géométriques, spécifiez les dimensions de l’ensemble de données : vérifiez s’il doit Inclure la dimension Z et/ou Inclure les valeurs M.

  4. Spécifiez le système de référence de coordonnées à l’aide du bouton setProjection.

  5. Ajoutez des champs à la couche. Notez que contrairement à de nombreux formats, les couches temporaires peuvent être créées sans aucun champ. Cette étape est donc facultative.

    1. Entrez le Nom du champ

    2. Sélectionnez les données Type : Text, Nombre entier, Nombre décimal, Booléen, Date, Heure, Date & Heure et Binaire (BLOB) sont supportés.

    3. Selon le format de données sélectionné, entrez les valeurs longueur et précision.

    4. Cliquez sur le bouton newAttribute Ajouter à la liste des champs

    5. Répétez les étapes ci-dessus pour chaque champ que vous devez ajouter.

  6. Lorsque vous êtes satisfait des paramètres, cliquez sur OK. QGIS ajoutera la nouvelle couche au panneau couches, et vous pourrez la modifier comme décrit dans la section Numériser une couche existante.

../../../_images/editNewTemporaryLayer.png

Fig. 14.21 Création d’une nouvelle boîte de dialogue de couche memoire temporaire

Vous pouvez également créer des couches temporaires préremplies en utilisant par exemple le presse-papiers (voir Création de nouvelles couches à partir du presse-papier) ou comme résultat d’un Processing algorithm.

Astuce

Stockez en permanence une couche mémoire sur le disque

Pour éviter la perte de données lors de la fermeture d’un projet avec des couches temporaires, vous pouvez enregistrer ces couches dans n’importe quel format vecteur pris en charge par QGIS :

  • en cliquant sur l’icone indicatorMemory à côté de la couche;

  • sélectionner l’entrée Convertir permanent dans le menu contextuel de la couche;

  • en utilisant l’entrée Export ► du menu contextuel ou le menu Couche ► Sauvegarder sous….

Chacune de ces commandes ouvre la boîte de dialogue Enregistrer la couche vecteur sous décrite dans la section Création de nouvelles couches à partir d’une couche existante et le fichier enregistré remplace le fichier temporaire dans le panneau Couches.

14.2.2. Création de nouvelles couches à partir d’une couche existante

Les couches raster et vecteur peuvent être enregistrées dans un format différent et / ou reprojetées dans un système de référence de coordonnées (SCR) différent en utilisant le menu Couche -> Enregistrer sous … ou en cliquant avec le bouton droit sur la couche dans le Panneau Couches et en sélectionnant :

  • Exporter ► Enregistrer sous … pour les couches raster

  • Exporter ► Enregistrer les entités sous … ou Exporter ► Enregistrer les entités sélectionnées sous … pour les couches vecteur.

  • Faites glisser et déposez la couche de l’arborescence des couches vers l’entrée PostGIS dans le Panneau Navigateur. Notez que vous devez avoir une connexion PostGIS dans le Panneau Navigateur.

14.2.2.1. Paramètres communs

La boîte de dialogue Enregistrer la couche sous … affiche plusieurs paramètres permettant de modifier le comportement lors de l’enregistrement de la couche. Parmi les paramètres communs aux rasters et vecteurs:

  • Nom fichier: l’emplacement du fichier sur le disque. Il peut faire référence à la couche de sortie ou à un conteneur qui stocke la couche (par exemple, des formats de type base de données tels que GeoPackage, SpatiaLite ou Open Document Spreadsheets).

  • CRS: peut être modifié pour reprojeter les données

  • Extent: restricts the extent of the input that is to be exported using the extent_selector widget

  • Ajouter un fichier enregistré à la carte: pour ajouter la nouvelle couche au canevas

Certains paramètres sont toutefois spécifiques au format vecteur ou raster:

14.2.2.2. Paramètres spécifiques au raster

Selon le format d’export, certaines de ces options peuvent ne pas être disponibles :

  • Mode de sortie (il peut s’agir de données brutes ou image rendue)

  • Format: exporte vers n’importe quel format raster sur lequel GDAL peut écrire, comme GeoTiff, GeoPackage, MBTiles, PDF géospatial, SAGA GIS Binary Grid, Intergraph Raster, ESRI .hdr Labeled …

  • Résolution

  • Options création: utilisez des options avancées (compression de fichier, tailles de blocs, colorimétrie …) lors de la génération de fichiers, soit à partir de profils prédéfinis de création liés au format de sortie ou en définissant chaque paramètre.

  • création de Pyramides

  • Tuiles VRT au cas où vous auriez opté pour checkbox Créer VRT

  • valeurs No data

../../../_images/saveasraster.png

Fig. 14.22 Enregistrement en tant que nouvelle couche raster

14.2.2.3. Paramètres spécifiques au vecteur

Selon le format d’export, certaines de ces options peuvent être disponibles :

  • Format: exporte vers n’importe quel format vecteur auquel GDAL peut écrire, tel que GeoPackage, GML, ESRI Shapefile, AutoCAD DXF, ESRI FileGDB, Mapinfo TAB ou MIF, SpatiaLite, CSV, KML, ODS, …

  • Nom de la couche: disponible lorsque le Nom du fichier fait référence à un format de type conteneur, cette entrée représente la couche de sortie.

  • Codage des caracteres

  • Enregistrer uniquement les entités sélectionnées

  • Sélectionnez les champs à exporter et leurs options d’exportation. Dans le cas où vous définissez le comportement de vos champs avec certains widgets d’édition, par ex. value map, vous pouvez conserver les valeurs affichées dans la couche en cochant checkbox Remplacer toutes les valeurs des champs bruts sélectionnés par les valeurs affichées.

  • Persist layer metadata: ensures that any layer metadata present in the source layer will be copied and stored:

    • dans la couche nouvellement créée, si le format de sortie est le GeoPackage

    • as a .qmd file along with the output layer, for other formats. Note that file-based formats supporting more than one dataset (e.g. SpatiaLite, DXF,…) may have unintended behavior.

  • Exporter la symbologie : peut être utilisé principalement pour l’export en DXF et pour tous les formats de fichiers qui gèrent les styles d’entités OGR (voir la remarque ci-dessous) comme le KML, TAB…

    • Pas de symbologie : Style par défaut dans l’application qui lit les données

    • Symbologie de l’entité : Enregistre le style avec les styles d’entités OGR (voir la remarque ci-dessous)

    • Symbologie de la couche de Symboles : Enregistre avec les styles d’entités OGR (voir la remarque ci-dessous), mais exporte la même géométrie plusieurs fois si plusieurs symbologies de symboles sont utilisées

    • Une valeur d’échelle peut être appliquée aux dernières options

Note

Les styles d’entités OGR sont un moyen de stocker le style directement dans les données en tant qu’attribut caché. Seuls certains formats peuvent gérer ce type d’informations. Les formats de fichiers KML, DXF et TAB sont de tels formats. Pour plus de détails, vous pouvez lire le document OGR Feature Styles Specification.

  • Geometrie: vous pouvez configurer le type de géométrique de la couche de sortie.

    • type geometrie: conserve la géométrie d’origine des entités lorsqu’elle est définie sur Automatique, sinon la supprime ou la remplace avec n’importe quel type. Vous pouvez ajouter une colonne de géométrie vide à une table attributaire et supprimer la colonne de géométrie d’une couche spatiale.

    • Forcer type multiple: force la création d’entités multi-géométrie dans la couche.

    • Inclure la dimension z aux géométries.

Astuce

La substitution du type de géométrie de la couche permet de faire des choses comme enregistrer une table sans géométrie (par exemple: .csv) dans un fichier de formes AVEC tout type de géométrie (point, ligne, polygone), de sorte que les géométries peuvent ensuite être ajoutées manuellement aux lignes avec l’outil addPart Ajouter partie.

  • Options de source de données, Options de couche ou Options personnalisées qui vous permettent de configurer des paramètres avancés en fonction du format de sortie. Certaines sont décrites dans Découvrir les formats de données et de champs mais pour tous les détails, voir la documentation du pilote GDAL. Chaque format de fichier a ses propres paramètres personnalisés, par exemple pour le format GeoJSON, consultez la documentation GDAL GeoJSON.

../../../_images/saveasvector.png

Fig. 14.23 Enregistrement en tant que nouvelle couche vecteur

Lors de la sauvegarde d’une couche vecteur dans un fichier existant, et selon les capacités du format ciblé (ex GeoPackage, SpatiaLite, FileGDB… ), l’utilisateur peut se voir offrir différentes options telles que:

  • écraser tout le fichier

  • écraser uniquement la couche cible (le nom de la couche est configurable)

  • ajouter des entités à la couche cible existante

  • ajouter des entités, ajouter de nouveaux champs s’il y en a.

Pour les formats comme ESRI Shapefile, MapInfo .tab, l’ajout d’entité est également disponible .

14.2.3. Création de nouveaux fichiers DXF

Outre la boîte de dialogue Enregistrer sous … qui fournit des options pour exporter une seule couche vers un autre format, notamment *.DXF, QGIS fournit un autre outil pour exporter plusieurs couches en une seule couche DXF. Il est accessible dans le menu Projet ► Import / Export ► Exporter projet vers DXF ….

Dans la boîte de dialogue Export DXF:

  1. Fournissez le fichier de destination.

  2. Choisissez le mode de symbologie et l’échelle (voir la note Styles d’entités OGR), le cas échéant.

  3. Sélectionnez les données Codage des caracteres.

  4. Sélectionnez le SCR à appliquer : les couches sélectionnées seront reprojetées dans le SCR donné.

  5. Sélectionnez les couches à inclure dans les fichiers DXF en les archivant dans le widget de table ou en les sélectionnant automatiquement à partir d’un thème de carte. Les boutons Sélectionner tout et Désélectionner tout peuvent aider à définir rapidement les données à exporter.

    Pour chaque couche, vous pouvez choisir d’exporter toutes les entités dans une seule couche DXF ou de vous fier à un champ dont les valeurs sont utilisées pour diviser les entités en couches dans la sortie DXF.

En option, vous pouvez également choisir de:

  • checkbox Utiliser le titre de la couche comme nom s’il est défini au lieu du nom de la couche elle-même;

  • checkbox Exporter les entités intersectant l’étendue actuelle de la carte;

  • unchecked Forcer la sortie 2d (par exemple pour prendre en charge la largeur de la polyligne);

  • checkbox Exporter l’étiquette en tant qu’éléments MTEXT ou éléments TEXT.

../../../_images/export_dxf.png

Fig. 14.24 Exportation d’un projet à partir de la boîte de dialogue DXF

14.2.4. Création de nouvelles couches à partir du presse-papier

Les entités présentes dans le presse-papiers peuvent être collées dans une nouvelle couche. Pour ce faire, sélectionnez certaines entités, copiez-les dans le presse-papiers, puis collez-les dans une nouvelle couche en utilisant Editer -> Coller les entités sous -> et en choisissant:

Une nouvelle couche, remplie d’entités sélectionnées et de leurs attributs, est créée (et ajoutée au canevas de carte).

Note

La création de couches à partir du presse-papiers est possible avec des entités sélectionnées et copiées dans QGIS ainsi qu’avec des entités d’une autre application, tant que leurs géométries sont définies à l’aide d’un well-known text (WKT).

14.2.5. Création de couches virtuelles

Une couche virtuelle est un type spécial de couche vecteur. Il vous permet de définir une couche comme résultat d’une requête SQL impliquant un nombre quelconque d’autres couches vecteur que QGIS est capable d’ouvrir. Les couches virtuelles ne transportent pas de données par elles-mêmes et peuvent être vues comme des vues.

Pour créer une couche virtuelle, ouvrez la boîte de dialogue de création de couche virtuelle en:

  • en choisissant l’entrée addVirtualLayer Ajouter/Editer une couche virtuelle dans le menu Couche ► Ajouter une couche ► ;

  • en activant l’onglet addVirtualLayer Ajouter une couche virtuelle dans la bite de dialogue Gestionnaire de sources de données ;

  • ou en utilisant l’arborescence de dialogue DB Manager.

La boîte de dialogue vous permet de spécifier un nom de couche et une requête SQL. La requête peut utiliser le nom (ou id) des couches vecteur chargées comme des tables, ainsi que leurs noms de champ comme colonnes.

Par exemple, si vous avez une couche appelée airports, vous pouvez créer une nouvelle couche virtuelle appelée public_airports avec une requête SQL comme:

SELECT *
FROM airports
WHERE USE = "Civilian/Public"

La requête SQL sera exécutée, quel que soit le fournisseur sous-jacent de la couche airports, même si ce fournisseur ne prend pas directement en charge les requêtes SQL.

../../../_images/create_virtual_layers.png

Fig. 14.25 Boîte de dialogue Créer des couches virtuelles

Des jointures et des requêtes complexes peuvent également être créées, par exemple, pour joindre des informations sur les aéroports et les pays:

SELECT airports.*, country.population
FROM airports
JOIN country
ON airports.country = country.name

Note

Il est également possible de créer des couches virtuelles en utilisant la fenêtre SQL de Extension DB Manager.

14.2.5.1. Incorporation de couches à utiliser dans les requêtes

Outre les couches vecteur disponibles dans le canevas de carte, l’utilisateur peut ajouter des couches à la liste Couches intégrées, qui peuvent être utilisées dans les requêtes sans qu’il soit nécessaire de les afficher dans le canevas de carte ou le panneau Couches.

Pour incorporer une couche, cliquez sur Ajouter et fournissez Nom local, Fournisseur, Codage des caracteres et le chemin vers Source.

Le bouton Import permet d’ajouter des couches dans le canevas de carte dans la liste des couches intégrées. Ces couches peuvent ensuite être supprimées du panneau Couches sans interrompre les requêtes existantes.

14.2.5.2. Langage de requête pris en charge

Le moteur sous-jacent utilise SQLite et SpatiaLite pour fonctionner.

Cela signifie que vous pouvez utiliser tout le SQL que votre installation locale de SQLite comprend.

Les fonctions de SQLite et les fonctions spatiales de SpatiaLite peuvent également être utilisées dans une requête de couche virtuelle. Par exemple, la création d’une couche de points à partir d’une couche d’attribut uniquement peut être effectuée avec une requête similaire à:

SELECT id, MakePoint(x, y, 4326) as geometry
FROM coordinates

Les Fonctions des expressions QGIS peuvent également être utilisées dans une requête de couche virtuelle.

Pour référencer la colonne de géométrie d’une couche, utilisez le nom geometry.

Contrairement à une requête SQL pure, tous les champs d’une requête de couche virtuelle doivent être nommés. N’oubliez pas d’utiliser le mot-clé as pour nommer vos colonnes si elles sont le résultat d’un calcul ou d’un appel de fonction.

14.2.5.3. Les problèmes de performance

Avec les paramètres par défaut, le moteur de couche virtuel fera de son mieux pour détecter le type des différentes colonnes de la requête, y compris le type de la colonne de géométrie, le cas échéant.

Cela se fait en introspectant la requête lorsque cela est possible ou en récupérant la première ligne de la requête (LIMIT 1) en dernier recours. La récupération de la première ligne du résultat juste pour créer la couche peut être indésirable pour des raisons de performances.

Les paramètres de la boîte de dialogue de création:

  • Colonne identifiant unique: spécifie un champ de la requête qui représente des valeurs entières uniques que QGIS peut utiliser comme identificateur de ligne. Par défaut, une valeur entière à incrémentation automatique est utilisée. La définition d’une colonne d’identifiant unique accélère la sélection des lignes par id.

  • pas de geometrie: force la couche virtuelle à ignorer tout champ de géométrie. La couche résultante est une couche uniquement attributaire.

  • Colonne de géometrie : spécifie le nom de la colonne de géométrie.

  • Type de géométrie : spécifie le type de la géométrie.

  • CRS Géométrie : spécifie le système de référence de coordonnées de la couche virtuelle.

14.2.5.4. Commentaires spéciaux

Le moteur de couche virtuelle tente de déterminer le type de chaque colonne de la requête. S’il échoue, la première ligne de la requête est extraite pour déterminer les types de colonne.

Le type d’une colonne particulière peut être spécifié directement dans la requête en utilisant des commentaires spéciaux.

La syntaxe est la suivante: /*:type*/. Il doit être placé juste après le nom d’une colonne. type peut être soit int pour les entiers, real pour les nombres à virgule flottante ou text.

Par exemple:

SELECT id+1 as nid /*:int*/
FROM table

Le type et le système de référence de coordonnées de la colonne de géométrie peuvent également être définis grâce à des commentaires spéciaux avec la syntaxe suivante /*:gtype:srid*/gtype est le type de géométrie (point , linestring, polygon, multipoint, multilinestring ou multipolygon) et srid un entier représentant le code EPSG d’un système de référence de coordonnées.

14.2.5.5. Utilisation d’index

Lorsque vous demandez une couche via une couche virtuelle, les indexs de couche source seront utilisés de la manière suivante:

  • si un prédicat = est utilisé sur la colonne de clé primaire de la couche, le fournisseur de données sous-jacent sera invité à fournir un identifiant particulier (FilterFid)

  • pour tout autre prédicat (>, <=, ! =, etc.) ou sur une colonne sans clé primaire, une requête construite à partir d’une expression sera utilisée pour demander le fournisseur sous-jacent de données vecteur. Cela signifie que les index peuvent être utilisés sur les fournisseurs de bases de données s’ils existent.

Une syntaxe spécifique existe pour gérer les prédicats spatiaux dans les requêtes et déclenche l’utilisation d’un index spatial: une colonne cachée nommée _search_frame_ existe pour chaque couche virtuelle. Cette colonne peut être comparée pour l’égalité à une boîte englobante. Exemple:

SELECT *
FROM vtab
WHERE _search_frame_=BuildMbr(-2.10,49.38,-1.3,49.99,4326)

Les prédicats binaires spatiaux comme ST_Intersects sont accélérés de manière significative lorsqu’ils sont utilisés en conjonction avec cette syntaxe d’index spatial.