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).