15.2. Travailler avec la table d’attributs

La table d’attributs affiche des informations sur les entités d’une couche sélectionnée. Chaque ligne de la table représente une entité (avec ou sans géométrie) et chaque colonne contient une information particulière sur cette entité. Les entités de la table peuvent être recherchées, sélectionnées, déplacées ou même modifiées.

15.2.1. Avant-propos : Tables spatiales et non spatiales

QGIS vous permet de charger des couches spatiales et non-spatiales. Cela inclut actuellement les formats de tables supportés par OGR et le texte délimité, en plus des fournisseurs PostgreSQL, MSSQL, SpatiaLite et Oracle. Toutes les couches chargées sont listées dans le panneau Layers. Qu’une couche soit spatiale ou pas détermine si vous pouvez interagir avec sur la carte.

Les tables non spatiales peuvent être parcourues et modifiées à l’aide de la vue de la table d’attributs. De plus, elles peuvent être utilisées pour des requêtes sur les champs. Par exemple, vous pouvez utiliser les colonnes d’une table non spatiale pour définir des valeurs d’attributs, ou une plage de valeurs qui peut être ajoutée à une couche vecteur spécifique pendant la numérisation. Regardez le widget d’édition dans la section Onglet Formulaire d’attributs pour en savoir plus.

15.2.2. Présentation de l’interface de la table d’attributs

Pour ouvrir la table attributaire d’une couche vecteur, activez la couche en cliquant dessus depuis le Panneau Couches. Puis dans le menu Couche, cliquez sur openTable Ouvrir la table d’attributs. Vous pouvez aussi y accéder avec un clic droit sur la couche puis en sélectionnant openTable Ouvrir la table d’attributs ou en cliquant sur le bouton openTable Ouvrir la table d’attributs dans la barre d’outils des Attributs. Si vous préférez les raccourcis, F6 ouvrira la table d’attributs. Shift+F6 ouvrira la table d’attributs filtrée vers les entités sélectionnées et Ctrl+F6 ouvrira la table d’attributs filtrée vers les entités visibles.

Cela ouvrira une nouvelle fenêtre qui affiche les attributs de toutes les entités de la couche (voir figure_attributes_table). Selon le paramétrage effectué dans le menu Préférences ► Options ► Sources de données , la fenêtre s’ouvrira en mode ancré ou pas. Le nombre total des entités et le nombre d’entités sélectionnées ou filtrées sont affichées dans la barre de titre de la table d’attributs. De même, si un filtrage spatial est appliqué à la table, cette information y figure.

../../../_images/vectorAttributeTable.png

Fig. 15.66 Table d’attributs de la couche “regions”

Les boutons situés au-dessus de la table d’attributs apportent les fonctionnalités suivantes :

Tableau 15.1 Outils disponibles

Icône

Étiquette

Fonction

Raccourci par Défaut

toggleEditing

Basculer en mode édition

Activer les fonctions d’édition

Ctrl+E

multiEdit

Basculer en mode édition multiple

Mettre à jour plusieurs champs de plusieurs entités

saveEdits

Enregistrer les modifications

Enregistrer les modifications en cours

refresh

Recharger la table

newTableRow

Ajouter une entité

Ajouter une entité non géométrique

deleteSelectedFeatures

Supprimer les entités sélectionnées

Supprimer les entités sélectionnées de la couche

editCut

Couper les entités sélectionnées dans le presse-papiers

Ctrl+X

copySelected

Copier les entités sélectionnées dans le presse-papiers

Ctrl+C

editPaste

Coller les entités à partir du presse-papier

Insérer de nouvelles entités à partir de celles qui ont été copiées

Ctrl+V

expressionSelect

Sélectionner les entités en utilisant une expression

selectAll

Tout sélectionner

Sélectionner toutes les entités de la couche

Ctrl+A

invertSelection

Inverser la sélection

Inverser la sélection en cours dans la couche

Ctrl+R

deselectActiveLayer

Tout désélectionner

Désélectionner toutes les entités de la couche courante

Ctrl+Shift+A

filterMap

Filtrer/Sélectionner les entités en utilisant le formulaire

Ctrl+F

selectedToTop

Déplacer la sélection au sommet

Regrouper les objets sélectionnés au début de la table

panToSelected

Centrer la carte sur les lignes sélectionnées

Ctrl+P

zoomToSelected

Zoomer la carte sur les lignes sélectionnées

Ctrl+J

newAttribute

Nouveau champ

Ajouter un nouveau champ à la source de données

Ctrl+W

deleteAttribute

Supprimer le champ

Supprimer un champ de la source de données

editTable

Organize columns

Show/hide fields from the attribute table

calculateField

Ouvrir la calculatrice de champs

Mise à jour de champs pour de nombreuses entités.

Ctrl+I

conditionalFormatting

Mise en forme conditionnelle

Active la mise en forme de la table

dock

Intégrer la table attributaire

Permet d’intégrer ou de décrocher la table attributaire

actionRun

Actions

Lister les actions liées à la couche

Note

Selon le format des données et la version de la bibliothèque OGR compilée avec votre version de QGIS, certains outils pourraient manquer.

Sous ces boutons se trouve la barre de Calcul rapide (activée seulement en mode d’édition), qui permet d’appliquer rapidement des calculs à tout ou partie des entités de la couche. Cette barre utilise les mêmes expressions que dans la calculateField Calculatrice de champs (voir Editer les valeurs d’attributs).

15.2.2.1. Vue en table vs vue formulaire

QGIS propose deux modes pour manipuler facilement les données dans la table attributaire :

  • The openTable Table view, displays values of multiple features in a tabular mode, each row representing a feature and each column a field. A right-click on the column header allows you to configure the table display while a right-click on a cell provides interaction with the feature.

  • The formView Form view shows feature identifiers in a first panel and displays only the attributes of the clicked identifier in the second one. There is a pull-down menu at the top of the first panel where the « identifier » can be specified using an attribute (Column preview) or an Expression. The pull-down also includes the last 10 expressions for re-use. Form view uses the layer fields configuration (see Onglet Formulaire d’attributs).

    You can browse through the feature identifiers with the arrows on the bottom of the first panel. The features attributes update in the second panel as you go. It’s also possible to identify or move to the active feature in the map canvas with pushing down any of the button at the bottom:

    • highlightFeature Highlight current feature if visible in the map canvas

    • panTo Automatically pan to current feature

    • zoomTo Zoom to current feature

Vous pouvez basculer d’un mode à l’autre en cliquant sur l’icône correspondante en bas à droite de la boîte de dialogue.

Vous pouvez aussi préciser le mode de vue par défaut à l’ouverture de la table attributaire dans le menu Préférences► Options ► Sources de Données. Cela peut être “Se souvenir de la dernière vue”, “Voir la table” or “Voir le formulaire”.

../../../_images/attribute_table_views.png

Fig. 15.67 Table d’attributs en vue tableau (en haut) vs vue formulaire (en bas)

15.2.2.2. Configurer les colonnes

Right-click in a column header when in table view to have access to tools that help you control:

Paramétrer la largeur des colonnes

La largeur des colonnes peut être réglée par un clic droit sur l’en-tête de la colonne, puis en sélectionnant soit :

  • largeur… pour saisir la valeur souhaitée. Par défaut, c’est la valeur actuelle qui est présentée dans l’outil

  • Set all column widths… to the same value

  • Taille automatique pour redimensionner la taille à la meilleure largeur.

  • Autosize all columns

A column size can also be changed by dragging the boundary on the right of its heading. The new size of the column is maintained for the layer, and restored at the next opening of the attribute table.

Cacher et organiser des colonnes et activer des actions

By right-clicking in a column header, you can choose to Hide column from the attribute table (in « table view » mode). For more advanced controls, press the editTable Organize columns… button from the dialog toolbar or choose Organize columns… in a column header contextual menu. In the new dialog, you can:

  • check/uncheck columns you want to show or hide: a hidden column will disappear from every instances of the attribute table dialog until it is actively restored.

  • glisser-et-déposer des éléments pour réorganiser les colonnes dans la table attributaire. Notez que ce changement n’affecte que le rendu de la table et ne modifie pas l’ordre des champs dans la source de données de la couche

  • add a new virtual Actions column that displays in each row a drop-down box or a button list of enabled actions. See Onglet Actions for more information about actions.

Trier les colonnes

The table can be sorted by any column, by clicking on the column header. A small arrow indicates the sort order (downward pointing means descending values from the top row down, upward pointing means ascending values from the top row down). You can also choose to sort the rows with the Sort… option of the column header context menu and write an expression. E.g. to sort the rows using multiple columns you can write concat(col0, col1).

En mode formulaire, les identifiants d’entités peuvent être triés grâce à l’option sort Définir l’ordre.

Astuce

Trier des colonnes de types différents

Trier une table attributaire en fonction de colonnes de type numérique et texte risque de causer des résultats inattendus à cause de l’expression  concat("USE", "ID") qui renvoie des valeurs en chaînes de caractères (par ex., 'Borough105' < 'Borough6'). Vous pouvez contourner le problème en utilisant par exemple  concat("USE", lpad("ID", 3, 0)) qui renvoie 'Borough105' > 'Borough006'.

15.2.2.3. Mise en forme conditionnelle de la table

Les paramètres de mise en forme conditionnelle peuvent être utilisés pour mettre en surbrillance des entités de la table attributaire que vous souhaitez montrer, en utilisant des conditions sur les éléments des entités :

  • les géométries (par exemple en identifiant les entités multi-parties, celles de petites dimensions ou dans une étendue définie de la carte…) ;

  • la valeur du champ (par exemple en comparant les valeurs à un seuil, en identifiant les cellules vides…).

Vous pouvez activer le panneau de mise en forme conditionnelle en cliquant sur conditionalFormatting en haut à droite de la fenêtre de la table des attributs en mode Table (n’est pas accessible en mode formulaire).

Le nouveau panneau permet à l’utilisateur d’ajouter de nouvelles règles pour le rendu de format d’un radioButtonOnChamp ou d’une radioButtonOffLigne complète. L’ajout d’une nouvelle règle ouvre un formulaire pour définir :

  • le nom de la règle ;

  • une condition utilisant n’importe laquelle des fonctions du constructeur d’expressions;

  • la mise en forme : elle peut être choisie dans une liste de formats prédéfinis ou créée selon des propriétés comme :

    • couleurs d’arrière-plan et du texte;

    • utilisation d’une Icône;

    • texte en gras, italique, souligné ou barré;

    • police.

../../../_images/attribute_table_conditional_formating.png

Fig. 15.68 Mise en forme conditionnelle des cellules de la table d’attributs

15.2.3. Interagir avec les entités dans une table attributaire

15.2.3.1. Sélectionner des entités

En mode table, chaque ligne de la table attributaire présente les attributs d’une seule entité de la couche. En sélectionnant une ligne, vous sélectionnez une entité et, de la même manière, en sélectionnant une entité dans le canevas de la carte (dans le cas d’une couche à géométries activées), vous sélectionnez la ligne dans la table attributaire. Si le jeu d’entités sélectionné dans le canevas de la carte (ou dans la table attributaire) est modifié, alors la sélection est aussi mise à jour dans la table attributaire (ou le canevas de la carte).

Les lignes peuvent être sélectionnées en cliquant sur le numéro de ligne placé tout à gauche. Plusieurs lignes peuvent être sélectionnées en maintenant la touche Ctrl. Une sélection continue s’effectue en gardant appuyée la touche Shift et en cliquant sur une nouvelle ligne, toutes les lignes entre la première sélection et la dernière seront sélectionnées. Déplacer la position du curseur dans la table d’attributs en cliquant sur une cellule ne modifie pas la sélection des lignes. Modifier les entités sélectionnées depuis la carte ne modifie pas la position du curseur dans la table.

En mode formulaire de la table attributaire, les entités sont identifiées par défaut dans le panneau de gauche par la valeur du champ affiché (voir Onglet Infobulles). Cet identifiant peut être remplacé en utilisant le menu déroulant en haut du panneau, soit en sélectionnant un champ existant soit en utilisant une expression personnalisée. Vous pouvez aussi choisir de trier la liste des entités depuis le menu déroulant.

Cliquer sur une valeur du panneau de gauche pour afficher les attributs de l’entité dans celui de droite. Pour sélectionner une entité, vous devez cliquer dans le symbole carré situé à gauche de l’identifiant. Par défaut, le symbole prend une couleur jaune. Comme dans la vue en mode table, vous pouvez sélectionner plusieurs entités en utilisant les raccourcis clavier présentés ci-dessus.

En plus de sélectionner les entités avec la souris, vous pouvez créer des sélections automatiques à partir des attributs des entités en vous servant des outils disponibles dans la table attributaire, comme (voir la section Sélection automatique et la suivante pour plus d’information et l’utilisation) :

  • expressionSelect Sélectionner à l’aide d’une expression…

  • formSelect Sélectionner des entités par valeur…

  • deselectActiveLayer Désélectionner l’ensemble des entités de la couche

  • selectAll Sélectionner toutes les entités

  • invertSelection Inverser la sélection des entités.

Il est aussi possible de sélectionner les entités à partir des formulaires de sélection Filtrer et sélectionner des entités à partir des formulaires.

15.2.3.2. Filtrer les entités

Une fois vos entités sélectionnées dans la table attributaire, vous pouvez choisir de n’afficher que celles-ci dans la table. Ceci peut être fait aisément grâce à l’élément Ne montrer que les entités sélectionnées dans le menu déroulant en bas à gauche de la boîte de dialogue. Cette liste offre les filtres suivants :

  • openTable Show All Features

  • openTableSelected Show Selected Features - same as using Open Attribute Table (Selected Features) from the Layer menu or the Attributes Toolbar or pressing Shift+F6

  • openTableVisible Show Features visible on map - same as using Open Attribute Table (Visible Features) from the Layer menu or the Attributes Toolbar or pressing Ctrl+F6

  • openTableEdited Show Edited and New Features - same as using Open Attribute Table (Edited and New Features) from the Layer menu or the Attributes Toolbar

  • Field Filter - allows the user to filter based on value of a field: choose a column from a list, type or select a value and press Enter to filter. Then, only the features matching num_field = value or string_field ilike '%value%' expression are shown in the attribute table. You can check checkbox Case sensitive to be less permissive with strings.

  • Filtre avancé (Expression) - Ouvre la boîte de dialogue du calculateur d’expression. Dans celle-ci, vous pouvez créer des expressions complexes pour correspondre aux lignes de la table. Par exemple, vous pouvez filtrer en utilisant plus d’un champ. Lorsqu’elle est appliquée, l’expression de filtre est affichée en bas de la boîte de dialogue.

  • Stored filter expressions ►: a shortcut to saved expressions frequently used for filtering your attribute table.

Il est aussi possible de filtrer les entités à partir de formulaires.

Note

Le fait de filtrer des enregistrements à partir de la table d’attributs ne filtre pas les entités sur la couche ; elles sont simplement momentanément cachées de la table et on peut y accéder via le canevas de la carte ou en retirant le filtre. Pour des filtres qui cachent bien les entités de la couche, utiliser le Constructeur de requête.

Astuce

Mise à jour des filtres de la source de données avec Ne montrer que les entités visibles sur la carte

Lorsque pour des raisons de performance, les entités montrées dans la table attributaire sont limitées spatialement à l’étendue du canevas de la carte à l’ouverture (voir les Options de sources de données pour la marche à suivre), choisir Ne montrer que les entités visibles sur la carte sur une nouvelle étendue du canevas de la carte met à jour la restriction spatiale.

15.2.3.3. Storing filter expressions

Expressions you use for attribute table filtering can be saved for further calls. When using Field Filter or Advanced Filter (expression) entries, the expression used is displayed in a text widget in the bottom of the attribute table dialog. Press the handleStoreFilterExpressionUnchecked Save expression with text as name next to the box to save the expression in the project. Pressing the drop-down menu next to the button allows to save the expression with a custom name (Save expression as…). Once a saved expression is displayed, the handleStoreFilterExpressionChecked button is triggered and its drop-down menu allows you to Edit the expression and name if any, or Delete stored expression.

Saved filter expressions are saved in the project and available through the Stored filter expressions menu of the attribute table. They are different from the user expressions, shared by all projects of the active user profile.

15.2.3.4. Filtrer et sélectionner des entités à partir des formulaires

En cliquant sur filterMap Sélectionner/Filtrer les entités en utilisant le formulaire ou en tapant Ctrl+F vous faites passer la boite de dialogue de la table attribuaire du mode table au mode formulaire et remplacez chaque widget avec sa variante de recherche.

A partir de ce point, les fonctionnalités de cet outil sont similaires à celles décrites dans Sélectionner des Entités par Valeur, où vous trouverez la description de tous les opérateurs et modes de sélection.

../../../_images/tableFilteredForm.png

Fig. 15.69 Table attributaire filtrée par le formulaire

Lorsque vous filtrez/sélectionnez des entités de la table attributaire, il y a un bouton Filtrer les entités qui permet de définir et d’affiner les entités. Son utilisation active l’option Filtre avancé (Expression) et affiche l’expression du filtre correspondant dans un menu de texte éditable en bas du formulaire.

S’il y a déjà des entités filtrées, vous pouvez affiner le filtre avec le menu déroulant situé à côté du bouton Filtrer les entités . Les options sont :

  • Filtre incluant (« AND »)

  • Filtre exclusif (« OR »)

Pour effacer le filtre, vous pouvez soit sélectionner l’option Montrer toutes les entités du menu déroulant en bas à gauche, soit effacer l’expression et cliquer sur Appliquer ou appuyer sur Entrée.

15.2.4. Actions applicables aux entités

Les utilisateurs ont plusieurs choix pour manipuler les entités dans le menu contextuel comme par exemple :

  • Sélectionner tout (Ctrl+A) : sélectionne toute les entités

  • Copier le contenu d’une cellule dans le presse-papier avec Copier le contenu de la cellule;

  • Zoomer sur l’entité sans avoir à la sélectionner au préalable ;

  • Se déplacer sur l’entité sans avoir à la sélectionner au préalable ;

  • Faire clignoter l’entité, pour la mettre en surbrillance dans le canevas de carte ;

  • Ouvrir le formulaire : cela transforme la table attributaire en mode formulaire avec un focus sur l’entité sélectionnée.

../../../_images/copyCellContent.png

Fig. 15.70 Bouton Copier le contenu de la cellule

Si vous souhaitez utiliser des données attributaires de programmes externes (comme Excel, LibreOffice, QGIS ou une application web), sélectionnez une ou plusieurs ligne(s) et utilisez le bouton copySelected Copiez les lignes sélectionnées dans le presse-papier ou appuyez sur Ctrl+C.

Dans le menu Paramètres ► Options ► Sources de données vous pouvez définir le format pour coller avec la liste déroulante Copier les entités comme :

  • Texte simple, pas de géométrie,

  • Texte simple, géométrie WKT,

  • GeoJSON

Vous pouvez aussi afficher une liste d’actions dans le menu contextuel. Ceci est activé dans l’onglet Propriétés de la couche ► Actions . Voir Onglet Actions pour plus d’informations sur les actions.

15.2.4.1. Enregistrer les entités sélectionnées en tant que nouvelle couche

Les entités sélectionnées peuvent être enregistrées comme n’importe quel format vecteur supporté par OGR et aussi transformées dans un autre système de coordonnées de référence (SCR). Dans les propriétés de la couche, depuis le panneau Couches, cliquez sur Exporter ► Sauvegarder les entités sous pour définir le nom du jeu de données en sortie, son format et son SCR (voir la section Création de nouvelles couches à partir d’une couche existante). Vous noterez que la boîte checkbox Ne sauvegarder que les entités séléectionnées est cochée.

15.2.5. Editer les valeurs d’attributs

L’édition des valeurs attributaires peut être faite en :

  • saisissant directement la nouvelle valeur dans la cellule, que la table attributaire soit en mode table ou en mode formulaire. Les modifications sont ainsi appliquées cellule par cellule, entité par entité ;

  • utilisant la calculatrice de champs : pour mettre à jour dans une ligne un champ déjà existant ou un champ à créer mais pour plusieurs entités. Cela peut être utilisé pour créer des champs virtuels ;

  • utilisant barre de calcul rapide de champ : comme ci-dessus mais uniquement pour un champ existant ;

  • ou en utilisant le mode édition multiple : pour mettre à jour dans une ligne plusieurs champs pour plusieurs entités.

15.2.5.1. Utiliser la Calculatrice de Champs

Le bouton calculateField Calculatrice de champs de la table attributaire vous permet de réaliser des calculs à partir de valeurs attributaires existantes ou de fonctions définies, comme par exemple pour calculer la longueur ou la surface d’entités géométriques. Les résultats peuvent être utilisés pour mettre à jour un champ existant ou écrites dans un nouveau champ (qui peut être un champ virtuel ).

La calculatrice de champ est disponible sur toute couche qui supporte l’édition. Lorsque vous cliquez sur l’icône de la calculatrice de champs, la boîte de dialogue s’ouvre (voir Fig. 15.71). Si la couche n’est pas en mode édition, un avertissement est affiché et l’utilisation de la calculatrice de champs fera en sorte que la couche soit mise en mode édition avant que le calcul ne soit effectué.

Basée sur la boîte de dialogue Constructeur de requêtes , la boîte de dialogue de la calculatrice de champs offre une interface complète pour définir une expression et l’appliquer à un champ existant ou à un champ nouvellement créé. Pour utiliser la boîte de dialogue de la calculatrice de champs, vous devez choisir si vous voulez :

  1. appliquer le calcul à la totalité de la couche ou seulement à des entités sélectionnées

  2. créer un nouveau champ pour le calcul ou mettre à jour un champ existant.

../../../_images/fieldcalculator.png

Fig. 15.71 Calculatrice de champs

Si vous choisissez d’ajouter un nouveau champ, vous devez saisir un nom de champ, un type de champ (entier, réel, date ou texte) et si nécessaire, la longueur totale du champ et la précision du champ. Par exemple, si vous choisissez une longueur de champ de 10 et une précision de champ de 3, cela veut dire que vous avez 7 chiffres avant la virgule et 3 chiffres pour la partie décimale.

L’exemple suivant montre comment la calculatrice de champs fonctionne. Il s’agit de calculer la longueur en km de la couche railroads issue de l’échantillon de données QGIS.

  1. Chargez le fichier shapefile railroads.shp dans QGIS et ouvrez sa openTable Table d’Attributs.

  2. Cliquez sur toggleEditing Basculer en mode édition et ouvrez la calculateField Calculatrice de champs.

  3. Cochez la case checkbox Créer un nouveau champ pour enregistrer le résultat des calculs dans un nouveau champ.

  4. Saisir length_km comme Nom

  5. Sélectionner Nombre décimal (réel) pour le Type

  6. Choisir la Longueur du champ à 10 et la Précision à 3

  7. Double cliquer sur $length dans le groupe Géométrie pour ajouter la longueur de la géométrie dans la boîte d’expression de la Calculatrice de champs.

  8. Compléter l’expression en saisissant / 1000 dans la boîte d’expression de la Calculatrice de champs et cliquer sur OK.

  9. Vous avez maintenant un nouveau champ length_km dans la table attributaire.

15.2.5.2. Créer un Champ virtuel

Un champ virtuel est un champ basé sur une expression calculée à la volée, ce qui signifie que sa valeur est mise à jour automatiquement dès que les paramètres sous-jacents sont modifiés. Cette expression est mise en place une seule fois ; vous n’avez pas besoin de recalculer le champ à chaque fois que les valeurs nécessaires au calcul changent. Vous pouvez par exemple utiliser un champ virtuel si vous souhaitez connaître la surface lorsque vous numérisez des entités ou si vous souhaitez calculer automatiquement une durée entre des dates qui peuvent changer (avec la fonction now()).

Note

Utilisation des Champs Virtuels

  • Les champs virtuels ne sont pas des attributs permanents, ils ne sont sauvegardés et disponibles que dans le projet dans lequel ils ont été créés.

  • Un champ ne peut être rendu virtuel qu’à sa création. Les champs virtuels sont marqués d’un fond violet dans l’onglet champs de la boîte de dialogue des propriétés de la couche pour les distinguer des champs physiques ou joints réguliers. Leur expression peut être modifiée ultérieurement en appuyant sur le bouton d’expression dans la colonne Commentaire. Une fenêtre d’édition d’expression s’ouvrira pour ajuster l’expression du champ virtuel.

15.2.5.3. Utiliser la Barre de Calcul de champ rapide

Alors que la Calculatrice de champs est toujours disponible, la barre de calcul rapide de champ en haut de la table attributaire n’est visible que lorsque la couche est en mode édition. Grâce au moteur d’expression, elle permet d’éditer plus rapidement un champ existant :

  1. Sélectionner le champ à mettre à jour dans le menu déroulant.

  2. Remplir la fenêtre de texte avec une valeur, que ce soit une expression saisie à la main ou en la construisant grâce au bouton expression expression.

  3. Cliquer sur le bouton Tout mettre à jour, Mettre à jour la sélection ou Mise à jour filtrée selon vos besoins.

../../../_images/fieldcalculatorbar.png

Fig. 15.72 Barre de Calcul rapide de champ

15.2.5.4. Éditer plusieurs champs

Contrairement aux outils précédents, le mode d’édition multiple permet d’éditer simultanément plusieurs champs de plusieurs entités. Une fois la couche basculée en mode édition, les options d’édition multiple sont accessibles:

  • avec le bouton multiEdit Basculer en mode d’édition multiple de la barre d’outils dans la boîte de dialogue de la table d’attributs ;

  • soit en sélectionnant depuis le menu Edition ► multiEdit Modifier les attributs des entités sélectionnées.

Note

Contrairement à l’outil de la table d’attributs, choisir l’option :Éditer –> Modifier les attributs des entités sélectionnées vous fournit un dialogue pour remplir les changements d’attributs. Cela nécessite que les entités soient sélectionnées avant de l’activer.

Afin de modifier d’une traite plusieurs champs:

  1. Sélectionnez les entités que vous souhaitez éditer.

  2. Dans la barre d’outils de la table d’attributs, cliquer sur le bouton multiEdit. Ceci basculera la boîte en forme formulaire. La sélection des entités peut aussi être réalisée à cette étape.

  3. Les champs (et valeurs) des entités sélectionnées sont montrées à droite de la table attributaire. De nouveaux outils sont apparus à côté de chaque champ pour afficher l’état en cours de l’édition multiple :

    • multiEditMixedValues Le champ contient des valeurs différentes pour les entités sélectionnées. Il est montré vide et chaque entité va conserver sa valeur d’origine. Vous pouvez modifier la valeur du champ à partir du menu déroulant de l’outil.

    • multiEditSameValues Toutes les entités sélectionnées ont la même valeur pour ce champ et la valeur montrée dans le formulaire sera conservée.

    • multiEditChangedValues Le champ a été modifié et la valeur saisie sera appliquée à toutes les entités sélectionnées. Un message apparaîtra en haut de la boîte de dialogue pour vous inviter à appliquer ou alors à annuler la modification.

    En cliquant sur n’importe lequel de ces outils, vous pouvez soit régler la valeur courante pour le champ, soit revenir à sa valeur originelle, ce qui veut dire que vous pouvez revenir en arrière champ par champ.

    ../../../_images/attribute_multiedit.png

    Fig. 15.73 Mettre à jour des champs de plusieurs entités

  4. Faites les changements aux champs que vous souhaitez modifier.

  5. Cliquer sur Appliquer les modifications dans le message en haut ou sur n’importe quelle entité du panneau de gauche.

Les modifications seront appliquées à toutes les entités sélectionnées. Si aucune entité n’est sélectionnée, c’est toute la table qui est mise à jour. Les modifications sont réalisées en une seule fois. Ainsi en cliquant sur undo Annuler, vous pouvez revenir aux modifications d’attributs pour toutes les entités sélectionnées en une seule fois.

Note

Le mode d’édition multiple n’est disponible que pour les formulaires auto-générés ou en conception par glisser/déposer (voir Personnaliser un formulaire pour vos données); il n’est pas disponible pour les formulaires par fichiers ui personnalisés.

15.2.6. Créer des relations un à plusieurs ou plusieurs à plusieurs

Utiliser des relations est plutôt courant dans les bases de données. L’idée est que des entités (lignes) de différentes couches (tables) peuvent être liées les unes aux autres.

15.2.6.1. Introduction sur les relations de 1 à n

Comme exemple, nous prendrons une couche contenant toutes les régions de l’Alaska (des polygones) qui fournit quelques attributs sur le nom, le type de région et un identifiant unique (qui jouera le rôle de clé primaire).

Nous prenons ensuite une autre couche de point ou une table contenant des informations sur les aéroports localisés dans les régions. Si vous souhaitez y accéder, depuis la couche des régions, vous devez créer une relation “un à plusieurs”, en utilisant des clés étrangères, car il y a plusieurs aéroports dans la plupart des régions.

../../../_images/relations1.png

Fig. 15.74 Les régions d’Alaska contenant des aéroports

Couches dans les relations de 1 à n

QGIS ne fait pas la distinction entre une table et une couche vecteur. Très simplement, une couche vecteur est une table associée à une géométrie. Ce qui signifie que vous pouvez ajouter votre table comme une couche vecteur. Pour démontrer la relation de 1 à n, vous pouvez ajouter le shapefile regions et le shapefile airports qui a un champ de clé étrangère (fk_region) vers la couche « régions ». Cela signifie que chaque aéroport appartient à une seule région alors que chaque région peut avoir un nombre variable d’aéroports (une relation 1 à plusieurs).

Clés étrangères dans les relations de 1 à n

En plus des attributs existants dans la table des aéroports, un autre champ, fk_region, va jouer le rôle de clé étrangère (si la table est stockée dans une base de données, vous allez sans doute définir une contrainte sur ce champ).

Ce champ fk_region contiendra toujours un identifiant de région. Il peut être vu comme un pointeur vers la région à laquelle l’aéroport appartient. Et vous pouvez créer un formulaire personnalisé d’édition pour la saisie. Cela fonctionne avec différents fournisseurs (vous pouvez vous en servir également avec des shapefiles ou des fichiers csv) et la seule chose que vous avez à faire est de dire à QGIS qu’il y a une relation entre les tables.

Définir les relations 1-N

La première chose que nous allons faire est de faire connaître au logiciel QGIS les relations entre les couches. Cela se fait dans Projet ► Propriétés…. Ouvrez l’onglet Relations et cliquez sur symbologyAdd Ajout relation .

  • Nom sera utilisé comme titre. Il s’agit d’un texte lisible décrivant la relation. Ici, nous allons simplement mettre airport_relation.

  • Couche référencée (Parent) également considérée comme couche parent, est celle dont la clé primaire est pointée, donc ici c’est la couche regions. Vous devez définir la clé primaire de la couche référencée, c’est donc ID.

  • Référencement de la couche (enfant) également considérée comme la couche enfant, est celle sur laquelle se trouve le champ clé étrangère. Dans notre cas, il s’agit de la couche airports. Pour cette couche, vous devez ajouter un champ de référencement qui pointe vers l’autre couche, c’est donc la fk_region.

    Note

    Parfois, il faut plus qu’un seul champ pour identifier de manière unique les éléments d’une couche. Pour créer une relation avec une telle couche, il faut une clé composite, c’est-à-dire plus qu’une seule paire de champs correspondants. Utilisez le bouton symbologyAdd Ajouter une nouvelle paire de champ pour créer une clé composite pour ajouter autant de paires que nécessaire.

  • Id sera utilisée pour des besoins internes et doit être unique. Vous pourriez en avoir besoin pour créer des custom forms. Si vous laissez ce champ vide, un numéro sera généré automatiquement mais vous pouvez en assigner un si vous le souhaitez.

  • Relationship strength sets the strength of the relation between the parent and the child layer. The default Association type means that the parent layer is simply linked to the child one while the Composition type allows you to duplicate also the child features when duplicating the parent ones and on deleting a feature the children are deleted as well, resulting in cascade over all levels (means children of children of… are deleted as well).

../../../_images/relations2.png

Fig. 15.75 Ajout d’une relation entre les couches regions et airports

Depuis l’onglet Relations, vous pouvez également appuyer sur le bouton symbologyAdd Découvrir relation pour récupérer les relations disponibles auprès des fournisseurs des couches chargées. Ceci est possible pour les couches stockées dans des fournisseurs de données comme PostgreSQL ou SpatiaLite.

Formulaires pour les relations de 1 à n

Maintenant que QGIS a bien généré la relation, le formulaire d’édition va être amélioré. Nous n’avons pas modifié le formulaire d’édition par défaut (généré automatiquement), une nouvelle zone va simplement être ajoutée au formulaire. Sélectionnez la couche de régions dans la légende et utilisez l’outil d’identification. Selon vos préférences, le formulaire s’ouvre directement ou vous devez le faire via la zone d’identification qui s’affiche.

../../../_images/relations3.png

Fig. 15.76 Formulaire de la couche des régions affichant la relation avec les aéroports

Comme vous pouvez le voir, les aéroports liés à cette région en particulier sont tous visibles dans la table. Il y a également quelques boutons disponibles ; passons-les en revue rapidement :

  • Le bouton toggleEditing permet de passer en mode édition. Soyez conscients qu’il active le mode édition de la couche des aéroports bien qu’il soit situé dans le formulaire de la couche des régions. La table affiche bien les entités de la couche des aéroports.

  • The saveEdits button is for saving all the edits in the child layer (airport).

  • The capturePoint button lets you digitize the airport geometry in the map canvas and assigns the new feature to the current region by default. Note that the icon will change according to the geometry type.

  • The newTableRow button adds a new record to the airport layer attribute table and assigns the new feature to the current region by default. The geometry can be drawn later with the Add part digitizing tool.

  • The duplicateFeature button allows you to copy and paste one or more child features within the child layer. They can later be assigned to a different parent feature or have their attributes modified.

  • The deleteSelectedFeatures button deletes the selected airport(s) permanently.

  • The link symbol opens a new dialog where you can select any existing airport which will then be assigned to the current region. This may be handy if you created the airport on the wrong region by accident.

  • The unlink symbol unlinks the selected airport(s) from the current region, leaving them unassigned (the foreign key is set to NULL) effectively.

  • Avec le bouton zoomToSelected vous pouvez zoomer sur les entités enfant sélectionnées.

  • The two buttons formView and openTable to the right switch between the table view and form view of the related child features.

If you use the Drag and Drop Designer for the regions feature, you can select which tools are available. You can even decide whether to open a new form when a new feature is added using Force hide form on add feature option. Be aware that this option implies that not null attributes must take a valid default value to work correctly.

../../../_images/relations11.png

Fig. 15.77 Drag and Drop Designer for configure regions-airports relation tools

Dans l’exemple ci-dessus, la couche référence à des géométries (ce n’est pas seulement une table alphanumérique) ce qui implique que les étapes citées créeront une entrée dans la table d’attribut qui n’aura pas de géométrie correspondante. Pour ajouter une géométrie :

  1. Choisir openTable Ouvrir la table d’attributs pour la couche référence.

  2. Sélectionner l’enregistrement ajouté précédemment dans le formulaire d’entité de la couche référence .

  3. Utiliser l’outil de numérisation addPart Ajouter une partie pour attacher une géométrie à l’entité sélectionnée dans la table attributaire.

Si vous travaillez dans la table d’attributs des aéroports, le widget Relation de référence sera automatiquement réglé sur le champ fk_region (celui utilisée pour créer la relation); voir le Widget de Relation de référence.

Dans le formulaire des aéroports, vous voyez le bouton formView à droite du champ fk_region : si vous cliquez sur le bouton, le formulaire de la couche région s’ouvrira. Ce widget vous permet d’ouvrir et modifier rapidement les formulaires des entités parent liées.

../../../_images/relations4.png

Fig. 15.78 Formulaire d’identification d’un aéroport et de sa région associée

Le widget de Relation de référence a également une option pour incruster le formulaire de la couche parent dans celui de la couche enfant. Il est disponible depuis le menu Propriétés ► Formulaire d’attributs de la couche des aéroports : sélectionner le champ fk_region et cocher l’option Montrer le formulaire incrusté

Vous devriez ainsi voir que le formulaire de la région est inclus dans celui d’un aéroport et il vous permet de modifier la région assignée à l’aéroport.

../../../_images/relations5.png

De plus, si vous basculez la couche aéroport en mode édition, le champ fk_region aura également une fonctionnalité d’autocomplétion. De ce fait, tout en complétant le champ, vous verrez toutes les valeurs du champ id de la couche des régions. Si vous activez l’option Autoriser l'ajout de nouvelles entités disponible dans le menu Propriétés ► Formulaire d’attributs de la couche des aéroports, il est également possible de numériser un nouveau polygone pour la couche région en utilisant le bouton symbologyAdd.

La couche enfant peut également être utilisée dans l’outil Sélectionner des Entités par Valeur afin de sélectionner les entités de la couche parent en fonction des attributs de leurs enfants.

Dans Fig. 15.79, toutes les régions où l’altitude moyenne des aéroports est supérieure à 500 mètres au-dessus du niveau de la mer sont sélectionnées.

Vous constaterez que de nombreuses fonctions d’agrégation différentes sont disponibles dans le formulaire.

../../../_images/relation_select_by_value.png

Fig. 15.79 Sélectionner les entités des parents avec les valeurs des enfants

15.2.6.2. Introduction aux relations plusieurs-à-plusieurs (n à n)

Les relations de n à n sont des relations de plusieurs à plusieurs entre deux tables. Par exemple, les couches airports et airlines: un aéroport reçoit plusieurs compagnies aériennes et une compagnie aérienne utilise plusieurs aéroports.

Ce code SQL crée les trois tables dont nous avons besoin pour une relation de n à n dans un schéma PostgreSQL/PostGIS nommé locations. Vous pouvez lancer le code en utilisant Base de données ► DB Manager… pour PostGIS ou des outils extérieurs tels que pgAdmin. La table des aéroports stocke la couche airports et la table des lignes aériennes stocke la couche airlines. Dans les deux tables, il y a peu de champs pour simplifier. La partie délicate est la table airports_airlines. Il faut qu’elle compile toutes les lignes aériennes pour tous les aéroports (et vice versa). Ce genre de table s’appelle une table pivot. Les contraintes de cette table ne rendent possible l’association d’un aéroport avec une ligne que si les deux existent déjà dans leurs couches.

CREATE SCHEMA locations;

CREATE TABLE locations.airports
(
   id serial NOT NULL,
   geom geometry(Point, 4326) NOT NULL,
   airport_name text NOT NULL,
   CONSTRAINT airports_pkey PRIMARY KEY (id)
);

CREATE INDEX airports_geom_idx ON locations.airports USING gist (geom);

CREATE TABLE locations.airlines
(
   id serial NOT NULL,
   geom geometry(Point, 4326) NOT NULL,
   airline_name text NOT NULL,
   CONSTRAINT airlines_pkey PRIMARY KEY (id)
);

CREATE INDEX airlines_geom_idx ON locations.airlines USING gist (geom);

CREATE TABLE locations.airports_airlines
(
   id serial NOT NULL,
   airport_fk integer NOT NULL,
   airline_fk integer NOT NULL,
   CONSTRAINT airports_airlines_pkey PRIMARY KEY (id),
   CONSTRAINT airports_airlines_airport_fk_fkey FOREIGN KEY (airport_fk)
      REFERENCES locations.airports (id)
      ON DELETE CASCADE
      ON UPDATE CASCADE
      DEFERRABLE INITIALLY DEFERRED,
   CONSTRAINT airports_airlines_airline_fk_fkey FOREIGN KEY (airline_fk)
      REFERENCES locations.airlines (id)
      ON DELETE CASCADE
      ON UPDATE CASCADE
      DEFERRABLE INITIALLY DEFERRED
 );

Au lieu de PostgreSQL, vous pouvez utiliser GeoPackage. Dans ce cas, les trois tables sont créées manuellement avec le menu Base de données ► DB Manager…. Dans GeoPackage, il n’y a pas de schémas, donc le préfixe locations n’est pas requis.

Les contraintes de clé étrangère dans la table airports_airlines ne peuvent être créées en utilisant Table ► Créer une Table… ou Table ► Modifier une table…. Elles doivent donc être créées en sélectionnant Base de données ► Fenêtre SQL…. GeoPackage n’accepte pas les déclarations ADD CONSTRAINT ce qui fait que la table airports_airlines doit être créée en deux étapes :

  1. Créer la table avec seulement le champ id en utilisant Table ► Créer une Table…

  2. Avec Base de données ► Fenêtre SQL…, copier et exécuter ce code SQL :

    ALTER TABLE airports_airlines
       ADD COLUMN airport_fk INTEGER
       REFERENCES airports (id)
       ON DELETE CASCADE
       ON UPDATE CASCADE
       DEFERRABLE INITIALLY DEFERRED;
    
    ALTER TABLE airports_airlines
       ADD COLUMN airline_fk INTEGER
       REFERENCES airlines (id)
       ON DELETE CASCADE
       ON UPDATE CASCADE
       DEFERRABLE INITIALLY DEFERRED;
    

Puis dans QGIS, vous devez établir deux relations « un à plusieurs » comme expliqué au-dessus :

  • une relation entre la table airlines et la table pivot ;

  • et une seconde entre la table airports et la table pivot.

Une façon plus simple de faire cela (seulement pour PostgreSQL) est d’utiliser Découvrir des relations dans Projet ► Propriétés ► Relations. QGIS lit automatiquement toutes les relations de votre base de données et vous n’avez qu’à sélectionner les deux dont vous avez besoin. Pensez à charger les trois tables dans le projet QGIS d’abord.

../../../_images/relations6.png

Fig. 15.80 Relations et découverte automatique

Si vous souhaitez supprimer un airport ou une airline, QGIS ne supprimera pas la ou les entité(s) associée(s) dans la table airports_airlines. Cette tâche sera effectuée par la base de données si nous lui fournissons les bonnes contraintes lors de la création de la table pivot comme dans l’exemple actuel.

Note

Combiner des relations de n à n avec un groupe de transaction automatique

Vous devez activer le mode de transaction dans Propriétés du projet ► Sources de données ► quand vous travaillez dans de tels contextes. QGIS doit pouvoir ajouter ou mettre à jour un ou plusieurs champs dans toutes les tables (lignes aériennes, aéroports et les tables pivot).

Finally we have to select the right cardinality in the Layer Properties ► Attributes Form for the airports and airlines layers. For the first one we should choose the airlines (id) option and for the second one the airports (id) option.

../../../_images/relations7.png

Fig. 15.81 Régler la relation de cardinalité

Vous pouvez maintenant associer un aéroport avec une ligne aérienne (ou une ligne aérienne avec un aéroport) en utilisant Ajouter une entité enfant ou Lier à une entité enfant existante dans les sous-formulaires. Un enregistrement sera automatiquement inséré dans la table airports_airlines.

../../../_images/relations8.png

Fig. 15.82 relation de n à n entre aéroports et lignes aériennes

Note

Utiliser la cardinalité Relation de n à 1

Il n’est parfois pas souhaitable de cacher la table pivot dans une relation de n à n. Principalement parce qu’il y a des attributs dans cette relation qui ne peuvent avoir de valeurs que lorsque la relation est établie. Si vos tables sont des couches (qui ont un champ géométrie), il peut être intéressant d’activer l’option Identification sur la carte (Propriétés de la couche ► Formulaire d’attributs ► Outils disponibles ► Champs) pour les champs de clé étrangère dans la table pivot.

Note

Clé primaire de la table pivot

Évitez d’utiliser des champs multiples dans la clé primaire de la table pivot. QGIS attend une clé primaire unique donc une contrainte comme constraint airports_airlines_pkey primary key (airport_fk, airline_fk) ne fonctionnera pas.

15.2.6.3. Introducing polymorphic relations

Polymorphic relations are special case of 1-N relations, where a single referencing (document) layer contains the features for multiple referenced layers. This differs from normal relations which require different referencing layer for each referenced layer. A single referencing (document) layer is achieved by adding an adiditonal layer_field column in the referencing (document) layer that stores information to identify the referenced layer. In its most simple form, the referencing (document) layer will just insert the layer name of the referenced layer into this field.

To be more precise, a polymorphic relation is a set of normal relations having the same referencing layer but having the referenced layer dynamically defined. The polymorphic setting of the layer is solved by using an expression which has to match some properties of the referenced layer like the table name, layer id, layer name.

Imagine we are going to the park and want to take pictures of different species of plants and animals we see there. Each plant or animal has multiple pictures associated with it, so if we use the normal 1:N relations to store pictures, we would need two separate tables, animal_images and plant_images. This might not be a problem for 2 tables, but imagine if we want to take separate pictures for mushrooms, birds etc.

Polymorphic relations solve this problem as all the referencing features are stored in the same table documents. For each feature the referenced layer is stored in the referenced_layer field and the referenced feature id in the referenced_fk field.

Defining polymorphic relations

First, let QGIS know about the polymorphic relations between the layers. This is done in Project ► Properties…. Open the Relations tab and click on the little down arrow next to the symbologyAdd Add Relation button, so you can select the Add Polymorphic Relation option from the newly appeared dropdown.

../../../_images/relations9.png

Fig. 15.83 Adding a polymorphic relation using documents layer as referencing and animals and plants as referenced layers.

  • Id sera utilisée pour des besoins internes et doit être unique. Vous pourriez en avoir besoin pour créer des custom forms. Si vous laissez ce champ vide, un numéro sera généré automatiquement mais vous pouvez en assigner un si vous le souhaitez.

  • Referencing Layer (Child) also considered as child layer, is the one with the foreign key field on it. In our case, this is the documents layer. For this layer you need to add a referencing field which points to the other layer, so this is referenced_fk.

    Note

    Parfois, il faut plus qu’un seul champ pour identifier de manière unique les éléments d’une couche. Pour créer une relation avec une telle couche, il faut une clé composite, c’est-à-dire plus qu’une seule paire de champs correspondants. Utilisez le bouton symbologyAdd Ajouter une nouvelle paire de champ pour créer une clé composite pour ajouter autant de paires que nécessaire.

  • Layer Field is the field in the referencing table that stores the result of the evaluated layer expression which is the referencing table that this feature belongs to. In our example, this would be the referenced_layer field.

  • Layer expression evaluates to a unique identifier of the layer. This can be the layer name @layer_name, the layer id @layer_id, the layer’s table name decode_uri(@layer, 'table') or anything that can uniquely identifies a layer.

  • Relationship strength sets the strength of the generated relations between the parent and the child layer. The default Association type means that the parent layer is simply linked to the child one while the Composition type allows you to duplicate also the child features when duplicating the parent ones and on deleting a feature the children are deleted as well, resulting in cascade over all levels (means children of children of… are deleted as well).

  • Referenced Layers also considered as parent layers, are those with the primary key, pointed to, so here they would be plants and animals layers. You need to define the primary key of the referenced layers from the dropdown, so it is fid. Note that the definition of a valid primary key requires all the referenced layers to have a field with that name. If there is no such field you cannot save a polymorphic relation.

Once added, the polymorphic relation can be edited via the Edit Polymorphic Relation menu entry.

../../../_images/relations10.png

Fig. 15.84 Preview of the newly created polymorphic relation and it’s child relations for animals and plants.

The example above uses the following database schema:

CREATE SCHEMA park;

CREATE TABLE park.animals
(
   fid serial NOT NULL,
   geom geometry(Point, 4326) NOT NULL,
   animal_species text NOT NULL,
   CONSTRAINT animals_pkey PRIMARY KEY (fid)
);

CREATE INDEX animals_geom_idx ON park.animals USING gist (geom);

CREATE TABLE park.plants
(
   fid serial NOT NULL,
   geom geometry(Point, 4326) NOT NULL,
   plant_species text NOT NULL,
   CONSTRAINT plants_pkey PRIMARY KEY (fid)
);

CREATE INDEX plants_geom_idx ON park.plants USING gist (geom);

CREATE TABLE park.documents
(
   fid serial NOT NULL,
   referenced_layer text NOT NULL,
   referenced_fk integer NOT NULL,
   image_filename text NOT NULL,
   CONSTRAINT documents_pkey PRIMARY KEY (fid)
);

15.2.7. Storing and fetching an external resource

A field may target a resource stored on an external storage system. Attribute forms can be configured so they act as a client to an external storage system in order to store and fetch those resources, on users demand, directly from the forms.

15.2.7.1. Configuring an external storage

In order to setup an external storage, you have to first configure it from the vector attribute form properties and select the Attachment widget.

../../../_images/external_storage_configuration.png

Fig. 15.85 Editing a WebDAV external storage for a given field

From the Attachment widget, you have to first select the Storage type:

  • Select Existing File: The target URL already exists. When you select a resource, no store operation is achieved, the attribute is simply updated with the URL.

  • Simple Copy: Stores a copy of the resource on a file disk destination (which could be a local or network shared file system) and the attribute is updated with the path to the copy.

  • WebDAV Storage: The resource is pushed to a HTTP server supporting the WebDAV protocol and the attribute is updated with its URL. Nextcloud, Pydio or other file hosting software support this protocol.

Then, you have to set up the Store URL parameter, which provides the URL to be used when a new resource needs to be stored. It’s possible to set up an expression using the data defined override widget in order to have specific values according to feature attributes.

The variable @selected_file_path could be used in that expression and represent the absolute file path of the user selected file (using the file selector or drag’n drop).

Note

Using the WebDAV external storage, if the URL ends with a « / », it is considered as a folder and the selected file name will be appended to get the final URL.

If the external storage system needs to, it’s possible to configure an authentication.

15.2.7.2. Using an external storage

Once configured, you can select a local file using the button when editing a feature’s attribute. Depending on the configured storage type, the file will be stored on the external storage system (except if Select existing file has been selected) and the field will be updated with the new resource URL.

../../../_images/external_storage_store.png

Fig. 15.86 Storing a file to a WebDAV external storage

Note

User can also achieve the same result if he drags and drops a file on the whole attachment widget.

Use the taskCancel Cancel button to abort the storing process. It’s possible to configure a viewer using the Integrated document viewer so the resource will be automatically fetched from the external storage system and displayed directly below the URL. The above warning icon indicates that the resource cannot be fetched from the external storage system. In that case, more details might appear in the Journal des messages (log).