Crue UI Planimetry
Résumé
Affiche la vue planimétrique. Gère la construction automatique du réseau, les modifications,... Est utilisé par les perspectives Modélisation et Rapport
Calques
S'appuie fortement sur le module Ebli 2d du projet Fudaa. Chaque types d'objets noeuds, branches, casier, sections sont affichés dans un calques spécifiques. C'est dans le package org.fudaa.fudaa.crue.planimetry.layer
que sont définis les différents calques:
PlanimetryBrancheLayer | calque des branches |
---|---|
PlanimetryCasierLayer | calque des casiers |
PlanimetryNodeLayer | calque des noeuds |
PlanimetryCLimMLayer | calque des CLimM |
PlanimetrySectionLayer | calque des sections |
PlanimetryTraceLayer | trace des sections |
PlanimetryLigneBriseeExternUnmodifiableLayer | lignes issues d'importations SIG. Calque non modifiable |
PlanimetryPointExternUnmodifiableLayer | points issus d'importations SIG. Calque non modifiable |
PlanimetryImageRasterLayer | calque affichant une image géoréférencées |
Contrôleur global: PlanimetryGisModelContainer
Ce contrôleur contient toutes les informations stratégiques au sujet des données avec les correspondances entre les EMH et leur positiion dans les données géoréférencées, les positions des attributs.
Contrôleurs de calques ( package org.fudaa.fudaa.crue.planimetry.controller)
Les contrôleurs asssociés aux calques permettent :
- d'initialiser les calques
- d'assurer la cohérence dans les positions géoréférencées des EMHS. Ainsi la méthode
LayerCasierController.updateCasierFromNode
permet de mettre à jour les positions des casiers si un noeud est déplacé. Ces actions sont délégués à des updater du packageorg.fudaa.fudaa.crue.planimetry.listener
- d'assurer la cohérences des indexs (voir chapite ci-dessous)
Tous les contrôleurs sont construit depuis le builder PlanimetryControllerBuilder
.
Construction de réseau initial: NetworkBuilder
C'est la classe NetworkBuilder qui a la charge de construire le réseau initial. Il se base sur jgrapht pour construire ce réseau.
Index
Lorsque la vue est chargée, ce module s'appuie sur le fait que chaque EMH dispose d'un identifiant unique sous forme UID ( Long). On ne s'appuie par sur le nom de l'EMH qui est bien unique mais qui peut varier dans le temps ( renommage).
la classe GeometryIndexer permet de conserver une association entre les positions des EMH dans les calques et lesUID afin d'optimiser les performances.
Listener/Updater du package org.fudaa.fudaa.crue.planimetry.listener
Toutes les process permettant d'assurer la cohérences des positions ( noeuds par rapport aux branches, noeuds par rapport aux casier) sont assurer par les updater du package org.fudaa.fudaa.crue.planimetry.listener
. Par exemple, l'updater NodeUpdaterFromBranche
est appelé pour mettre à jour le position des noeuds si une branche a été déplacée. Ce sont les controleurs qui ont la responsabilités d'appeler ces updater au bon moment.
Cas de modification massive:
si plusieurs positions sont modifiées en même temps ( cas si sélection multiple), c'est la classe PlanimetrySceneEditorListener
qui gère le tout. Un flag indique qu'une modification majeure est en cours et dès la fin de la modification, cette classe demande aux controleurs de mettre à jour les positions impactées par les modifications.
Modifications: copie du scénario et des données de géo-référencement
Avant toute modification du scénario ou d'un position, une copie est effectué afin de permettre un retour arrière. C'est la méthode changeWillBeDone
des contrôleurs qui assurent cette fonction:
- les données de géoréférencement sont clonées
- le scénario est cloné
Ces clones de données demandent au développeur d'être très vigilant et de ne pas garder de références vers des objets ( car s'ils sont clonés, la référence n'est plus d'actualité). Il faut conserver des références vers les UID.
Sauvegarde / Chargement
C'est la classe PlanimetryGisSaver
qui est chargée d'enregistrer les positions des EMHs dans un fichier GML ( voir Shapefile). Dans ce fichier les noms des EMHS sont utilisées pour les indentifier ( les UID ont durée de vie limitée à la session).
La classe PlanimetryGisLoader
a la responsabilité de charger les données de géoréférencement et de les associer aux EMH.
Pour les calques hors EMH (image, lignes / points importés), il y a des "Savers" spécifiques comme par exemple LayerLigneBriseeUnmodifiableControllerSaver
.
La configuration
Elle est gérée par les classes du package org.fudaa.fudaa.crue.planimetry.configuration
.
Les actions: org.fudaa.fudaa.crue.planimetry.action
Elles sont rassemblée dans le package org.fudaa.fudaa.crue.planimetry.action
.
Ainsi, pour ouvrir une EMH dans l'éditeur associé, l'action fait appel à l'action OpenEMHAction
qui délègue l'ouverture à l'interface PlanimetryEMHEditor
qui sera implémentée par la perspective utilisant cette vue ( modélisation ou rapport).