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 packageยorg.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).
ย
ย