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:

ย 

PlanimetryBrancheLayercalque des branches
PlanimetryCasierLayercalque des casiers
PlanimetryNodeLayercalque des noeuds
PlanimetryCLimMLayer

calque des CLimM

PlanimetrySectionLayercalque des sections
PlanimetryTraceLayertrace des sections
PlanimetryLigneBriseeExternUnmodifiableLayerlignes issues d'importations SIG. Calque non modifiable
PlanimetryPointExternUnmodifiableLayerpoints issus d'importations SIG. Calque non modifiable
PlanimetryImageRasterLayercalque 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 :

  1. d'initialiser les calques
  2. 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
  3. 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).

ย 

ย