Suite

Comment changer de style basé sur des règles en boucle ?


Je travaille sur un script QGIS qui pourrait activer/désactiver les styles basés sur des règles de la couche vectorielle dans une boucle (une couche active par itération). À chaque itération, ce scénario devrait :

  1. Activez l'une des règles de style préétablies pour un calque vectoriel donné et désactivez toutes les autres ;
  2. Enregistrer la vue actuelle en tant que capture d'écran JPEG ;

Dans mon cas particulier, la couche vectorielle est une table PostGIS qui contient les contours dérivés d'une couche raster. Les règles sont basées sur les valeurs distinctes des isolignes. Je prends une capture d'écran de la carte pour chaque règle activée et je les mets enfin toutes dans le gif animé.

Étant donné que la liste des styles basés sur des règles peut être très longue, je regarde vers l'extrait de code PyQGIS qui pourrait passer par celui en boucle.


Même sans programmation, je pense qu'il devrait être possible d'y parvenir en utilisant l'idée présentée dans http://nathanw.net/2014/09/23/qgis-atlas-on-non-geometry-tables/ : utilisez la fonctionnalité Atlas pour boucle à travers une couche de couverture contenant des valeurs pour le rendu basé sur des règles, par exemple vos contours.

J'imagine que vous voudrez comparer l'un des attributs de contour à une valeur dans la couche de couverture et contrôler, par exemple. la transparence de la couleur de la ligne. Pour ce faire, vous pouvez développer l'exemple que Nathan a montré dans son article :

CASE WHEN "contour_value" = attribut($atlasfeature,'value') THEN color_rgba(0,0,255,255) ELSE color_rgba(0,0,255,0) END

Site Web basé sur Websocket derrière un proxy inverse dans IIS

J'essaie de faire fonctionner un site Web basé sur des sockets Web qui est en cours de proxy inversé par un serveur IIS.

  • IIS v10.0.19041.1 s'exécutant sur Windows 10 Pro .
  • Certificat SSL de LetsEncrypt et installé/géré par Win-ACME dans IIS.
  • Serveur dédié FoundryVTT v0.7.3 s'exécutant dans une prison FreeNAS 11.4-RELEASE-p2 (il s'agit du site Web basé sur Websocket).
  • FoundryVTT utilise socket.io pour node.js .
  • Le serveur FoundryVTT est à l'adresse IP 192.168.2.36 et au port 30000.

Observation

  • Le serveur FoundryVTT fonctionne correctement sur le réseau local.
  • Le certificat SSL est valide et fonctionnel et le serveur est accessible depuis le WAN.
  • Tout fonctionne bien lors du chargement de la page de configuration de FoundryVTT via le WAN, mais dès que j'ai entré ma clé d'accès administrateur, une page de configuration vide s'affiche. La communauté FoundryVTT mentionne qu'il s'agit d'un problème connu avec des proxys mal configurés.
  • En observant le trafic Web à l'aide de Fiddler v5.0.2020.18177, j'observe que j'arrive au point d'une réponse HTTP 101 pour passer du protocole à la prise Web.
  • Double-cliquer sur la capture ne me permet pas d'accéder à l'onglet Websocket pour y inspecter le trafic. Je soupçonne qu'aucune connexion n'est établie car je vois plusieurs autres réponses de protocole de commutation 101 après la première avec de légers retards entre les deux.

Qu'ai-je essayé

J'ai vérifié que la fonctionnalité WebSocket Protocol est installée.

J'ai vérifié que les Websockets sont activés sur mon site Web dans IIS.

J'ai essayé de jouer avec le web.config en suivant diverses suggestions faites sur Internet (c'est-à-dire ceci, ceci et cela). web.config tel qu'il est maintenant :

J'ai redémarré le site Web IIS, utilisé le mode navigation privée dans mon navigateur, désactivé les modules complémentaires et utilisé un autre navigateur.

J'ai regardé des guides sur la façon de le configurer pour NGINX, Caddy et Apache comme inspiration (IIS n'est pas présent sur le wiki).

J'ai posé des questions sur leur chat Discord, mais personne ne semble en savoir assez sur IIS.


1 réponse 1

Je ne vois pas d'où vient le dt et quand il sera mis à jour. Vous ne le modifiez pas dans votre fonction, et si sa valeur ne change pas, alors il n'est pas nécessaire d'évaluer cette division à chaque itération de la boucle while :

Vous pouvez précalculer une fois avant la boucle.

De plus, dans le code, je ne vois pas les types de dt et NANOS_PER_SECOND , mais si l'un d'entre eux est double, vous n'avez pas besoin des (doubles) casts. S'ils sont tous les deux des entiers, il suffit de lancer l'un d'eux.

Il en va de même pour les distributions lorsque vous calculez alpha , mais ce n'est qu'un problème de style mineur, cela n'améliorera pas les performances.


Conception du programme

Vous utilisez beaucoup les valeurs enum LOCATION dans le programme. Cependant, MATRIX et SCORE ne sont pas liés, il serait donc plus logique de les #définir au lieu d'utiliser une énumération puisque vous n'utilisez de toute façon aucun des avantages d'une énumération.

J'ai également remarqué que vous n'utilisez aucune des fonctionnalités C99 ou C11, vous codez donc essentiellement comme dans les années 80.

Gotoxy()

Vous pouvez réduire le code de quatre lignes à une, tout en restant lisible, comme ceci :

De plus, comme il s'agit d'une fonction simple qui est souvent appelée, il est recommandé de la marquer comme en ligne afin que le compilateur puisse l'optimiser dans n'importe quel contexte qu'il juge approprié. Cela s'applique également à d'autres fonctions.

InitierMatrix()

Vous auriez pu utiliser la portée améliorée de la boucle for, comme ceci :

ce qui a aussi l'avantage de réduire la portée des variables utilisées dans la boucle, ce qui est toujours une bonne chose.


2 réponses 2

Il n'y a pas assez d'informations ici pour répondre à votre question. Mais nous pouvons essayer après avoir fait quelques hypothèses.

D'après ce que je comprends, la photo montre la boîte de sortie et le broyeur à ordures se branche dans la prise supérieure. Vraisemblablement, le câble sortant en haut de cette boîte provient de l'alimentation (sinon, l'élimination ne fonctionnerait jamais). Le reste de votre question implique qu'il existe également un boîtier de commutation, donc je suppose que le câble sortant à droite mène à un interrupteur à 2 pôles ? Vous essayez de comprendre comment câbler cet interrupteur de manière à ce que la sortie supérieure de la boîte de sortie puisse être commutée.

Si ma compréhension de votre question est correcte, alors le switch est sur une boucle de switch et le schéma que vous avez posté ne s'applique pas. Au lieu de cela, câblez comme suit. Connectez l'alimentation noire à la boucle de commutation noire. Identifiez à nouveau le câble blanc de la boucle du commutateur comme noir et connectez-le à la sortie supérieure chaude. Laissez l'alimentation blanche connectée à la sortie neutre. Avec le cavalier hot tab en place, vous obtiendrez une prise commutée (les deux prises).

Si vous souhaitez commuter uniquement la prise supérieure, brisez la languette chaude sur la prise et connectez l'alimentation noire au côté chaud inférieur de la prise. Utilisez une queue de cochon puisque le noir d'alimentation alimente maintenant la boucle de commutation et le réceptacle inférieur.


Le plus délicat est de savoir si un script ou un style particulier a été mis en file d'attente par le thème.

Les thèmes et les plugins utilisent tous les deux les mêmes crochets et fonctions, ils ne sont donc pas explicitement étiquetés comme appartenant à un thème ou à un plugin spécifique. Cela signifie que la seule façon de savoir si un script ou un style provient du thème est de vérifier l'URL pour voir si l'URL du script/style pointe vers quelque part dans le répertoire du thème.

Une façon de le faire est de parcourir $wp_scripts->registered et $wp_styles->registered , et de vérifier l'URL de chaque script et style par rapport à get_theme_root_uri() qui vous indique l'URL du dossier des thèmes. Si le script/style semble se trouver dans ce dossier, vous pouvez le retirer de la file d'attente :

Cela ne fonctionnera que si la feuille de style ou le script se trouve à l'intérieur du thème. Si le thème met en file d'attente des scripts ou des styles à partir d'un CDN, je ne sais pas s'il est possible de les cibler.


Votre code a fonctionné pour moi avec quelques fichiers minimaux, mais les fichiers input ting au milieu d'une boucle peuvent mal tourner, comme Phelype l'a souligné dans son commentaire.

J'utiliserais une approche un peu plus sûre en définissant une macro dans la boucle qui collecte les divers input et en appelant cette macro lorsque la boucle est terminée. J'ai modifié votre définition de telle sorte que MakeLecture<1> <4> insère les fichiers de 1 à 4 (et non 3 comme dans votre cas) car cela me semble plus raisonnable mais vous pouvez simplement supprimer la ligne advancecount @[email protected] si tu ne veux pas ça.

Un one-liner avec expl3 (peut être imbriqué) :

Comme je n'ai pas vos fichiers input disponibles avec tous les exemples ci-dessous, j'ai enveloppé input -commands dans message -commands qui, plutôt que de l'avoir exécuté, affiche la commande input correspondante sur le terminal/in la fenêtre de la coque à partir de laquelle le latex est appelé pour la compilation. ( ^^J indique le début d'une nouvelle ligne sur le terminal.)

Je fais d'abord ça avec ton code :

Ça marche.
Avec (la variation légèrement modifiée de) votre code également, j'obtiens la sortie affichée au bas de cette réponse.

Donc, ma réponse à votre question "Alors, qu'est-ce qui ne va pas avec cette boucle?" est :

Il semble qu'il n'y ait rien de mal avec votre boucle en principe.

Mais la macro loop a quelques—eh— particularités qui sont révélés par showloop — showloop affiche la définition de loop sur le terminal :

  1. loop traite un argument qui est délimité par le jeton epeat .
  2. loop définit une macro iterate à partir de cet argument et repose sur le fait que la macro iterate n'est pas redéfinie jusqu'à ce que la boucle se termine. Lorsque la boucle se termine, iterate est égal à elax qui est une séquence de contrôle sans opération qui n'est pas supprimée lors de la macro-expansion dans l'œsophage de TeX mais qui se retrouve dans l'estomac de TeX et y est supprimée.

Imbrication boucle . epeat directement peut ne pas fonctionner car le if. -condition dans loop.. epeat peut provoquer une erreur if. fi -matching dans le texte de définition de iterate

L'imbrication de macros à l'intérieur de loop.. epeat qui, à un moment donné, se développe en loop ne fonctionne pas non plus :

Les instances externes de loop reposent sur le fait que iterate n'est pas redéfini tant que la boucle n'est pas terminée.
Les instances internes de loop redefine iterate en permanence dans la portée/le groupe actuel. Par exemple, lorsque les boucles internes se terminent, elles définissent iterate sur elax, ce qui interrompt l'itération consécutive des instances externes de loop .

Je suppose que les fichiers input contiennent un appel à une macro dont l'expansion à un moment donné produit une autre instance de la loop -macro qui interrompt votre boucle. Il est probable qu'un package en cours d'utilisation apporte une telle macro sans que vous le sachiez.

(Au fait : la définition de iterate à partir des arguments que l'utilisateur fournit à la loop -macro est une source pour un autre problème : si les arguments fournis par l'utilisateur doivent définir des macros (temporaires) qui traitent les arguments, avec ces arguments les hachages ( # ) doivent être doublés bien qu'au premier coup d'œil à un loop.. epeat -construct vous ne pouvez pas voir l'imbrication des macro-définitions à l'intérieur des macro-définitions.)


Définir la classe CSS de manière dynamique dans le composant Web Lightning

Pour calculer une valeur pour une propriété, utilisez un getter JavaScript. Par exemple, pour convertir le nom en lettres majuscules, utilisez une fonction getter dans la classe JavaScript, et non une expression dans le modèle.

Les getters sont beaucoup plus puissants que les expressions car ce sont des fonctions JavaScript. Les getters permettent également les tests unitaires, ce qui réduit les bogues et augmente le plaisir.

Votre exemple de code ressemblerait à ceci :

Vos préoccupations concernant la séparation de l'interface utilisateur de la logique du contrôleur ne s'appliquent pas ici car il ne s'agit pas d'un "contrôleur". Ce modèle MVC est un Aura-isme. C'est le code qui pilote la fonctionnalité de votre composant, il est donc logique que votre JS connaisse les noms de classe.

Après avoir modifié votre question, je pense que la meilleure façon de faire ce que vous essayez de faire est d'avoir un composant "contact" personnalisé qui, lorsqu'il est cliqué, devient actif et a un

propriété, que vous pouvez appeler depuis le parent. Dans vos commentaires ci-dessous, vous dites que c'est trop de frais généraux, mais c'est la bonne façon de le faire si vous souhaitez gérer l'état du contact. Dans votre exemple de code, vous ne basculez qu'une seule classe, mais dans un scénario du monde réel, vous voudrez peut-être modifier de nombreuses choses différentes à propos d'un contact et le fait d'avoir de nombreuses expressions rend le code plus difficile à lire et à tester.

Pour la plupart des éléments de liste, la suggestion est d'avoir un élément individuel pour chaque élément de liste comme ceci :


La raison en est l'ordre dans lequel les choses se produisent dans bash. L'expansion de l'accolade se produit avant les variables sont développées. Pour atteindre votre objectif, vous devez utiliser la boucle for de style C :

Pour compléter cela dans votre style en n'utilisant rien d'autre que des éléments intégrés, vous devez utiliser eval :

Personnellement, je trouve l'utilisation de seq plus lisible.

La méthode POSIX

Si vous vous souciez de la portabilité, utilisez l'exemple de la norme POSIX :

Des choses qui sont ne pas POSIX :

  • (( )) sans dollar, bien qu'il s'agisse d'une extension courante comme mentionné par POSIX lui-même.
  • [[ . [ est assez ici. Voir aussi : https://stackoverflow.com/questions/13542832/bash-if-difference-between-square-brackets-and-double-square-brackets
  • pour (())
  • seq
  • , et cela ne peut pas fonctionner avec les variables comme mentionné par le manuel Bash.
  • let i=i+1 : POSIX 7 2. Shell Command Language ne contient pas le mot let , et il échoue sur bash --posix 4.3.42

le dollar à i=$i+1 pourrait être requis, mais je n'en suis pas sûr. POSIX 7 2.6.4 L'expansion arithmétique dit :

Si la variable shell X contient une valeur qui forme une constante entière valide, incluant éventuellement un signe plus ou moins en tête, alors les développements arithmétiques "$((x))" et "$(($x))" renverront la même valeur.

mais en le lisant littéralement, cela n'implique pas que $((x+1)) se développe puisque x+1 n'est pas une variable.


2 réponses 2

J'ai donc saisi un Mega et plusieurs interrupteurs à bouton-poussoir (dont l'un s'est avéré être un bouton-poussoir, à mon grand étonnement), et j'ai créé un petit programme Arduino pour illustrer une technique de rebond de bouton piloté par interruption. N'hésitez pas à signaler toutes les erreurs -)

Voici un petit programme pour antirebond n'importe quel contacteur momentané. La ligne d'interruption Mega (broche 2, interruption 0) se déclenche sur toute transition bas-à-haut ou haut-bas. la routine de service d'interruption (ISR) définit simplement un indicateur sur TRUE et se termine. Si plusieurs interruptions se produisent avant que la fonction loop() puisse servir le drapeau, le deuxième appel ISR et les suivants ne font rien (enfin, ils définissent le drapeau, mais puisqu'il était déjà défini. ). Le code loop() recherche un indicateur défini, et s'il en trouve un, génère une impulsion de 50 uSec sur une broche sélectionnée, retarde 100 ms, réinitialise l'indicateur et quitte. Tant que l'activité de rebond de contact du commutateur cesse avant l'expiration du délai de 100 ms, une et une seule impulsion par transition sera générée. YMMV.

Voici deux captures d'écran O'scope. L'un montre le train d'impulsions généré par une transition de bouton unique avec un délai de 50 uSec, et l'autre montre le même commutateur avec un délai de 100 ms. Sur les deux photos, l'échelle de temps horizontale est de 500 uSec/cm


AMÉLIORER LA MODÉLISATION ET LA GESTION DU SYSTÈME DE DISTRIBUTION D'EAU À L'AIDE DE MAPOBJECTS

Le système d'information géographique (SIG) est un outil qui devient rapidement un atout de gestion précieux pour de nombreux services d'eau. Simplement utilisé comme base de données spatiale, le SIG peut grandement aider dans diverses applications de modélisation grâce au développement d'outils automatisés pour la construction et la maintenance de modèles de réseaux hydrauliques fiables des systèmes de distribution d'eau. Cet article présente un système complet d'aide à la décision (H2OMAP) à utiliser dans la gestion efficace des systèmes de distribution d'eau. Le système logiciel relie un simulateur de réseau hydraulique avancé à la technologie du système d'information géographique pour la gestion de la base de données spatiale et l'affichage graphique et l'analyse des résultats. L'interface graphique est développée à l'aide de la technologie MapObjects et fournit un cadre structuré informatif pour la construction, l'analyse et la présentation des résultats de modèles de réseau. Le logiciel résultant offre un environnement virtuel pour aider les décideurs à formuler, évaluer et sélectionner des stratégies de gestion concurrentes.

Introduction

Les modèles de simulation informatique des systèmes de distribution d'eau représentent le moyen le plus efficace et le plus viable pour évaluer la réponse du système à diverses stratégies de gestion. Pour être efficaces, ces modèles nécessitent de vastes données d'infrastructure spatiales et hydrauliques facilement disponibles à partir du SIG. Le SIG est unique dans sa capacité à capturer, stocker et gérer les données référencées spatialement requises par le modèle de réseau et ses applications. Il fournit des fonctions pour le développement et la préparation d'informations spatiales pertinentes pour l'entrée dans les modèles de réseau ainsi que des fonctions pour faciliter l'affichage de la sortie graphique pour l'évaluation des résultats. La visualisation peut également être complétée par des requêtes spatiales et aspatiales des résultats du modèle pour aider à identifier la corrélation entre les paramètres d'entrée et les résultats du modèle. Par conséquent, le mariage des modèles de réseaux de distribution d'eau et du SIG est un développement naturel de la technologie de simulation et de base de données.

Bien qu'il existe de nombreux logiciels puissants de modélisation de la distribution de l'eau, peu sont actuellement intégrés aux logiciels SIG. Les ingénieurs, habitués à travailler dans l'environnement CAO, sont devenus de plus en plus dépendants de sa facilité d'utilisation et de la conception de son interface. De même, le logiciel SIG d'entreprise n'a pas été adapté, à la fois en termes de prix et de fonctionnalité, pour répondre aux exigences de l'analyse du système de distribution d'eau. En tant que tel, le logiciel d'analyse des systèmes de distribution d'eau était normalement créé dans l'environnement CAO pour accélérer et garantir l'acceptation de la communauté des ingénieurs. Cet article présente une solution nouvelle et pratique à la modélisation et à la gestion complète de la distribution de l'eau qui facilite grandement les exigences de l'ingénieur tout en offrant les fonctionnalités étendues d'un SIG. Avec H2OMAP1-2, l'interface graphique est développée à l'aide de la technologie Esri MapObjects et fournit un cadre structuré informatif pour la construction, l'analyse et la présentation des résultats de modèles de réseau.

Analyse de réseau et SIG

Les ingénieurs des services d'eau sont chargés d'assurer l'approvisionnement sûr et efficace en eau potable. Le rôle d'un SIG dans l'analyse d'un système de distribution est de fournir des données précises pour lesquelles une analyse technique doit être effectuée. Cependant, les solutions logicielles SIG actuelles n'ont pas répondu de manière adéquate aux exigences de la communauté des ingénieurs car elles n'ont pas été conçues pour exécuter les fonctionnalités de gestion de réseau nécessaires, des analyses hydrauliques et de la qualité de l'eau au calcul du débit d'incendie, à la programmation des pompes et à la gestion sélective des scénarios. En conséquence, les ingénieurs se sont appuyés sur l'exportation de données d'ensembles de données SIG vers des logiciels tiers pour modéliser, analyser, planifier et concevoir des systèmes de distribution d'eau. Bien que les efforts déployés à ce jour se soient avérés fructueux pour permettre des analyses d'ingénierie très basiques à partir d'un SIG, les ingénieurs ont hésité à adopter et à utiliser cette technologie. .

Une partie de la raison de cette réticence peut être attribuée à la façon dont de nombreuses solutions logicielles SIG traitent les éléments de données du réseau. Par exemple, un système de distribution d'eau qui dessert 150 000 personnes peut avoir un SIG qui contient entre 100 000 et 250 000 segments de canalisation séparés. Même si un SIG était capable de modéliser avec succès autant d'éléments, peu d'ingénieurs sont prêts à parcourir la quantité massive de données générées par une telle simulation hydraulique. Une autre raison peut résider dans les structures de commande complexes de nombreux progiciels SIG. Encore une fois, les ingénieurs sont bien éduqués et formés aux solutions de CAO et ne sont généralement pas disposés à apprendre un nouveau progiciel uniquement pour modéliser un système d'eau. Une autre raison encore peut être la vitesse de calcul du logiciel d'analyse. Les ingénieurs sont habitués à travailler sur les ordinateurs les meilleurs et les plus rapides disponibles et attendre peut être assez énervant pour quelqu'un qui doit évaluer et examiner plusieurs stratégies de gestion. Une dernière raison peut être le prix de nombreuses solutions de modélisation SIG. Dépenser plus de 15 000 $ pour créer et exécuter un modèle moins robuste et doté de moins de fonctionnalités qu'une solution de 6 000 $ peut s'avérer difficile à justifier, en particulier pour de nombreux utilisateurs qui sont liés à un budget fixe.

C'est pour ces raisons que les ingénieurs ont choisi d'exporter les données nécessaires d'un SIG vers une application logicielle tierce conçue spécifiquement pour l'analyse technique d'un système de distribution d'eau. Par conséquent, le processus d'exportation SIG est devenu une tâche acceptée par les ingénieurs et a soulevé des problèmes communs parmi les modélisateurs en exercice.

Duplication de données

Un problème majeur avec l'exportation de données en dehors d'un SIG et dans une application logicielle tierce pour l'analyse technique est le fait qu'une duplication de données sera presque toujours réalisée. Une fois que cela se produit, il devient très difficile d'assurer l'intégrité des données entre les deux ensembles de données SIG et de modélisation distincts à l'avenir. Cela se produit parce que les modèles d'ingénierie prennent vie en dehors d'un SIG3. Les ingénieurs passent des heures à adapter le modèle aux conditions de terrain existantes. Les pompes, les réducteurs de pression, les réservoirs de stockage, les puits, les conduites fermées, etc. sont tous traités par l'ingénieur dans le logiciel de modélisation hydraulique qui serait autrement ignoré par le gestionnaire SIG. L'ingénieur se donne également beaucoup de mal pour garantir l'intégrité des données dans le but d'exécuter un modèle hydraulique. Les limites des zones de pression sont délimitées, des polygones de zone de demande sont créés et les charges ponctuelles sont déterminées. Toutes ces activités entraînent la modification et l'ajustement des installations existantes ainsi que la création de nouvelles installations, compliquant davantage la tâche d'échange de données de modélisation avec le SIG.

Recherche d'erreurs

Alors que la duplication des données est un risque potentiel lors de la création d'un modèle d'ingénierie à partir d'un SIG, un avantage reconnu est de trouver des erreurs négligées dans les ensembles de données SIG. Lorsque la cartographie SIG a commencé, la décision pour de nombreuses villes était de savoir comment créer au mieux les données et déterminer quel service serait responsable de la supervision de la création de données. De nombreuses villes ont décidé d'externaliser la création de données, puis d'affecter la division des systèmes d'information (SI) pour superviser le contrat et poursuivre la gestion des données une fois le projet terminé. En raison de l'externalisation, de nombreuses villes ont reçu des ensembles de données dont l'exactitude des données n'a pas été minutieusement inspectée. Les départements Ingénierie/Planification et Opérations, ne réalisant pas l'impact futur de ces contrats d'externalisation, ont été exclus du processus de génération de données. En raison de la combinaison de l'externalisation et de la surveillance du SI, l'intégrité des données d'un système hydraulique est généralement suspecte. Alors que de nombreuses villes peuvent croire qu'elles possèdent un SIG très précis, ce n'est que jusqu'à ce que le service d'ingénierie/planification, en collaboration avec le service des opérations, utilise les données SIG dans le but de créer un plan directeur de l'eau. C'est au moment du développement d'un modèle de réseau pour un plan directeur à l'échelle du système que les problèmes concernant le diamètre des tuyaux, le matériau, l'emplacement, la connectivité, l'élévation des nœuds, etc. sont soigneusement examinés et inspectés. Ce que beaucoup trouvent, c'est que l'ensemble de données SIG très précis recèle des erreurs qui nécessitent une enquête et une correction plus approfondies. De nombreux plans directeurs sont retardés tandis que les écarts de données sont ajustés pour refléter les conditions réelles du système.

Comme indiqué précédemment, même si ces erreurs sont traitées et résolues dans le modèle hydraulique, peu est fait pour s'assurer que toutes les corrections apportées dans l'application logicielle de modélisation sont réintégrées dans le SIG. Dans de nombreux cas, une fois qu'un modèle hydraulique est développé pour le plan directeur, le modèle est maintenant plus précis que les données SIG utilisées dans sa création. Cependant, une solution efficace et efficiente à ce problème a maintenant été réalisée avec H2OMAP - une application logicielle de modélisation hydraulique autonome entièrement construite avec la technologie SIG.

Une nouvelle solution - H2OMAP

H2OMAP aborde la modélisation du réseau d'eau d'un point de vue centré sur le SIG et s'efforce d'éviter les efforts de duplication impliqués dans la création d'un modèle hydraulique. Construit entièrement avec la technologie Esri MapObjects, H2OMAP utilise Shapefile comme format de données natif. Cela signifie que lorsque les tuyaux et les nœuds sont créés dans l'application, ils sont également stockés à l'extérieur du programme sous forme de fichiers de formes, prêts à être consultés par toute autre application SIG tierce. Le produit est entièrement différent de toute autre application de modélisation hydraulique en raison de son utilisation intensive des normes SIG. L'exemple suivant a été fourni pour montrer comment H2OMAP réduit les erreurs et facilite la création de modèles.

Exemple de projet

Une ville a décidé d'entreprendre un plan directeur de l'eau. En utilisant la couverture en eau du SIG de la ville, le service SIG attribue une valeur unique à chaque installation d'eau dans le SIG. Les données sont ensuite enregistrées sous forme de fichier Shape et importées dans H2OMAP. L'ingénieur travaille ensuite sur les données, en attribuant les courbes caractéristiques des pompes, les niveaux des réservoirs, les réglages des vannes, les coefficients de rugosité des tuyaux, etc. Au cours du processus, l'ingénieur corrige les problèmes de connectivité et attribue les installations à leur zone de pression appropriée à l'aide de la fonction de gestionnaire de domaine de H2OMAP. L'ingénieur procède au travail sur le modèle hydraulique, corrigeant les zones problématiques et construisant le modèle hydraulique. Étant donné que les données sont automatiquement stockées sous forme de fichiers Shape, le gestionnaire SIG affiche les données H2OMAP dans le programme SIG et met à jour les modifications apportées par l'ingénieur sans jamais avoir à demander les mises à jour. Le gestionnaire SIG peut également choisir de remplacer ses installations par celles du modèle hydraulique, car elles sont désormais plus précises et contiennent des valeurs de données supplémentaires non stockées dans le SIG.

Étant donné que les ensembles de données sont stockés sous forme de fichiers de formes, n'importe qui dans l'organisation peut afficher le modèle hydraulique en dehors de H2OMAP. Les tuyaux, pompes, vannes, réservoirs, etc. peuvent être ajoutés en tant que vues à ArcView GIS ou en tant que couches dans AutoCAD ou Microstation. Les contours de pression dérivés d'une analyse hydraulique et des couches d'annotation pour l'étiquetage des composants et des résultats du réseau hydraulique sont également stockés sous forme de fichiers de formes, pouvant être visualisés à tout moment dans les progiciels SIG. La fonctionnalité de H2OMAP permet aux ingénieurs d'analyser les systèmes de distribution d'eau et les services SIG pour intégrer les données du modèle de manière fluide et transparente.

La fonctionnalité de H2OMAP

Contrairement à d'autres modèles hydrauliques, H2OMAP est une solution logicielle d'analyse hydraulique complète. Les services publics peuvent l'utiliser pour une programmation optimale des pompes, développer plusieurs scénarios de modélisation, analyser les débits et les pressions du système, effectuer des analyses de la qualité de l'eau et du débit d'incendie, créer des contours de pression et surveiller les opérations SCADA. Le programme est construit avec une technologie de composant objet pour fournir une plate-forme SIG puissante et pratique pour les solutions de services publics d'eau. En tant que programme autonome, il combine des outils d'analyse spatiale et des fonctions de cartographie avec des capacités d'analyse de réseau sophistiquées et précises. Presque toutes les couches SIG ou CAO peuvent être ajoutées au programme à tout moment. Cela inclut les couvertures, les fichiers de formes, les couches SDE, MID/MIF, AutoCAD et Microstation.

Le cadre à architecture ouverte facilite la gestion et la distribution des données géospatiales ainsi que l'échange d'informations de modélisation importantes avec d'autres applications et systèmes d'entreprise. Encore une fois, parce qu'il accède et stocke les données internes au format Shapefile, H2OMAP devient instantanément une partie intégrante de l'entreprise. Les utilisateurs peuvent développer des solutions SIG éclairées pour les aider à respecter et dépasser les normes de qualité de l'eau potable, optimiser les performances du système, déterminer les améliorations des immobilisations, améliorer les opérations et satisfaire les clients de manière rapide et efficace.

Analyse de simulation de réseau

H2OMAP offre toutes les capacités qu'une organisation exige d'un solveur de réseau hydraulique de pointe. Les simulations en temps réel, l'optimisation hydraulique, l'analyse de la qualité de l'eau, la détermination du débit de lutte contre l'incendie, l'étalonnage, l'analyse énergétique ainsi que la détermination de programmes de rinçage unidirectionnels ne sont que quelques-unes des fonctionnalités.

Une autre caractéristique importante est la technologie de contrôle logique basée sur des règles qui permet une simulation précise du comportement hydraulique d'un système d'eau et contrôle automatiquement l'état des éléments de données en fonction de l'heure de la journée, des niveaux d'eau du réservoir, des pressions des nœuds, des débits de pompe ou de tout autre élément. combinaison de facteurs. Cette fonctionnalité est essentielle pour quiconque souhaite évaluer l'efficacité opérationnelle d'un système hydraulique sur une simulation de période prolongée.

Gestion des scénarios d'héritage à plusieurs niveaux

Le gestionnaire de scénarios complet de H2OMAP permet le développement et l'évaluation rapides de plusieurs scénarios de modélisation avec différentes configurations topologiques de réseau et caractéristiques d'installations physiques, ainsi que des conditions de charge et de fonctionnement externes, tout en bénéficiant d'un héritage à plusieurs niveaux parmi les scénarios sélectionnés. Chaque modification apportée à n'importe quel scénario "parent" est reflétée dans l'ensemble des projets "enfants" dans une structure arborescente facile à utiliser, permettant à l'utilisateur de basculer entre les scénarios, de fusionner des modèles et de comparer les résultats instantanément tout en donnant une illustration claire de comportement du système à différentes conditions et horizons de planification.

Capacités de modélisation hydraulique

H2OMAP fournit des capacités sophistiquées d'analyse et de simulation de réseau pour effectuer un large éventail de tâches de modélisation essentielles. Il utilise un moteur de calcul hydraulique complet et à la pointe de la technologie qui comprend les capacités suivantes :

n'impose aucune limite sur la taille du réseau et le nombre de composants pouvant être analysés (version lien illimité)

prend en charge les unités anglaises et métriques (Standard International)

analyse des simulations en régime permanent et à période prolongée

calcule la perte de charge due au frottement à l'aide des formules de Hazen-Williams, Darcy-Weisbach ou Chezy-Manning

comprend les pertes de charge (locales) mineures pour les coudes, les compteurs, les raccords, etc.

modèles de pompes à vitesse constante ou variable

modèles de turbines et totalisateurs de débit (compteurs)

calcule les exigences nettes de la tête d'aspiration positive (NPSH disponible, NPSH requis et indice de cavitation) pour garantir un fonctionnement sans cavitation

détermine les courbes de chute du système et les courbes d'évaluation des bornes d'incendie

calcule les débits d'incendie disponibles et de conception aux pressions résiduelles minimales

calcule l'énergie de pompage et le coût en fonction des frais variables d'électricité et de demande

s'adapte à divers types de vannes statiques et de régulation, y compris les vannes d'arrêt, de contrôle, à flotteur, de régulation de pression, de maintien de la pression, de bécher à pression, de commande d'accélérateur motorisée, à usage général et de régulation de débit

permet aux réservoirs de stockage à entrée/sortie simples et multiples d'avoir n'importe quelle forme (c'est-à-dire que le diamètre peut varier avec la hauteur)

modélise les réservoirs à charge constante et variable

considère plusieurs catégories de demande aux nœuds, chacune avec son propre modèle de variation temporelle

modélise la demande dépendante de la pression émise par les émetteurs (têtes d'arrosage)

effectue automatiquement une analyse pression-demande pour calculer le % de la demande fournie à chaque nœud (rapport de la demande réelle par rapport à la demande spécifiée)

suit les inversions de flux pour le rinçage des tuyaux

simule une fuite dans un tuyau

spécifie le fonctionnement du système basé à la fois sur des commandes simples de pression de nœud, de niveau de réservoir, de débit de liaison ou de minuterie et sur des commandes complexes basées sur des règles

fournit une interface SCADA avec des alarmes.

Capacités de modélisation de la qualité de l'eau

H2OMAP fournit des calculs dynamiques rapides, complets et précis de la qualité de l'eau des manières suivantes. Il:

suit le mouvement d'un matériau traceur non réactif (par exemple, le fluorure) à travers le réseau au fil du temps

modélise le mouvement et le devenir d'un matériau réactif au fur et à mesure qu'il croît (par exemple, un sous-produit de la désinfection) ou se désintègre (par exemple, le chlore résiduel) avec le temps

calcule l'âge de l'eau dans tout un réseau

calcule le pourcentage de flux d'un nœud donné atteignant tous les autres nœuds au fil du temps

analyse les réactions cinétiques à la fois dans l'écoulement en vrac et au niveau de la paroi du tuyau

incorporates n-th order kinetics to model reactions in the bulk flow

uses zero or first order kinetics to model reactions at the pipe wall

accounts for mass transfer limitations when modeling pipe wall reactions

allows growth or decay reactions to proceed up to a limiting concentration

employs global reaction rate coefficients that can be modified on a pipe-by-pipe basis

permits wall reaction rate coefficients to be correlated to pipe roughness

allows for time-varying concentration or mass inputs at any location in the network

models storage tanks as being either complete mix, plug flow, or two-compartment reactors.

Automated Network Model Reduction

Interfacing with GIS applications is a very reliable and efficient means of developing hydraulic network models of water distribution systems. However, because GIS facilities are typically created for Automated Mapping/Facilities Management (AM/FM) applications (e.g., water distribution system maintenance and management), this format is generally not suitable for construction of hydraulic network models. Common data format problems encountered by practicing modelers are inclusion of hydrants, line valves, and tees or crosses.

H2OMAP greatly simplifies and reduces large GIS models to a manageable size ready for hydraulic analysis. It expeditiously processes detailed GIS data and efficiently constructs reliable water system network models using three automated applications. These are: data reduction (Reduce), skeletonization (Skeletonize), and trimming (Trim) applications (or RST applications).

Data reduction application is the capability to remove excessive pipe segmentation caused by valves, fire hydrants or other data capture processes, by dissolving interior nodes on pipe reaches and combining the associated pipe segments into single pipes. For example, merging all series pipes of similar diameter, material and age. Data skeletonization application refers to the capability of removing all pipes with diameters less than a specified value (e.g., removing all 250 mm and smaller pipes). Data trimming application designates the capability to remove short pipe segments such as dead ends and hydrant leads. Trimming is carried out on only those pipes possessing at least one node of degree one, where the degree of a node is the number of pipes connected to it.

RST applications are functions readily available that can be effectively used to convert GIS data into a hydraulic model.

Results Presentation

Using powerful GIS thematic mapping functionality, H2OMAP makes it easy to turn dry database information into stunningly colorful, fully dimensional visualizations and to present analysis results in map form. Users can generate accurate, and smooth contours for any variable including elevation, pressure, hydraulic grade line, demand, water age, chlorine concentration, and more, directly on the map- even overlay multiple contours on a single drawing. Users can also draw on a range of other sophisticated graphical presentation tools, including color-coded mapping, dynamic annotation/labeling, graphing, profiling, customizable tabular reporting, and vivid VCR-style animation to produce truly compelling results. These graphical capabilities are critical to better communicate and understand problem areas and system deficiencies and to present remedial engineering solutions at community information sessions or council meetings.

Conclusion

Water utility engineers are discovering a wide variety of uses for GIS technology. In particular, GIS information is critical to water distribution system analysis. H2OMAP has been presented as a decision support system to provide a GIS-based solution for water distribution system modeling and management. Built entirely with MapObjects technology, H2OMAP integrates GIS functionalities with a hydraulic network simulator allowing accurate network model construction and providing a reliable and effective means for decision makers to quickly assess and address the implications of alternative design, rehabilitation and operational changes on system performance. Through the exploitation of GIS graphical data visualization capabilities potential system deficiencies can be quickly identified where improvements are required. The resulting GIS-enabled software allows a wide range of potential network improvement and enhancement alternatives to modeled, analyzed, contrasted, and evaluated, providing water utility managers with the ability to readily optimize their capital improvement programs. It also makes it easy for any utility to work seamlessly, across platforms and to manage water systems in a single, stand-alone software environment.

Les références

1. H2OMAP - Users Guide (2001). MW Soft, Inc. 300 North Lake Avenue, Suite 1200, Pasadena, CA 91101.

2. H2OMAP Skeletonizer - Users Guide (2001). MW Soft, Inc, 300 North Lake Avenue, Suite 1200, Pasadena, CA 91101