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.
Explorer les sous-types
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 de basse tension) n’est disponible.
La classe d’entités n’est pas disponible, car ArcGIS Utility Network met en œuvre un modèle de classification à l’aide des groupes de couches 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.
Tout d’abord, vous allez télécharger les données et explorer les sous-types d’une classe d’entités figurant dans le jeu de classes d’entités UtilityNetwork.
- Téléchargez les règles attributaires dans le paquetage de projet ArcGIS Utility Network.
- 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.
Le projet ne dispose d’aucune carte, pour le moment. À ce stade, vous allez vous contenter des données de la fenêtre Catalog (Catalogue).
- 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 visible, sur le ruban, cliquez sur l’onglet View (Vue). Dans le groupe Windows (Fenêtres), cliquez sur Catalog Pane (Fenêtre Catalogue).
- Sous electricnetworkeditor.gdb, développez le jeu de classes d’entités UtilityNetwork.
Les classes d’entités et les classes de relations organisées dans le jeu de classes d’entités représentent la structure de la géodatabase contenant le réseau de distribution.
- 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).
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.
- Dans la vue Subtypes (Sous-types), vérifiez le 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é.
- Faites défiler la colonne Low Voltage Service (Service de basse tension) correspondant à *ASSETGROUP 22.
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.
- Pour *ASSETGROUP 22, faites défiler la page jusqu’au champ peakload.
Aucun domaine n’est affecté au 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. Par la suite, vous améliorerez la détection de cette erreur en créant une règle attributaire de calcul afin de remplir une ligne d’une table pour consigner dans le journal les modifications apportées au champ peakload.
- Fermez la vue Subtypes (Sous-types).
Ajouter une règle attributaire de contrainte
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.
- 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).
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.
- 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).
- Cliquez sur la règle pour la sélectionner. Dans la fenêtre ID_Device_22, observez les sections Expression et Triggers (Déclencheurs).
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).
- Dans la vue Attribute Rules (Règles attributaires), cliquez sur l’onglet Constraint (Contrainte), puis sur Add Rule (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.
- 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).
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.
- Dans la fenêtre Prevent load spikes (Empêcher les valeurs maximales de charge), pour Expression, cliquez sur le bouton Expression.
- 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;
- Cliquez sur le bouton Verify (Confirmer) pour valider l’expression.
L’expression est valide.
- Cliquez sur 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.
- Dans la section Triggers (Déclencheurs), cochez la case Update (Mettre à jour). Dans la section Execution (Exécution), cochez la case Exclude from application evaluation (Exclure de l’évaluation des applications).
- 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).
- 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.
- Fermez la vue des Attribute Rules (Règles attributaires).
- Sur Quick Access Toolbar (Barre d’outils Accès rapide), cliquez sur le bouton Save Project (Enregistrer le projet).
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.
- Dans la fenêtre Catalogue, développez Cartes.
- Cliquez avec le bouton droit sur la carte Electric Network Editor (Éditeur de réseau d’électricité) et sélectionnez Open (Ouvrir).
La carte Electric Network Editor (Éditeur de réseau d’électricité) s’affiche.
- Sur le ruban, onglet Map (Carte), 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 un point de service de basse tension situé au sud de l’école élémentaire Beebe.
- Sur le ruban, dans le groupe Selection (Sélection), cliquez sur le bouton Select (Sélectionner).
- Sur la carte, cliquez sur le point de service de basse tension.
L’entité apparaît en surbrillance bleue, ce qui indique qu’elle est sélectionnée.
- Sur le ruban, dans le groupe Selection (Sélection), cliquez sur Attributes (Attributs).
La fenêtre Attributes (Attributs) apparaît.
- En bas de la fenêtre Attributes (Attributs), vérifiez que l’option Auto Apply (Appliquer automatiquement) est cochée.
Ce paramètre contrôle que les modifications apportées aux entités sont appliquées automatiquement.
- Faites défiler l’affichage jusqu’à l’attribut Peak Load (kW) (Charge de pointe [kW]). Cliquez sur <Null> (<Nulle>), saisissez 10 et appuyez sur Entré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.
- 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).
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.
- 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]).
- Sur le ruban, cliquez sur l’onglet Edit (Modifier). Dans le groupe Manage Edits (Gérer les mises à jour), cliquez sur Discard (Ignorer).
- Dans la fenêtre Discard Edits (Ignorer les mises à jour), cliquez sur Yes (Oui).
Vos modifications sont ignorées.
- Fermez la carte Electric Network Editor (Éditeur de réseau d’électricité). 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.
- Dans la fenêtre Catalog (Catalogue), sous Databases (Bases de données), cliquez avec le bouton droit sur electricnetworkeditor.gdb, placez le curseur sur New (Nouveau) et choisissez Table.
L’assistant Create Table (Créer une table) s’affiche.
- 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).
- Cliquez sur Next (Suivant).
Vous allez maintenant ajouter deux nouveaux champs à la table.
- 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.
- Dans Data Type (Type de données), choisissez Long.
- 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
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.
- Cliquez sur Finish (Terminer) pour créer la table.
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.
- Dans la fenêtre Catalog (Catalogue), cliquez avec le bouton droit sur la table LoadHistory, puis cliquez sur Manage (Gérer).
- Dans la fenêtre Table Properties (Propriétés des tables), cochez la case Editor Tracking (Suivi de l’éditeur).
Les champs qui permettent le suivi de l’éditeur sont ajoutés à la table.
- Cliquez sur OK pour fermer la fenêtre Table Properties (Propriétés de la table).
- 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.
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.
- Fermez la vue Fields (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é.
- Dans la fenêtre Catalog (Catalogue), développez le jeu de classes d’entités UtilityNetwork.
- Cliquez avec le bouton droit sur ElectricDevice, placez le curseur sur Data Design (Conception de données) et choisissez Attribute Rules (Règles attributaires).
La vue Attribute Rules (Règles attributaires) s’affiche.
- 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.
- 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).
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.
- 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).
- Pour Expression, cliquez sur le boutonExpression.
- 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 } }] } ] }
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.
- Cliquez sur le bouton Verify (Vérifier) pour valider le script. Une fois l’expression vérifiée, cliquez sur OK.
- 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).
- Sous Execution (Exécution), cochez la case Exclude from application evaluation (Exclure de l’évaluation des applications).
- 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.
- Fermez la vue Attribute Rules (Règles attributaires) 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 allez 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.
- Dans la fenêtre Catalog (Catalogue), sous Maps (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.
- Le cas échéant, accédez au géosignet Test Attribute Rule (Tester une règle attributaire) et sélectionnez l’entité de service de basse tension que vous avez utilisée précédemment lors du test.
- Dans l’onglet Map (Carte), dans le groupe Selection (Sélection), cliquez sur Attributes (Attributs).
- Dans la fenêtre Attributes (Attributs), vérifiez que l’entité sélectionnée a, pour valeur Global ID (ID global) {306A7664-7DDE-46EB-B415-A75F19658095}.
- Si nécessaire, cochez la case Auto Apply (Appliquer automatiquement) pour valider automatiquement les modifications.
- 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.
- Dans le champ Peak Load (kW) (Charge de pointe (kW)), saisissez 30 et appuyez sur Entrée.
- 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.
- 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é.
- Fermez la table. 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
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.
- Dans la fenêtre Contents (Contenu), développez la couche Electric Device (Dispositif électrique). Cliquez avec le bouton droit sur la sous-couche Low Voltage Service (Service de basse tension) et choisissez Configure Pop-ups (Configurer des fenêtres contextuelles).
La fenêtre Configure Pop-ups (Configurer les fenêtres contextuelles) s’ouvre.
- Dans la fenêtre Configure Pop-ups (Configurer des fenêtres contextuelles), cliquez sur Expressions pour créer une expression Arcade.
- Cliquez sur Nouveau.
La fenêtre Expression Builder (Générateur d’expressions) s’affiche.
La première expression que vous allez créer permettra de signaler la valeur Peak Load (kW) (Charge de pointe [kW]) maximale pour l’entité de service sélectionnée dans la table LoadHistory.
- 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.
- 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().
- Cliquez sur le bouton Verify (Vérifier) pour valider le script. Une fois l’expression validée, cliquez sur OK.
Vous allez maintenant créer 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.
- Dans la fenêtre Configure Pop-ups (Configurer des fenêtres contextuelles), cliquez sur New (Nouveau). Dans la fenêtre Expression Builder (Générateur d’expressions), attribuez à l’expression le nom Min et le titre MinLoad.
- 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>" + min (rows, "peakload") + "</b>"
- Vérifiez l’expression et cliquez sur OK.
Vous allez ensuite ajouter une expression qui communique le nombre de fois où le service sélectionné a été modifié.
- Dans la fenêtre Configure Pop-ups (Configurer des fenêtres contextuelles), cliquez sur New (Nouveau). 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).
- 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>"
- Cliquez sur le bouton Verify (Vérifier) pour valider le script. Cliquez sur OK.
Pour finir, vous allez créer une expression pour calculer la valeur moyenne de Peak Load (kW) (Charge de pointe [kW]) pour l’entité de service sélectionnée.
- Créez une nouvelle expression avec le nom Avg (Moy) et le titreAvgLoad (MoyCharge) 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>" + average (rows, "peakload") + "</b>"
- Vérifiez l’expression et cliquez sur OK.
La fenêtre Configure Pop-ups (Configurer les fenêtres contextuelles) répertorie toutes vos expressions.
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.
- Sous l’onglet Map (Carte), dans le groupe Navigate (Naviguer), cliquez sur l’outil Explore (Explorer). Sur la carte, cliquez sur le point de service de basse tension que vous avez sélectionné auparavant.
La fenêtre contextuelle du service de basse tension sélectionné apparaît.
- Faites défiler la fenêtre contextuelle jusqu’en bas.
Les champs que vous avez ajoutés présentent leurs valeurs associées dérivées de la table LoadHistory.
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.
- Fermez la fenêtre contextuelle et annulez vos mises à jour. Enregistrez votre projet.
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 d’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.