Prévenir les valeurs maximales de charge de pointe à l’aide de règles attributaires de contrainte

Vous allez tout d'abord créer deux règles attributaires afin d’appliquer et de signaler l’intégrité des données dans ArcGIS Utility Network. Vous allez ensuite utiliser Arcade pour configurer et tester de nouvelles expressions contextuelles dérivées d’informations utiles provenant du journal créé via la règle de calcul. Vous allez apprendre à effectuer les opérations suivantes :

  • Créer une règle de contrainte pour prévenir des valeurs maximales avec une charge de pointe.
  • Créer une règle de calcul associée pour signaler les valeurs de charge de pointe lorsque des modifications sont apportées à des entités de service de basse tension.
  • Tester les règles attributaires en modifiant des entités de service de basse tension et en vérifiant la sortie de chaque règle.
  • Configurer une fenêtre contextuelle à l’aide de Arcade pour dériver des informations utiles provenant du journal créé à l’aide de la règle de calcul.

Avant de commencer, vous pouvez consulter le modèle de données électriques.

Ajouter une règle attributaire de contrainte

Dans le réseau de distribution, des mises à jour d’attribut irrégulières ont été observées dans des entités du groupe de ressources Low Voltage Service (Service basse tension). Cependant, si vous ouvrez la carte Electric Network Editor (Éditeur de réseau d’électricité) ou consultez les classes d’entités dans le jeu de classes d’entités UtilityNetwork (RéseauDistribution) dans la géodatabase contenant votre réseau de distribution afin d’identifier les irrégularités, vous pouvez constater qu’aucune classe d’entités Low Voltage Service (Service basse tension) n’est disponible.

Cela s’explique par la mise en œuvre par ArcGIS Utility Network d’un modèle de classification à l’aide des couches de groupes de sous-types et des domaines attributaires, ce qui évite d’avoir à disposer de nombreuses classes d’entités individuelles. En outre, dans la fenêtre Contents (Contenu) de la carte, des couches composites permettent de regrouper les couches de réseau technique. Ces couches composites fonctionnent plus efficacement que des couches individuelles en réduisant le nombre de demandes exécutées dans la source de données lors de l’interrogation, de la modification ou de l’actualisation des couches.

  1. Téléchargez les règles attributaires dans le paquetage de projet ArcGIS Utility Network.
  2. Recherchez le paquetage de projet Attribute_rules_in_the_ArcGIS_Utility_Network_ votre ordinateur. Déplacez le fichier vers un emplacement approprié, puis double-cliquez dessus.

    Le projet Use Attribute Rules (Utiliser les règles attributaires) s’ouvre dans ArcGIS Pro.

    Remarque :

    Si vous n’avez pas accès à ArcGIS Pro ou ne disposez pas d’un compte d’organisation ArcGIS, consultez les options disponibles pour accéder aux logiciels.

  3. Dans la fenêtre Catalog (Catalogue), développez Databases (Bases de données), puis electricnetworkeditor.gdb.
    Remarque :

    Si la fenêtre Catalog (Catalogue) n’est pas affichée, sur le ruban, dans l’onglet View (Vue), dans le groupe Windows (Fenêtres), cliquez sur Catalog Pane (Fenêtre Catalogue).

  4. Sous electricnetworkeditor.gdb, développez le jeu de classes d’entités UtilityNetwork.

    Passez en revue les classes d’entités et les classes de relations organisées dans le jeu de classes d’entités. Elles représentent le schéma (la structure) de la géodatabase contenant le réseau technique.

  5. Dans la fenêtre Catalog (Catalogue), cliquez avec le bouton droit sur ElectricDevice, pointez sur Data Design (Conception de données), puis sélectionnez Subtypes (Sous-types).

    Vue des sous-types d’ElectricDevice

    La vue Subtypes (Sous-types) de la classe d’entités ElectricDevice s’affiche. Plusieurs sous-types et domaines sont déjà appliqués à la classe d’entités.

  6. Dans la vue Subtypes (Sous-types), vérifiez le sous-type *ASSETGROUP.

    Sous-type *ASSETGROUP

    *ASSETGROUP est un sous-type utilisé pour définir différents types de ressource, comme un dispositif de protection en haute tension, un interrupteur basse tension, un dispositif de protection en basse tension et un service de basse tension. De plus, ASSETTYPE offre un mécanisme permettant de définir un niveau de sous-classification pour une ressource. Par exemple, le service Low Voltage Service (Service de basse tension) est sous-classifié en service résidentiel monophasé et service commercial triphasé.

  7. Dans la vue Subtypes (Sous-types), faites défiler la colonne Low Voltage Service (Service de basse tension) correspondant à ASSETGROUP 22.

    Ligne *ASSETGROUP 22 pour le service basse tension

    Pour le sous-type Low Voltage Service (Service de basse tension), des domaines sont affectés à de nombreux champs, tandis que des valeurs par défaut sont définies pour d’autres. Cela permet d’appliquer l’intégrité des données (valeurs valides) en limitant les mises à jour à une liste de choix spécifique ou à une plage de valeurs. Si aucune valeur n’est indiquée, la valeur par défaut est utilisée.

  8. Pour *ASSETGROUP 22, faites défiler la page jusqu’au champ peakload.

    Aucun domaine n’est affecté au champ peakload.

    Champ Peakload

    Remarque :

    La charge de pointe (ou demande de pointe) peut fluctuer à de nombreuses reprises au cours d’un cycle quotidien, et ses valeurs peuvent vérifier d’un service à l’autre. Par conséquent, les valeurs et les domaines par défaut ne sont pas des outils efficaces pour gérer l’intégrité des données pour cet attribut. Une solution consiste à créer une règle attributaire de contrainte à l’aide du global Arcade $originalFeature dans le profil de règles attributaires qui détecte les modifications importantes affectées à l’attribut peakload. Le global Arcade $originalFeature présente l’état de l’entité avant la modification, ce qui permet au créateur du script de comparer les valeurs actuelles de $feature aux valeurs initiales de départ de l’entité.

    Alors que la charge de pointe peut varier quotidiennement, la plage de valeurs est généralement homogène jour après jour et ne doit refléter des changements importants que sur des périodes mensuelles ou saisonnières. L’utilisation d’une nouvelle règle de contrainte appliquée au champ peakload déclenche l’échec d’une modification du champ lorsqu’elle est trop importante. Dans une étape ultérieure, vous allez améliorer la détection de cette erreur en créant une règle attributaire de calcul afin de remplir une ligne d’une table pour journaliser les modifications apportées au champ peakload.

  9. Fermez la vue Subtypes (Sous-types).

    Vous ajouterez ensuite une règle attributaire. Les règles attributaires améliorent l’expérience de mise à jour et renforcent l’intégrité des données des jeux de données des géodatabases. Il s’agit de règles définies par l’utilisateur qui peuvent être utilisées pour renseigner automatiquement des attributs, restreindre des mises à jour non valides lors d’opérations de mise à jour et effectuer des contrôles d’assurance qualité sur des entités existantes.

    Les règles attributaires améliorent l’expérience de mise à jour et renforcent l’intégrité des données des jeux de données des géodatabases. Par exemple, des domaines peuvent être affectés à un champ attributaire afin de faciliter le traitement de collecte de données en fournissant une liste de sélection des valeurs valides destinées aux éditeurs. Pour améliorer ce comportement, une règle attributaire peut être utilisée pour restreindre des valeurs pour un champ d’attribut qui ne fait pas partie du domaine lors d’un calcul de champ. Une fois les règles ajoutées à un jeu de données, elles peuvent être évaluées au fur et à mesure des mises à jour ou ultérieurement.

    Il est important de noter que les règles attributaires ne sont pas une fonctionnalité ArcGIS Utility Networkspécifique, mais elles peuvent être déployées dans l’ensemble des classes d’entités de géodatabase et de tables pour effectuer des opérations de modification, la validation des données, l’assurance qualité et les opérations.

  10. Dans la fenêtre Catalog (Catalogue), cliquez avec le bouton droit sur ElectricDevice, pointez sur Data Design (Conception de données), puis sélectionnez Attribute Rules (Règles attributaires).

    Options Data Design (Conception de données) et Attribute Rules (Règles attributaires)

    La vue Attribute Rules (Règles attributaires) s’ouvre. Cette vue contient trois onglets, qui identifient les différents types de règle : Calculation (Calcul), Constraint (Contrainte) et Validation.

  11. Dans la vue Attribute Rules (Règles attributaires) des règles Calculation (Calcul), faites défiler la page jusqu’à Rule Name (Nom de la règle) ID_Device22 qui représente l’entité Low Voltage Service (Service de basse tension).

    Règle Service de basse tension

  12. Cliquez sur la règle pour la sélectionner. Dans la fenêtre ID_Device_22, observez les sections Expression et Triggers (Déclencheurs).

    Explorez l’expression de la règle.

    Lorsque cette expression est appliquée pendant l’insertion d’une nouvelle entité Low Voltage Service (Service de basse tension), elle remplit le champ assetid avec une valeur d’ID unique.

    Vous allez maintenant ajouter une nouvelle règle de contrainte pour entraîner l’échec des modifications si la valeur de charge de pointe est modifiée par un facteur supérieur à 50. Les règles de contrainte spécifient des configurations d’attributs acceptables et des relations générales sur une entité. Cela empêche de saisir des données non valides lors des opérations de modification pour garantir l’intégrité des données. Des règles de contrainte peuvent être créées pour des jeux de données dans les géodatabases fichier et d’entreprise à l’aide des outils de géotraitement Add Attribute Rule (Ajouter une règle attributaire) et Import Attribute Rules (Importer des règles attributaires) ou dans la vue Attribute Rules (Règles attributaires).

  13. Dans la vue Attribute Rules (Règles attributaires), cliquez sur l’onglet Constraint (Contrainte), puis sur Add Rule (Ajouter une règle).

    Option Ajouter une règle

    La fenêtre New Rule (Nouvelle règle) s’affiche. Aucune règle de contrainte n’est pour l’instant définie.

    Vous allez maintenant mettre à jour les propriétés des règles afin de créer une règle de contrainte pour la classe d’entités ElectricDevice.

  14. Dans la fenêtre New Rule (Nouvelle règle), saisissez les paramètres suivants :
    • Dans le champ Rule Name (Nom de la règle), saisissez Prevent load spikes (Empêcher les valeurs maximales de charge).
    • Comme Description, saisissez If the peak load attribute is changed by a factor of more than 50, fail the edit (Si l’attribut de charge de pointe est modifié selon un facteur supérieur à 50, la modification échoue).
    • Dans le champ Subtype (Sous-type), sélectionnez Low Voltage Service (Service de basse tension).

    Paramètres de la nouvelle règle

    Vous avez sélectionné le sous-type Low Voltage Service (Service de basse tension), car vous souhaitez que cette règle attributaire ne soit exécutée que lorsque des modifications sont apportées aux mesures du service de ce sous-type.

  15. Dans la fenêtre Prevent load spikes (Empêcher les valeurs maximales de charge), pour Expression, cliquez sur le bouton Expression.

    Bouton Expression

  16. Dans la fenêtre Expression Builder (Générateur d’expressions), dans la zone de texte Expression, copiez et collez le code suivant :
    
    var dLoad = $feature.peakload - $originalFeature.peakload;
    if (dLoad > 50)
        return false;
    else
        return true;

    Expression Arcade saisie dans la zone de texte Expression

  17. Cliquez sur le bouton Verify (Vérifier) pour valider l’expression, puis sur OK.

    Boutons Vérifier et OK

    Remarque :

    Le global Arcade $originalFeature indique l’état de l’entité avant sa modification. Par exemple, si la valeur actuelle de la charge de pointe d’une entité est de 10 et que vous la modifiez par 20, l’élément $originalFeature.peakload renvoie 10 et l’élément $feature.peakLoad renvoie 20.

    Vous allez maintenant continuer à mettre à jour les propriétés de la règle.

  18. Dans la fenêtre Prevent load spikes (Empêcher les valeurs maximales de charge), dans la section Error (Erreur), configurez les paramètres suivants :
    • Dans le champ Error Number (Numéro d’erreur), saisissez 1001.
    • Dans le champ Error Message (Message d’erreur), saisissez Load spike detected, aborting edit (Valeur maximale d echarge détectée, modification en cours d’abandon).

    Paramètres de la section Erreurs

  19. Dans la section Triggers (Déclencheurs), cochez la case Update (Mettre à jour).
  20. Dans la section Execution (Exécution), cochez la case Exclude from application evaluation (Exclure de l’évaluation des applications).

    Paramètres de la règle Empêcher les valeurs maximales de charge configurés

  21. Sur le ruban, dans l’onglet Attribute Rules (Règles attributaires), dans le groupe Attribute Rules (Règles attributaires), cliquez sur Save (Enregistrer).

    Bouton Enregistrer

    Remarque :

    L’enregistrement de la règle peut prendre plusieurs minutes.

  22. Fermez la vue des Attribute Rules (Règles attributaires).
  23. Dans la Quick Access Toolbar (Barre d'outils Accès rapide), cliquez sur Save (Enregistrer).

    Bouton Enregistrer de la barre d’outils Accès rapide

Tester la règle de contrainte

Pour tester la nouvelle règle de contrainte que vous venez de créer, vous devez mettre à jour un service de basse tension et modifier la charge de pointe.

  1. Dans la fenêtre Catalogue, développez Cartes.
  2. Cliquez avec le bouton droit sur la carte Electric Network Editor (Éditeur de réseau d’électricité) et sélectionnez Open (Ouvrir).

    Option Open (Ouvrir)

    La carte Electric Network Editor (Éditeur de réseau d’électricité) s’affiche.

  3. Dans l’onglet Map (Carte), dans le groupe Navigate (Naviguer), cliquez sur Bookmarks (Géosignets) et choisissez Test Attribute Rule (Tester une règle attributaire).

    Géosignet Tester une règle attributaire

    L’étendue de la carte est mise à jour et centrée sur un point de service de basse tension situé au sud de l’école élémentaire Beebe.

    Carte centrée sur l’emplacement de l’entité cible

  4. Sur le ruban, dans le groupe Selection (Sélection), cliquez sur l’outil Select (Sélection).

    Outil Sélection

  5. Cliquez sur le point de service de basse tension.

    Entité cible sélectionnée

    L’entité apparaît en surbrillance bleue, ce qui indique qu’elle est sélectionnée.

  6. Sur le ruban, dans le groupe Selection (Sélection), cliquez sur Attributes (Attributs).

    Option Attributs

    La fenêtre Attributes (Attributs) apparaît.

    Fenêtre Attributs de l’entité sélectionnée

  7. En bas de la fenêtre Attributes (Attributs), vérifiez que l’option Auto Apply (Automatique) est cochée.

    Case à cocher Appliquer automatiquement

    Ce paramètre contrôle que les modifications apportées aux entités sont appliquées automatiquement.

  8. Recherchez l’attribut Peak Load (kW) (Charge de pointe (kW)), saisissez 10 et appuyez sur Entrée.

    Charge de pointe (kW) modifiée

    L’attribut Peak Load (kW) (Charge de pointe (kW)) est mis à jour pour l’entité et aucun avertissement n’est attendu, car la règle de contrainte appliquée à ce champ n’est déclenchée que lorsque la valeur dépasse 50 kW.

  9. Dans le champ Peak Load (kW) [Charge maximale (kW)], saisissez 70 et appuyez sur Entrée.

    La valeur Peak Load (kW) (Charge de pointe (kW)) de 70 déclenche l’échec de la modification et un message d’erreur s’affiche dans la fenêtre Attributes (Attributs).

    Erreur lors de la mise à jour de la charge de pointe

    L’échec de la modification et le message d’erreur ont été déclenchés car la valeur Peak Load (kW) (Charge de pointe (kW)) a augmenté de plus de 50 kW. Il s’agit de la conséquence de la règle de contrainte appliquée aux entités ElectricDevice.

    Remarque :

    Dans l’expression de la règle de contrainte, la valeur initiale $originalFeature a été définie sur 0. Sa mise à jour à la valeur 10 n’a pas déclenché la contrainte, car 10 - 0 = 10, soit moins de 50. En revanche, la mise à jour de la valeur par 70 a déclenché la règle attributaire et entraîné l’échec, car 70 - 10 = 60, soit une différence supérieure à la valeur seuil de 50.

  10. Testez votre règle de contrainte en l’expérimentant avec différentes valeurs pour l’attribut Peak Load (kW) (Charge de pointe (kW)).
    Conseil :

    Essayez de modifier la règle Prevent load spikes (Empêcher les valeurs maximales de charge) pour empêcher l’erreur. Utilisez la fonction Abs() dans Arcade.

    Si vous réduisez la valeur Peak Load (kW) (Charge de pointe (kW)) de plus de 50, il n’y a pas d’erreur.

    Dans le cadre ce didacticiel, vous n’allez pas conserver les modifications apportées à Peak Load (kW) (Charge de pointe [kW]).

  11. Dans l’onglet Edit (Modifier), dans le groupe Manage Edits (Gérer les modifications), cliquez sur Discard (Annuler) pour annuler vos modifications. Cliquez sur Oui pour confirmer la suppression.

    Bouton Annuler

  12. Fermez la carte Electric Network Editor (Éditeur de réseau d’électricité) et enregistrez le projet.

Vous avez créé une règle attributaire de contrainte à l’aide de la variable globale $originalFeature Arcade afin de détecter les modifications importantes de l’attribut Peak load (Charge maximale).


Signaler des valeurs supérieures de charge de pointe à l’aide d’un rapport de calcul

Vous avez précédemment créé une règle attributaire de contrainte à l’aide de la valeur $originalFeature globale Arcade afin de détecter les modifications importantes de l’attribut Peak load (Charge maximale). Vous allez maintenant créer une règle de calcul pour signaler la valeur de la charge de pointe, lorsque les services de basse tension sont mis à jour. La règle attributaire de calcul détecte une modification de l’historique de la charge des points de service et journalise ces informations dans une table distincte.

Créer une table d’historique de la charge

Vous allez d’abord créer une table dans la géodatabase electricnetworkeditor pour journaliser les modifications de l’historique de la charge des points de service.

  1. Dans la fenêtre Catalog (Catalogue), développez Databases (Bases de données). Cliquez avec le bouton droit sur electricnetworkeditor.gdb, pointez sur New (Nouveau), puis sélectionnez Table.

    Créer une table

    L’assistant Create Table (Créer une table) s’affiche.

  2. Dans l’assistant Create Table (Créer une table), dans la page Define (Définir), saisissez les informations suivantes :
    • Dans le champ Name (Nom), saisissez LoadHistory.
    • Dans le champ Alias, saisissezLoad History (Historique de la charge).

    Assistant Créer une table : paramètres de la page Définir

    Vous allez maintenant ajouter deux nouveaux champs à la table.

  3. Cliquez sur Next (Suivant).
  4. Sur la page Field (Champs), cliquez sur Click here to add a new field (Cliquez ici pour ajouter un nouveau champ), puis saisissez les informations suivantes :
    • Comme Field Name (Nom de champ), saisissez peakLoad.
    • Comme Data Type (Type de données), choisissez Long Integer (Entier long).

    Ajoutez un nouveau champ.

  5. Cliquez sur Click here to add a new field (Cliquez ici pour ajouter un nouveau champ) pour ajouter le second champ avec les paramètres suivants :
    • Comme Field Name (Nom de champ), saisissez serviceGUID.
    • Comme Data Type (Type de données), choisissez GUID

    Ajoutez un second champ.

    Pour suivre les services qui ont été modifiés, le champ Peak Load (Charge maximale) va stocker la charge du point de service et le champ serviceGUID stockera le GUID du point de service mis à jour.

  6. Cliquez sur Finish (Terminer) pour créer la table.
  7. Dans la fenêtre Catalog (Catalogue), vérifiez que la table LoadHistory a bien été créée.

    Vous allez maintenant activer le suivi de l’éditeur dans la table LoadHistory pour journaliser et identifier qui met à jour la table et à quel moment.

  8. Dans la fenêtre Catalog (Catalogue), cliquez avec le bouton droit sur la table LoadHistory, puis cliquez sur Manage (Gérer).
  9. Dans la fenêtre Table Properties (Propriétés des tables), cochez la case Editor Tracking (Suivi de l’éditeur).

    Paramètre de suivi de l’éditeur

    Les champs qui permettent le suivi de l’éditeur sont ajoutés à la table.

  10. Cliquez sur OK pour fermer Table Properties (Propriétés de la table).
  11. Dans la fenêtre Catalog (Catalogue), cliquez avec le bouton droit de la souris sur LoadHistory, pointez sur Data Design (Conception de données), puis sélectionnez Fields (Champs).

    La vue Fields (Champs) de la table s’ouvre.

    Outil de création de champs

    Les champs qui ont été ajoutés pour la prise en charge du suivi de l’éditeur incluent un identifiant utilisateur global et des champs permettant d’identifier l’utilisateur qui a généré et modifié l’entité et la date à laquelle les modifications ont été apportées.

  12. Fermez la vue Champs.

Créer une règle attributaire de calcul

Vous allez ensuite créer une règle attributaire de calcul, qui détecte une modification de l’historique de la charge des points de service et journalise ces informations dans une table distincte. Les règles attributaires de calcul permettent de renseigner automatiquement les configurations d’attribut sur une entité.

  1. Dans la fenêtre Catalog (Catalogue), développez le jeu de classes d’entités UtilityNetwork.
  2. Cliquez avec le bouton droit sur ElectricDevice, pointez sur Data Design (Conception de données), puis cliquez sur Attribute Rules (Règles attributaires).

    La vue Attribute Rules (Règles attributaires) s’affiche.

  3. Si nécessaire, dans la vue Attribute Rules (Règles attributaires), cliquez sur l’onglet Calculation (Calcul).

    Plusieurs règles de calcul existantes s’y trouvent. Elles ont été créées lors de la configuration initiale du réseau technique et sont utilisées pour préserver l’intégrité des données.

  4. Cliquez sur la flèche de la liste déroulante Add Rule (Ajouter une règle) et sélectionnez Add Immediate Calculation Rule (Ajouter une règle de calcul immédiat).

    Ajouter une option de règle de calcul immédiat

    La fenêtre New Rule (Nouvelle règle) s’affiche.

    Les règles de calcul immédiat sont évaluées automatiquement et déclenchées par des opérations de modification, comme l’insertion, la mise à jour et la suppression. Vous allez créer une règle déclenchée par des opérations d’insertion et de mise à jour.

  5. Dans la fenêtre New Rule (Nouvelle règle), saisissez les paramètres suivants :
    • Dans le champ Rule Name (Nom de la règle), saisissez Log Load History Prevent load spikes (Journaliser l’historique de la charge).
    • Dans le champ Description, saisissez Records all changes to the peak load attribute (Consigner toutes les modifications apportées à l’attribut de charge de pointe).
    • Dans le champ Subtype (Sous-type), sélectionnez Low Voltage Service (Service de basse tension).
    • Comme Field (Champ), choisissez peakload.

    La mise à jour du champ Rule Name (Nom de la règle) entraîne celle du titre de la fenêtre par Log Load History (Journaliser l’historique de la charge).

    Paramètres de la fenêtre Nouvelle règle

  6. Dans la fenêtre Log Load History (Journaliser l’historique de la charge), cliquez sur le bouton Expression pour ouvrir la fenêtre Expression Builder (Générateur d’expressions).
  7. Dans la fenêtre Expression Builder (Générateur d’expressions), dans le champ Expression, saisissez l’expression Arcade suivante :
    
    return {
             "result": $feature.peakload,
             "edit" : [
                 {
                    "className": "LoadHistory",
                    "adds": [{
                          "attributes": {"peakLoad": $feature.peakLoad, "serviceGUID": $feature.globalID }   
                        }]
                  }
               ]
    
    }

    Expression Arcade dans la fenêtre Générateur d’expressions

    Remarque :

    Ce script utilise un renvoi de dictionnaire de type modifications, qui est un dictionnaire spécial (au format JSON) incluant les propriétés suivantes :

    • "result" : représente la valeur que vous souhaitez renvoyer comme charge de pointe de l’entité que vous modifiez. Dans cet exemple, vous ne modifiez pas le résultat. Vous souhaitez renvoyer la valeur peakload pour l’entité de service modifiée et mettre à jour le champ en utilisant le nom de la table LoadHistory.
    • "edit" : représente un tableau des modifications à apporter en raison de la modification initiale. Dans cet exemple, vous souhaitez modifier le champ className de la table LoadHistory en exécutant une série de fonctions "adds" avec les attributs spécifiés.
  8. Cliquez sur le bouton Verify (Vérifier) pour valider le script et vous assurer que votre expression s’exécutera correctement. Cliquez sur OK.
  9. Dans la fenêtre Log Load History (Journaliser l’historique de la charge), dans les paramètres Triggers (Déclencheurs), cochez les cases Insert (Insérer) et Update (Mettre à jour).
  10. Sous Execution (Exécution), cochez la case Exclude from application evaluation (Exclure de l’évaluation des applications).

    Sections Déclencheurs et Exécution

  11. Sur le ruban, dans l’onglet Attribute Rules (Règles attributaires), dans le groupe Attribute Rules (Règles attributaires), cliquez sur Save (Enregistrer).
    Remarque :

    L’enregistrement de la règle peut prendre plusieurs minutes.

  12. Fermez la fenêtre de la vue Attribute Rule (Règle attributaire) et enregistrez le projet.

Tester la règle de calcul

Pour tester la règle attributaire de calcul immédiat que vous venez de créer, vous devez mettre à jour un service de basse tension en modifiant l’attribut de charge de pointe peakload. Vous confirmerez ensuite que la modification a bien été appliquée à la table LoadHistory à l’aide de la règle de calcul.

  1. Dans la fenêtre Catalogue, développez Cartes. Double-cliquez sur la carte Electric Network Editor (Éditeur de réseau d’électricité).

    La carte Electric Network Editor (Éditeur de réseau d’électricité) s’affiche.

  2. Sur le ruban, cliquez sur l’onglet Map (Carte). Dans le groupe Navigate (Naviguer), cliquez sur Bookmarks (Géosignets) et choisissez Test Attribute Rule (Tester une règle attributaire).

    L’étendue de la carte est mise à jour et centrée sur l’emplacement d’une entité de service de basse tension.

    Sélectionnez le service de basse tension.

  3. Dans l’onglet Map (Carte), dans le groupe Selection (Sélection), cliquez sur l’outil Select (Sélection) puis sur le point du service de basse tension connecté à Electric Device 1267 (Dispositif électrique 1267).
  4. Dans l’onglet Map (Carte), dans le groupe Selection (Sélection), cliquez sur Attributes (Attributs).
  5. Dans l’onglet Attributes (Attributs), vérifiez que l’entité sélectionnée a, pour valeur Global ID (ID global) {306A7664-7DDE-46EB-B415-A75F19658095}.

    Attribut Global ID (ID global) dans la fenêtre Attributes (Attributs)

  6. Si nécessaire, cochez la case Auto Apply (Appliquer automatiquement) pour valider automatiquement les modifications.
  7. Dans le champ Peak Load (kW) (Charge de pointe (kW)), saisissez 10 et appuyez sur Entrée.

    Lorsque vous mettez à jour les valeurs de l’attribut Peak Load (kW) [Charge maximale (kW)], la nouvelle règle attributaire génère les enregistrements dans la table LoadHistory pour suivre les modifications apportées aux points de service basse tension.

  8. Dans le champ Peak Load (kW) (Charge de pointe (kW)), saisissez 10 et appuyez sur Entrée.
  9. Dans la fenêtre Contents (Contenu), sous Standalone Tables (Tables autonomes), cliquez avec le bouton droit sur la table LoadHistory et sélectionnez Open (Ouvrir).

    La table comporte deux lignes représentant les mises à jour apportées à l’attribut peakLoad. Elles ont été générées lors de la création de la règle de calcul. De plus, la table comprend des champs contenant des détails sur l’éditeur et la date et l’heure auxquelles les modifications ont été apportées.

    Table LoadHistory

  10. Modifiez encore quelques fois l’attribut Peak Load (kW) [Charge maximale (kW)] pour l’entité de points de service de basse tension et confirmez que la table LoadHistory est bien mise à jour en l’actualisant après chaque modification apportée.

    La règle de calcul actuelle configurée pour les points de service de basse tension ajoute une nouvelle ligne à la table chaque fois qu’un point est modifié. Votre nouvelle règle de calcul va suivre toutes les modifications pour la charge de pointe du groupe de ressources Low Voltage Service (Service de basse tension). À l’aide du global $originalFeature, vous pouvez, par exemple, configurez la règle afin de ne générer une valeur de journal que lorsque l’attribut peakLoad est modifié.

  11. Enregistrez le projet.
    Remarque :

    Dans un scénario réel, il est probable que les informations de charge de ces services soient mises à jour de façon automatisée. La règle de contrainte que vous avez créée peut empêcher l’intégration de valeurs maximales anormales au système en générant des erreurs en pareil cas.

    Votre règle de calcul automatise le signalement de ces valeurs et fournit des informations aux schémas opérationnels et aux tendances des clients. La table LoadHistory permet de partager ces informations avec des ingénieurs et des membres de l’équipe d’exploitation et de fournir une ressource pour l’analyse supplémentaire si des valeurs anormales indiquent un problème.

    Vous pouvez également utiliser la table LoadHistory pour fournir des analyses similaires au personnel du service client et aux employés sur le terrain. Ainsi, un commentaire spatial peut être utilisé pour aider les clients lorsqu’ils appellent concernant la facturation ou qu’ils utilisent des appareils d’inspection sur le terrain lorsqu’ils appellent pour des raisons de service.

Vous allez maintenant configurer des fenêtres contextuelles pour présenter des informations dérivées de la table LoadHistory afin de fournir un commentaire spatial et d’aider le personnel du service client et des employés de terrain lorsqu’ils appellent concernant la facturation ou pour des raisons de service. Cela peut fournir du contexte à l’histoire du service pour les personnes qui utilisent ces données.


Configurer une fenêtre contextuelle pour afficher l’historique de charge

Vous avez précédemment créé une règle de calcul pour signaler la valeur de pointe de charge lors de la mise à jour des services de basse tension. Une règle attributaire de calcul a détecté un changement dans l’historique de charge de point de service et a journalisé les informations dans la table. Vous allez maintenant configurer des fenêtres contextuelles pour présenter les informations dérivées de la table LoadHistory.

Afficher et résumer l’historique de charge

Comme dernière étape, vous allez configurer des fenêtres contextuelles pour le groupe de ressources Low Voltage Service (Service de basse tension) et créer trois expressions pour extraire et afficher les informations collectées dans la table LoadHistory.

  1. Dans la fenêtre Contents (Contenu), développez Electric Device (Dispositif électrique) (si nécessaire), cliquez avec le bouton droit sur la sous-couche Low Voltage Service (Service de basse tension), puis cliquez sur Configure Pop-ups (Configurer des fenêtres contextuelles).

    Configurer les fenêtres contextuelles

    La fenêtre Configure Pop-ups (Configurer les fenêtres contextuelles) s’ouvre.

  2. Dans la fenêtre Configure Pop-ups (Configurer des fenêtres contextuelles), cliquez sur Expressions pour créer une expression Arcade.

    Bouton d’ajout d’une nouvelle expression Arcade

  3. Cliquez sur New (Nouveau) pour ouvrir la fenêtre Expression Builder (Générateur d’expressions).

    Bouton Nouvelle expression

    La fenêtre Expression Builder (Générateur d’expressions) s’affiche.

    La première expression que vous allez créer sera utilisée pour signaler la valeur Peak Load (kW) (Charge de pointe (kW)) maximale pour l’entité de service sélectionnée dans la table LoadHistory.

  4. Dans la fenêtre Expression Builder (Générateur d’expressions), dans le champ Expression, saisissez les paramètres suivants :
    • Comme Name (Nom), saisissez Max.
    • Comme Title (Titre), saisissez MaxLoad (Charge maximale).

    Le titre est le nom d’affichage d’un champ virtuel utilisé dans la fenêtre contextuelle pour afficher les résultats d’une expression.

  5. Dans la zone de texte Expression, saisissez le script suivant :
    
    //Create a variable to reference the LoadHistory table
    
    var fshistory = FeatureSetByName ($datastore,"LoadHistory", ["peakload"])
    
    //Create a variable to reference the GlobalID of the selected feature in the map
    
    var GlobalID = $feature.globalID
    
    // We are interested in rows from LoadHistory.serviceGUID that match the Service feature selected.  This filters results to return only ServiceGUIDs that match the $feature.GlobalID
    
    var rows = filter(fshistory,"serviceGUID = @GlobalID")
    //Guard logic to display 0 if no values found in the LoadHistory table
    if (count(rows) == 0)return 0
    
    //Return filtered values from LoadHistory.peakload in the Low Voltage Service pop-up in bold
    
    return "<b>" +  max (rows, "peakload") + "</b>"
    Remarque :

    Cette expression utilise la fonction max() pour renvoyer la valeur maximale de la charge de pointe. Pour renvoyer la valeur minimale définie pour la charge de pointe, vous pouvez remplacer max() par min().

    Paramètres du Générateur d’expressions pour la charge maximale

  6. Cliquez sur le bouton Verify (Vérifier) pour valider le script et vous assurer que votre expression s’exécutera correctement, puis cliquez sur OK.
  7. Créez maintenant tout seul une seconde expression pour signaler la valeur minimale définie pour Peak Load (kW) (Charge de pointe (kW)) sur l’entité de service sélectionnée dans la table LoadHistory.
    Conseil :

    Pensez à utiliser la fonction min().

    Vous allez ensuite ajouter une expression qui communique le nombre de fois où le service sélectionné a été modifié.

  8. Cliquez sur New (Nouveau) pour ouvrir la fenêtre Expression Builder (Générateur d’expressions).

    La première expression que vous allez créer sera utilisée pour signaler la valeur Peak Load (kW) (Charge de pointe (kW)) maximale pour l’entité de service sélectionnée dans la table LoadHistory.

  9. Dans la fenêtre Expression Builder (Générateur d’expressions), dans le champ Expression, saisissez les paramètres suivants :
    • Comme Name (Nom), saisissez Count (Nombre).
    • Comme Title (Titre), saisissez #Updates (Nombre de mises à jour).
  10. Dans la zone de texte Expression, saisissez le script suivant :
    
    //Create a variable to reference the LoadHistory table
    
    var fshistory = FeatureSetByName ($datastore,"LoadHistory", ["peakload"])
    
    //Create a variable to reference the GlobalID of the selected feature in the map
    
    var GlobalID = $feature.globalID
    
    // We are interested in rows from LoadHistory.serviceGUID that match the Service feature selected.  This filters results to return only ServiceGUIDs that match the $feature.GlobalID
    
    var rows = filter(fshistory,"serviceGUID = @GlobalID")
    
    //Guard logic to display 0 if no values found in the LoadHistory table
    if (count(rows) == 0)return 0
    
    //Return filtered values from LoadHistory.peakload in the Low Voltage Service pop-up
    
    return "<b>" +  count (rows) + "</b>"

    Lorsque vous avez terminé, vérifiez les paramètres de la fenêtre Expression Builder (Générateur d’expression).

    Paramètres du Générateur d’expressions pour le nombre

  11. Cliquez sur le bouton Verify (Vérifier) pour valider le script et vous assurer que votre expression s’exécutera correctement, puis cliquez sur OK.
  12. Vérifiez vos expressions dans la fenêtre Configure Pop-ups (Configurer des fenêtres contextuelles).

    Expressions de la fenêtre contextuelle

    Remarque :

    Si vous n’avez pas créé d’expression MinLoad (Charge minimale), votre liste peut différer.

  13. Générez maintenant tout seul une expression qui calcule la valeur moyenne de Peak Load (kW) (Charge de pointe (kW)) pour l’entité de service sélectionnée.

    Pour la dernière ligne de code, utilisez return "<b>" + max (rows, "peakload") + "</b>" et remplacez max par average.

  14. Enregistrez votre projet.

    Maintenant que vos expressions contextuelles sont configurées, vous allez vérifier que les résultats prévus sont générés et affichés correctement dans la fenêtre contextuelle.

  15. Dans l’onglet Map (Carte), dans le groupe Navigate (Naviguer), cliquez sur Bookmarks (Géosignets), puis sur Test Attribute Rule (Tester une règle attributaire).

    L’étendue de la carte est mise à jour et centrée sur l’emplacement du point de service de basse tension.

  16. Dans l’onglet Map (Carte), dans le groupe Navigate (Naviguer), cliquez sur l’outil Explore (Explorer) et sélectionnez le point de service de basse tension sur la carte dont la valeur Global ID (ID global) est égale à {306A7664-7DDE-46EB-B415-A75F19658095}.

    Sélectionner l’entité de service de basse tension

    La fenêtre Pop-up (Fenêtre contextuelle) du service de basse tension sélectionné apparaît.

  17. Dans la fenêtre Pop-up (Fenêtre contextuelle), passez en revue les champs d’expression.

    Examinez la fenêtre contextuelle et prenez note des champs d’expression MaxLoad (Charge maximale), MinLoad (Charge minimale) et #Updates (Nombre de mises à jour) avec leurs valeurs associées dérivées de la table LoadHistory. De vous-même, créez une expression qui calcule la valeur moyenne de Peak Load (kW) (Charge de pointe (kW)) pour l’entité de service sélectionnée.

    Expressions ajoutées à la fenêtre contextuelle

    Remarque :

    En vous basant sur la technique que vous avez utilisée ci-dessus, vous pouvez retirer le mise en gras des valeurs renvoyées dans la fenêtre contextuelle et les distinguer plus encore en faisant passer leur couleur d’affichage en rouge si une valeur dépasse un certain nombre. Pour ce faire, utilisez la logique if-else et la balise <font color> dans vos expressions.

Dans ce didacticiel, vous avez créé une règle attributaire de contrainte pour maintenir l’intégrité des données et afficher les erreurs lorsque des pointes dans la charge se produisaient. Vous avez ainsi obtenu un exemple illustrant comment une règle attributaire de contrainte peut être utilisée avec des domaines, des sous-types et des valeurs contingentes pour maintenir l’intégrité des données dans une classe d’entités de géodatabase.

Vous avez alors créé une table et configuré une règle attributaire de calcul pour détecter un changement dans la charge de pointe d’un point de service et journaliser ce changement ainsi que l’ID global de l’entité dans la nouvelle table. Une fois ces règles attributaires en place, vous avez créé une série d’expressions contextuelles à l’aide de Arcade pour dériver des informations de la table contenant l’historique de charge de pointe et présenter ces informations via des fenêtres contextuelles dans ArcGIS Pro.

Ce didacticiel vous a expliqué les notions fondamentales qui vous permettront de commencer à créer des règles attributaires plus élaborées dans la géodatabase.

Vous trouverez d’autres didacticiels dans la bibliothèque des didacticiels.