Créer et gérer des valeurs conditionnelles

Les valeurs conditionnelles, appelées parfois valeurs attributaires conditionnelles, sont une fonction de création de données permettant de rendre les valeurs d’un champ dépendantes des valeurs d’un autre champ. Les domaines attributaires servent à restreindre les entrées valides d’un champ en fonction d’une liste ou d’une plage de valeurs donnée. Les valeurs conditionnelles permettent d’aller encore plus loin en faisant en sorte que le choix d’une valeur dans un champ conditionne les valeurs de domaine sélectionnables pour un autre champ. C’est un moyen de garantir l’intégrité des données, car le fait d’appliquer des contraintes supplémentaires permet de limiter le nombre d’entrées valides dans un champ. Cela peut être utile lors de la modélisation de pièces et de ressources en conditions réelles dans votre SIG, notamment pour les entreprises chargées de la gestion des réseaux techniques. Cela peut également présenter un intérêt lors de l’élaboration d’arbres décisionnels ou de sondages. Dans ces deux cas de figure, la décision que vous prenez ou la réponse apportée à une question conditionnerait les options proposées ensuite.

Attention :

La création de valeurs conditionnelles sur une table ou une classe d’entités la rend incompatible avec ArcMap et les versions antérieures à ArcGIS Pro 2.3 et à ArcGIS Enterprise 10.7.x. Reportez-vous à la rubrique Compatibilité client/géodatabase pour en savoir plus sur les fonctions disponibles lors de l’utilisation de différentes versions de client et de géodatabase.

L’achat d’un véhicule est un bon exemple pour démontrer l’intérêt des valeurs conditionnelles.

Voici à quoi pourrait ressembler l’arbre décisionnel : Car Brand (Marque de voiture) > Car Model (Modèle de voiture) > Trim Level (Finition) > Color (Couleur)

Arbre décisionnel pour l’achat d’une voiture

  • Vous commencez par choisir la marque du véhicule, Honda, par exemple.

    Choisissez une marque de voiture.
  • Cette marque propose plusieurs modèles de voiture.

    • Pour Honda, vous pouvez avoir le choix entre les différents modèles suivants : Pilot, CRV, Accord et Civic.

      Choisissez un modèle de voiture.
    • La liste des modèles disponibles pour la marque Toyota est différente.

      Le choix d’une autre marque donne accès à une liste différente de modèles de voiture.
  • En fonction du modèle de voiture choisi, vous aurez le choix entre plusieurs finitions.

    • Dans le cas d’une Honda Pilot, les finitions disponibles sont : LX, EX-L, Sport et Touring.

      Choisissez une finition.
  • Selon la finition choisie, plusieurs couleurs de carrosserie peuvent être proposées : Rouge, Bleu, Noir et Blanc, par exemple.

    Choisissez une couleur.

Chaque choix que vous effectuez dans l’arbre décisionnel conditionne les options disponibles ensuite. Le choix d’une autre marque donne accès à une liste différente de modèles de voiture. Le modèle de voiture choisi conditionne les finitions disponibles et à chaque finition peuvent correspondre des couleurs de carrosserie différentes. Selon les choix opérés à chaque étape, vous pouvez aboutir à une Honda > Pilot > EX-L > Blanc ou une Toyota > 4Runner > TRD Sport > Inferno.

Les valeurs conditionnelles permettent de définir ces types de dépendances entre les champs dans vos données : le choix d’une valeur dans un champ ayant pour effet de restreindre la liste des valeurs valides pour un autre champ.

Dans le cas d’un SIG réel, par exemple, considérons la classe d’entités StructureJunction dans le paquetage de ressources d’un réseau technique. Il existe une classe d’entités ponctuelles pour les jonctions de structure possédant des sous-types pour les ressources telles que les pylônes électriques, les bouches d’égout, les plateformes, et ainsi de suite.

Sous-type de pylône avec des domaines attribués à ses champs

En ce qui concerne le sous-type Pole (Pylône), des domaines ont déjà été appliqués à trois des champs. Les domaines limitent les valeurs insérables dans chaque champ en fonction d’une liste de valeurs valides. Le pylône peut, par exemple, appartenir aux classes 1, 2 ou 3 ; il peut être fabriqué en fibre de verre, en bois ou en acier ; et la hauteur possible peut être de 30, 35, 40, 45 pieds et ainsi de suite.

Pour restreindre encore plus les valeurs valides pour cet ensemble de champs, vous pourriez utiliser des valeurs conditionnelles de façon, par exemple, à autoriser uniquement la fibre de verre comme matériau des pylônes de classe 1 et à limiter leur hauteur à 30, 35, 40 ou 45 pieds.

Considérez les valeurs conditionnelles que vous aimeriez appliquer aux valeurs de champ du sous-type Pole (Pylône). Voici comment vous pouvez définir, par exemple, l’ensemble des valeurs conditionnelles pour ce groupe de champs (classe, matériau et hauteur) :

TerrainValeurs conditionnellesValeurs conditionnellesValeurs conditionnelles

Classe

1

2

3

Matériau

Fibre de verre

Bois

Acier

Hauteur

30, 35, 40, 45

30, 35, 40, 45

50, 55, 60, 65

Une fois ces valeurs conditionnelles établies, l’insertion d’une nouvelle entité pylône ou la modification d’une entité pylône existante appartenant à la classe 1 vous imposerait de choisir la fibre de verre dans le champ correspondant au matériau. De la même manière, les valeurs de hauteur admissibles pour un pylône en fibre de verre de classe 1 seraient respectivement de 30, 35, 40 ou 45 pieds.

Les valeurs conditionnelles présentent l’intérêt de restreindre encore plus les valeurs valides pour les ensembles de champs et de gérer, de façon plus efficace, la validité et l’intégrité de vos données.

Préparer les données pour les valeurs conditionnelles

Les valeurs conditionnelles sont créées pour des groupes de champs au sein d’une table ou d’une classe d’entités. Avant de définir des valeurs conditionnelles, il convient de configurer ces champs avec les domaines appropriés contenant une liste ou une plage de valeurs valides.

Dans l’exemple de pylône électrique ci-dessus, les valeurs conditionnelles proviennent d’un groupe de trois champs : Class (Classe), Material (Matériau) et Height (Hauteur). Un domaine approprié est attribué à chaque champ. Par exemple, le champ Material (Matériau) possède un domaine pour les matériaux de type Fiberglass (Fibre de verre), Wood (Bois) et Steel (Acier). Une fois que vous avez configuré correctement les valeurs de domaine, attribué les domaines à leurs champs respectifs et déterminé le groupe de champs réservé aux valeurs conditionnelles, vous devez créer les valeurs conditionnelles entre les valeurs de domaine.

Pour créer des valeurs conditionnelles sur une table ou une classe d’entités, vous devez procéder comme suit :

  • Créer des domaines avec une liste ou une plage de valeurs valides
  • Attribuer ces domaines aux champs appropriés d’une classe d’entités ou d’une table
  • Ouvrir la vue des valeurs conditionnelles sur cette classe d’entités ou cette table
  • Créer un groupe de champs contenant les champs auxquels vous souhaiter donner des valeurs conditionnelles
  • Créer des valeurs conditionnelles pour les champs de ce groupe de champs

Ouvrir la vue des valeurs conditionnelles

C’est dans cette vue que vous créez, supprimez et gérez les valeurs conditionnelles.

Il existe différents moyens d’accéder à la vue des valeurs conditionnelles :

  • Cliquez avec le bouton droit sur une table ou une classe d’entités dans la fenêtre Catalog (Catalogue), pointez sur Design (Création), puis cliquez sur Contingent Values (Valeurs conditionnelles).
  • Cliquez avec le bouton droit sur une table ou une classe d’entités dans la fenêtre Contents (Contenu), pointez sur Design (Création), puis cliquez sur Contingent Values (Valeurs conditionnelles).
  • Avec une couche ou une table sélectionnée dans la fenêtre Contents (Contenu), cliquez sur le bouton Contingent Values (Valeurs conditionnelles) situé sur le ruban Data (Données) de l’onglet contextuel Feature Layer (Couche d’entités) ou Standalone Table (Table autonome). Cela a pour effet d’afficher la vue Contingent Values (Valeurs conditionnelles).
  • Dans la vue des champs, cliquez sur le bouton Contingent Values (Valeurs conditionnelles) sur le ruban Fields (Champs). Cela a pour effet d’afficher la vue des valeurs conditionnelles.
  • Dans la vue des sous-types, cliquez sur le bouton Contingent Values (Valeurs conditionnelles) sur le ruban Subtypes (Sous-types). Cela a pour effet d’afficher la vue des valeurs conditionnelles.
Remarque :

Si c’est la première fois que vous accédez à la vue Contingent Values (Valeurs conditionnelles) sur une table ou une classe d’entités et qu’aucune valeur conditionnelle n’est définie, vous êtes invité à créer un groupe de champs.

Ruban des valeurs conditionnelles

La vue des valeurs conditionnelles dispose de son propre ruban pour créer et gérer les valeurs conditionnelles, et de plusieurs boutons pour basculer sur les autres vues de création de données.

Ruban Contingent Values (Valeurs conditionnelles)

Le ruban Contingent Values (Valeurs conditionnelles) contient les groupes suivants :

  • Clipboard (Presse-papiers) contient les options standard du Presse-papiers : Paste (Coller), Copy (Copier), Cut (Couper) et Delete (Supprimer).
  • Design (Création) contient les boutons permettant d’accéder aux autres vues de création de données :
    • Champs
    • Sous-types
    • Domaines
    • Règles attributaires
    • Field Groups (Groupes de champs) propose un bouton permettant d’ouvrir la boîte de dialogue Field Groups (Groupes de champs).
  • Contingent Values (Valeurs conditionnelles) offre des boutons permettant de créer et de gérer des valeurs conditionnelles, y compris les valeurs suivantes :
    • New (Nouveau) : ajoute une ligne pour créer des valeurs conditionnelles sur les champs à partir d’un groupe de champs actif dans la vue .
    • Import (Importer) : importe des groupes de champs et des valeurs conditionnelles depuis un fichier de valeurs séparées par des virgules (.csv).
    • Export (Exporter) : exporte des groupes de champs et des valeurs conditionnelles vers un fichier de valeurs séparées par des virgules (.csv).
    • Retire Value (Retirer la valeur) : offre la possibilité de définir la ligne en évidence en tant que valeur conditionnelle retirée. Les valeurs retirées restent visibles à d’autres emplacements de l’interface utilisateur (valeur de champ dans la fenêtre Attribute (Attribut), par exemple), mais elles ne peuvent plus être sélectionnées.
    • Toggle Value Ids (Activer/désactiver les ID de la valeur) : affiche ou masque l’élément Value ID (ID de valeur) dans la grille de données.
    • Toggle Code/Description (Afficher/masquer la description du code) : indique si une valeur de champ dans la grille de données affiche le code ou la description du domaine.
    • Save (Enregistrer) : enregistre toutes les modifications effectuées dans la vue Contingent Values (Valeurs conditionnelles). Les modifications sont conservées en mémoire jusqu’à ce que vous cliquiez sur Save (Enregistrer).

Créer un groupe de champs

Avant de créer des valeurs conditionnelles à l’échelle des champs d’une classe d’entités ou d’une table, vous devez créer un groupe de champs. Un groupe de champs est un ensemble de champs nommé au sein d’une table ou d’une classe d’entités. Dans l’exemple de pylône électrique ci-avant, il existe un groupe de champs correspondant à la classe, au matériau et à la hauteur. Après avoir créé un groupe de champs, vous pouvez commencer à attribuer des valeurs conditionnelles aux valeurs de champ de ce groupe.

Pour créer un groupe de champs, procédez comme suit :

  1. Cliquez sur le bouton Field Groups (Groupes de champs) sur le ruban Contingent Values (Valeurs conditionnelles).

    La boîte de dialogue Field Groups (Groupes de champs) apparaît.

  2. Dans la section Name (Nom), cliquez sur le texte Click here to add a new field group (Cliquez ici pour ajouter un nouveau groupe de champs).

    Cela a pour effet de créer le groupe de champs Field_Group. Vous êtes libre de renommer ce groupe de champs.

  3. Cliquez sur le menu déroulant Add Fields (Ajouter des champs).

    Tous les champs de la table ou de la classe d’entités sont répertoriés.

  4. Sélectionnez les champs à intégrer au groupe de champs, puis cliquez sur le bouton Add (Ajouter).
    • Servez-vous de la zone de texte Search (Rechercher) en haut de la liste pour trouver un champ spécifique.
    • Pour ajouter la totalité des champs au groupe de champs, cliquez sur Select All (Tout sélectionner), puis sur Add (Ajouter).
  5. Indiquez si le groupe de champs doit être restrictif en activant ou non la case à cocher Restrictive (Restrictif).
    • Si vous laissez la case cochée, un groupe de champs restrictif est créé et les valeurs saisies dans un champ du groupe de champs sont limitées aux champs spécifiés en tant que valeurs conditionnelles. Les groupes de champs sont restrictifs par défaut pour assurer le contrôle de l’expérience de mise à jour lorsque vous utilisez des valeurs conditionnelles.
    • Pour désactiver le paramètre restrictif, décochez la case Restrictive (Restrictif). Lorsque la case est désélectionnée, le groupe de champs ne subit aucune restriction. Ainsi, les valeurs peuvent être validées dans un groupe de champs même si elles ne sont pas spécifiées comme étant des valeurs conditionnelles.
  6. Cliquez sur OK pour créer le groupe de champs.

Conseil :
Vous pouvez utiliser les raccourcis suivants sur votre clavier pour explorer la boîte de dialogue Fields Group (Groupe de champs) :
  • Ctrl+N : crée un groupe de champs.
  • Alt+G : place le pointeur dans la grille de données Field group (Groupe de champs) en haut de la boîte de dialogue.
  • Alt+A : place le pointeur dans le menu déroulant Add Fields (Ajouter des champs).
  • Alt+F : place le pointeur dans la grille de données Fields (Champs) en bas de la boîte de dialogue.

Créer des valeurs conditionnelles

Après avoir créé un groupe de champs, vous pouvez définir les valeurs conditionnelles pour les champs concernés.

Si la table ou la classe d’entités dans laquelle vous travaillez dans la vue des valeurs conditionnelles est associée à plusieurs groupes de champs, vous pouvez passer de l’un à l’autre en cliquant sur le menu déroulant Field Group (Groupe de champs) et en sélectionnant un autre groupe de champs.

Si la table ou la classe d’entités dans laquelle vous travaillez dans la vue des valeurs conditionnelles possède plusieurs sous-types, vous pouvez passer de l’un à l’autre grâce au menu déroulant Subtypes (Sous-types). Cela vous permet de définir les valeurs conditionnelles différemment pour les champs de chaque sous-type. Assurez-vous que les domaines requis sont appliqués aux champs au niveau du sous-type dans la vue des sous-types avant de commencer.

  1. Pour créer des valeurs conditionnelles dans un groupe de champs, cliquez sur le bouton New (Nouveau) sur le ruban, ou cliquez sur la ligne vide contenant le message Click to add contingent values (Cliquer pour ajouter des valeurs conditionnelles).
  2. Pour chaque champ du groupe de champs, choisissez une valeur de champ dans le menu déroulant.

    Les valeurs <ANY> et <NULL> peuvent également être ajoutées comme valeurs conditionnelles dans le menu déroulant. La valeur <ANY> est toujours disponible (même si aucun domaine n’est appliqué au champ réservé à la valeur conditionnelle) alors que la valeur <NULL> est disponible à condition que le champ autorise des valeurs nulles.

    • <ANY> : l’ajout de la valeur conditionnelle <ANY> signifie que n’importe quelle valeur insérée sur le champ est considérée comme valide.
    • <NULL> : l’ajout de la valeur conditionnelle <NULL> signifie qu’une valeur nulle insérée sur le champ est considérée comme valide.

  3. Répétez les étapes 1 à 2 pour créer autant de valeurs conditionnelles que nécessaire. Lorsque vous avez terminé, cliquez sur Save (Enregistrer) pour sauvegarder vos modifications.

Dans l’exemple du pylône ci-dessus, dans le groupe de champs appelé Poles Contingency, le jeu de valeurs conditionnelles se présente comme suit :

Valeurs conditionnelles utilisées pour l’exemple de pylône

Une fois les valeurs conditionnelles préparées pour vos données, les restrictions que vous avez créées sont appliquées dans l’application chaque fois qu’une valeur est insérée dans un champ pendant la mise à jour. Il peut s’agir, par exemple, d’un champ de la fenêtre Attribute (Attribut) ou de la vue Attribute Table (Table attributaire).

En savoir plus sur la mise à jour des champs avec des valeurs conditionnelles.

Retirer une valeur conditionnelle

Dans certains cas, il peut être nécessaire de retirer une valeur conditionnelle. Lorsque vous retirez une valeur conditionnelle, elle apparaît toujours dans la liste des valeurs valides d’un champ, comme dans la fenêtre Attribute (Attribut), mais elle n’est pas disponible et ne peut pas être sélectionnée comme valeur de champ. Admettons, par exemple, que votre organisation n’utilise plus d’amiante comme matériau de construction, mais qu’il existe encore des endroits où des ressources contiennent de l’amiante. Cela signifie que cette valeur est encore valide dans la mesure où elle figure déjà dans le champ des matériaux de construction de certaines entités. Mais elle est désormais proscrite. Pour éviter de l’appliquer à d’autres champs, vous pouvez retirer la valeur.

Pour retirer une valeur conditionnelle, sélectionnez la ligne concernée et cliquez sur le bouton Retire Value (Retirer la valeur) sur le ruban.

Si cette valeur conditionnelle redevient valide, vous pouvez annuler son retrait en sélectionnant la ligne et en cliquant sur le bouton Retire Value (Retirer la valeur).

Exporter et importer des valeurs conditionnelles

Les fonctions d’exportation et d’importation peuvent s’avérer utiles dans le cadre du partage de valeurs conditionnelles et de groupes de champs pour n’importe quelle table ou classe d’entités donnée, ou pour créer des sauvegarde ou effectuer des mises à jour dans une base de données de production sans la verrouiller de manière intensive au niveau de la mise à jour de la structure.

Vous pouvez utiliser l’outil Exporter figurant sur le ruban Contingent Values (Valeurs conditionnelles) ou l’outil de géotraitement Exporter les valeurs conditionnelles pour exporter des groupes de champs et des valeurs conditionnelles vers des fichiers de valeurs séparées par des virgules (.csv). Vous pouvez ensuite ouvrir les fichiers .csv dans une application de mise à jour, comme Excel, pour examiner ou effectuer des modifications.

De la même manière, vous pouvez utiliser l’outil Importer figurant sur le ruban Contingent Values (Valeurs conditionnelles) ou l’outil de géotraitement Importer les valeurs conditionnelles pour importer des groupes de champs et des valeurs conditionnelles à partir de fichiers de valeurs séparées par des virgules (.csv). Cela vous permet de choisir de remplacer ou de fusionner les modifications avec les valeurs conditionnelles existantes dans une table ou une classe d’entités sélectionnée. Une fois l’importation effectuée, vous pouvez vérifier toutes les modifications dans la vue Contingent Values (Valeurs conditionnelles) et les enregistrer à l’issue des mises à jour.

Les traitements d’exportation et d’importation fonctionnent avec deux fichiers .csv, l’un pour les groupes de champs contenant les informations sur les champs participants et l’autre pour les valeurs conditionnelles. Ce dernier fichier décrit en détail les différentes métadonnées et notamment le type, la valeur et la description des valeurs définies. Vous pouvez utiliser les boutons Toggle Value IDs (Afficher/masquer les ID de la valeur) et Toggle Code/Description (Afficher/masquer la description du code) sur le ruban Contingent Values (Valeurs conditionnelles) pour afficher l’identifiant de la valeur (option Value ID) et les codes de domaine des valeurs conditionnelles. Ces outils peuvent aider à apparier les champs lorsque vous utilisez les fichiers exportés. Pour en savoir plus sur la mise en forme de ces fichiers, reportez-vous à la rubrique Exporter des valeurs conditionnelles.