AMAPstudio

User Tools


Groupes automatiques dans Capsis4

Version : F. de Coligny - 5.9.2003 - updated 7.4.2009

1. Introduction

Dans les modules Capsis, certains objets peuvent posséder des propriétés de type “qualité” (QualitativeProperty) qui prennent une valeur particulière parmis n connues décidées au moment du développement (constantes) ou du chargement d'un inventaire (variables).

Ce type de données a été doté de mécanismes qui permettent, à partir d'une de ces variables, de connaitre toutes les valeurs possibles (ex: 1, 2), les libellés correspondant (ex: “Chêne”, Hêtre“) ainsi que le nom de la variable en français/anglais (ex: Espèce). Ces propriétés sont souvent utilisées pour coder des propriétés des arbres ou des cellules de terrain dans Capsis.

Fig. 1. Plusieurs groupes sur le même graphique

Par ailleurs, Capsis propose la possibilité de constituer des groupes pour étudier des sous-ensembles d'arbres ou de cellules, notamment (mais pas seulement) dans les visualisateurs de peuplements et les extracteurs de données (cf. fig 1.)(ex: courbes d'évolution de l'effectif des arbres avec H > 10m.). Les groupes Capsis combinent des filtres qui se basent sur des critères de sélection (seuils de hauteur, diamètre ou âge, appartenance à une cellule…). Il existe un filtre assez élaboré permettant de sélectionner des éléments considérant des valeurs choisies pour leurs variables qualitatives (ex: les chênes et les hêtres).

Si les groupes sont sauvegardés après leur création pour être rétablis à l'ouverture suivante de Capsis, il doivent tout de même être construits manuellement (catalogue / définition des groupes) la première fois. Pour faciliter l'utilisation de ces groupes, un procédé de création de groupes automatisé a été mis en place pour créer pour chaque variable qualitative un groupe par valeur possible (ex: deux groupes “Chêne” et Hêtre”). Ces groupes automatiques ne sont pas sauvés sur disque, ils sont reconstruits à la volée quand nécessaire. La marche à suivre est présentée ici.

2. Démarche

Pour créer des groupes automatiquement dans un module Capsis, le modélisateur doit utiliser une méthode du gestionnaire de groupe (GrouperManager). Il s'agit de lui demander de créer les groupes pour chaque valeur de la variable qualitative donnée. Ces instructions doivent être exécutées au chargement d'un module (par exemple dans la méthode xModel.initializeModel ()) et également à l'ouverture d'un projet concernant ce module (dans la méthode xModel.projectJustOpened ()).

Prenons l'exemple d'un module (MaddModel) qui décrit un arbre qui propose deux qualités : une espèce et un statut (voir figures 2 et 3). Pour cet exemple, les valeurs possibles sont connues au moment du développement et on a utilisé des constantes pour les coder.

/**
* A Species property for MaddModule
*
* @author F. de Coligny - october 2000
*/
public class MaddSpecies implements QualitativeProperty, Serializable, Cloneable {
    static public final String PROPERTY_NAME = "MaddSpecies.species";
 
    static public final MaddSpecies SPRUCE = new MaddSpecies (0);
    static public final MaddSpecies BEECH = new MaddSpecies (1);
    static public final MaddSpecies OAK = new MaddSpecies (2);
 
    ...
 
public class MaddStatus implements QualitativeProperty, Serializable, Cloneable {
    static public final String PROPERTY_NAME = "MaddStatus.status";
 
    static public final MaddStatus HIGH = new MaddSpecies (0);
    static public final MaddStatus MEDIUM = new MaddSpecies (1);
    static public final MaddStatus LOW = new MaddSpecies (2);
 
    ...
 

Pour déclarer ces variables au GrouperManager pour qu'il crée les groupes automatiques, il faut invoquer la méthode buildGroupers () à la fin de la phase de chargement d'un module (ex: dans xModel.initializeModel ()), ainsi qu'après l'ouverture d'un projet sauvegardé sur disque (dans la méthode xModel.projectJustOpened ()) comme montré dans la figure 4.

/**
* These initializations are done just after first stand is retrieved (see MaddRelay)
*/
public void initializeModel (MaddStand initStand) {
    GrouperManager.getInstance ().buildGroupers (MaddSpecies.SPRUCE, Group.TREE);
    GrouperManager.getInstance ().buildGroupers (MaddStatus.LOW, Group.TREE);
}
 
/**
* This method is called after a project is loaded from disk
*/
public void projectJustOpened () {
    GrouperManager.getInstance ().buildGroupers (MaddSpecies.SPRUCE, Group.TREE);
    GrouperManager.getInstance ().buildGroupers (MaddStatus.LOW, Group.TREE);
}

Les groupes sont créés (non sauvés sur disques) et utilisables dans Capsis comme les autres groupes. Il est possible de le vérifier en ouvrant le catalogue de groupes (DGrouperCatalog) et l'éditeur de groupe (DGrouperDefiner) (cf fig. 5 et 6).

Fig. 5. Catalogue de groupes : les groupes créés automatiquement

Fig. 6. Consultation du groupe Espèce.Chêne : le filtre a été configuré correctement.

documentation/automatic_group.txt · Last modified: 2013/10/10 13:00 by coligny