Table of Contents
Connexion Capsis - AMAPsim
Capsis in AmapSim
AmapSim in Capsis
F. de Coligny - 6 fev 2004, en cours de mise à jour
Participants : Yves Caraglio, Céline Meredieu, Laurent Saint-André, Jean-François Barczi, François de Coligny Contexte : un projet Capsis avec un module compatible avec le client AMAPsim (module pp3 ou amapsim, à terme eucalypt)
1. Présentation
Capsis est AMAPsim ont fait l'objet d'une connexion client-serveur pour répondre à des questions mixtes peuplement / plante individuelle (voir la suite).
Un serveur Capsim a été développé du côté AMAPsim : il accepte des requête décrites dans ce document, pilote le moteur de croissance AMAPsim et envoie des réponses dans la foulée ou quand on lui redemande (les temps de calcul peuvent être long, la réponse peut être différée).
2. Le client AMAPsim dans Capsis
Une extension de Capsis a été créée : un Client AMAPsim (fig. 1) qui peut être invoquée sur les modules Capsis compatibles (l'arbre du module doit posséder une structure de donnée additionnelle AMAPsim détectable). Ce client établit une connexion réseau avec le serveur, puis envoit les requêtes demandées par l'utilisateur. Les requêtes en attente de réponse ainsi que les réponses reçues sont mémorisée par le client quand il est fermé pour restitution à la réouverture.
Le mode 1 demande le calcul d'un ensemble d'arbres qui respectent des critère dendrométriques globaux (dimensions moyennes…). Le mode 2 demande de calculer un arbre AMAPsim pour chaque arbre de l'étape de projet support. Les requêtes sont décrites plus précisement dans la suite du document.
Fonctionnalités du client AMAPsim pour Capsis accessibles par menu contextuel sur les lignes des historiques ou par le menu latéral :
- Connexion / déconnexion
- Requêtes de test de connexion
- Requêtes de gestion : redemander une réponse, forcer une réponse, annuler une requête, demander le status du serveur
- Inspection d'une requête / réponse : dans un inspecteur Capsis (table de propriétés dynamique)
- Suppression d'une ou plusieurs lignes
- Prendre la requête pour modèle pour une nouvelle requête
- création d'un nouveau projet Capsis associé au module technique AMAPsim pour porter les arbres renvoyés par le serveur
- répartition des données reçues en mode 2 dans chaque arbre du projet Capsis support de la requête
En cas de création de projet AMAPsim ou de répartition des données dans le projet Capsis support, les outils de visualisation et d'analyse Capsis deviennent utilisables pour évaluer les résultats.
3. Le serveur Capsim
Voir documentation séparée : Capsis in AmapSim by J-.F.Barczi
4. Mode 1 : Simulation libre
4.1 Objectif
Ce mode permet de tester la compatibilité globale des maquettes AMAPSim avec des données dendrométriques au niveau peuplement fournies par les modules dans Capsis. Cette compatibilité est nécessaire pour pouvoir ensuite travailler en mode 2.
Passer à AMAPsim une description globale du peuplement en terme de distributions d'ages, de diamètres, de hauteurs, ou de grandeurs globales comme diamètre ou hauteur de l'arbre moyen ou dominant, densité, fertilité… pour lui permettre de calculer un ensemble d'arbres qui respecte ces propriétés globales. Le nombre d'arbres renvoyés est suggéré côté Capsis par l'utilisateur.
4.2 Formats d'échange
Aller : A1 partiel (voir plus bas la description des formats) avec seulement les données globales renseignées, plus le nombre d'arbres à calculer (pas de données individuelles). Remarque : renseignement partiel possible : (Age), (H), (D), (Age, H), (Age, D), (H, D) ou (Age, H, D). Des stratégies correspondantes priorisées sont implémentées du côté AMAPsim. Les valeurs non renseignées sont mises à -1 ou 0.
Retour : R1 complet.
4.3 Démarche
Utilisation du client AMAPsim invoqué sur une étape du projet considéré (dans la “boîte à outils” du menu contextuel).
- Sélection du mode 1, saisie de la requête (fig. 2) : messageId automatique, espèce (nom de la maquette AMAPsim), Nombre d'arbres à simuler, surface et nombre d'arbres pour densité, surface terrière, fertilité…
Fig. 2 : interface de saisie en Mode 1
- Lancement de la requête et mise en attente de réponse. Si la réponse tarde, possibilité de quitter et de redemander ultérieurement les résultats de la requête en spécifiant le même messageId (requête AskAgain).
Fig. 3 : Création d'un projet portant les résultats de la simulation AMAPsim
- Sur réponse : (directement ou à la demande ultérieurement), possibilité de création d'un nouveau projet (fig. 3) dans la session Capsis courante, associé à un module technique AMAPsim et portant les arbres calculés par AMAPsim aux dates disponibles dans l'historique renvoyé. Les arbres de chaque étape portent des données calculées par AMAPsim.
Fig. 4 : utilisation des outils de visualisation Capsis sur le projet créé
Ensuite : visualisation des résultats par les outils de visu (fig. 4) et d'extraction de données Capsis. Possibilité de rentrer des paramètres supplémentaires (densité bois, épaisseur et coefficient de forme feuilles…) pour obtenir des résultats de biomasses (dans un extracteur de données paramétrable par exemple).
5. Mode 2 : Simulation synchronisée
5.1 Objectif
Ce mode permet d'obtenir (ou de comparer) grâce aux maquettes AMAPsim des informations que les modules dans Capsis ne calculent pas (ou calculent de façon différente).
Reproduire une scène calculée par Capsis avec AMAPsim en contraignant les maquettes AMAPsim pour qu'elles respectent les grandeurs dendrométriques calculées par Capsis. AMAPsim renvoit un arbre pour chaque arbre Capsis.
5.2 Format
Aller : A1 complet avec données globales et individuelles renseignées. Retour : R1 complet.
5.3 Démarche
Utilisation du client AMAPsim invoqué sur une étape du projet considéré (dans la “boîte à outils” du menu contextuel).
- Sélection du mode 2, saisie de la requête (cf. fig. 5). Les données individuelles arbres sont extraites par programme de l'étape de référence du projet support (étape sur laquelle on a ouvert le client) pour compléter la requête.
- Lancement de la requête et mise en attente de réponse. Si la réponse tarde, possibilité de quitter et de redemander ultérieurement les résultats de la requête en spécifiant le même messageId.
- Sur réponse : En mode 2, l'historique renvoyé par AMAPsim doit être construit avec un pas de temps compatible avec celui du module Capsis, en utilisant le coefficient Age passé en A1. Les données calculées par AMAPsim peuvent être répartis dans les arbres Capsis pour l'étape en cours et les étapes précédentes. On utilise une description de données additionnelles (AMAPsimRequestableTree) ajoutée à la description de l'arbre du module.
- Les biomasses : à calculer dans Capsis au retour en rentrant des densités, et pour les feuilles un coefficient de forme et une épaisseur.
Ensuite : visualisation des résultats par les outils de visu et d'extraction de données Capsis.
6. Mode 3 : Simulation conjointe
7. Protocole
Code |
Requête |
Détail |
0 |
Hello | Teste la connexion, une réponse est renvoyée |
1 |
Mode 1 |
Envoi de données globales peuplement, demande d'un certain nombre d'arbres AMAPsim se conformant globalement à ces caractéristiques |
2 |
Mode 2 |
Envoi de données globales
et
individuelles arbres en s'appuyant sur le module Capsis support (avec
historiques
hauteurs, diamètres...), renvoi d'un arbre AMAPsim pour chaque
arbre
envoyé |
3 |
AskAgain |
Relance pour une requête
dont
le numéro est précisé |
4 | ForceAnswer | Injonction de répondre immédiatement à une requête donnée |
5 |
CancelRequest | Abandon d'une requête |
6 | AskStatus |
Demande de statut au serveur
AMAPsim |
7 |
IdRequest |
Demande
d'un id (5 caractères, numérique) pour la prochaine
transaction de calcul (mode1 ou 2) |
9 | Bye |
Prépare la
déconnexion |
8. Formats d'échange
8.1 Types de données :
Les notations suivantes sont utilisées dans la suite du document :
- i : integer (4 octets)
- f : float (4 octets)
- b : byte (octet)
- s : String (chaîne de caractères)
Notes :
- Valeurs dominantes : moyenne pour les 100 plus gros arbres à l'hectare
- Valeurs de l'arbre moyen : arbre ayant pour diamètre la moyenne quadratique des diamètres de la population
8.2 Format A1 : Capsis -> AMAPsim pour modes 1 et 2
Données techniques | ||
i |
dataLength | Longueur des données dataLength non compris |
s |
messageId | Numéro de
requête, utilisable pour redemander une réponse en cas
d'attente. Seules les requêtes de calcul (Mode1, Mode2) ont un numéro unique. Les requêtes de gestion comporte un libellé technique (ex: -hel-, -sta-, -id?-, -bye-). Les requêtes de relance portent le numéro de la requête de calcul concernée (ex : 'AskAgain 00034', 'CancelRequest 00032', 'ForceAnswer 00035'). |
i |
requestType | Type de
requête
: mode1, mode2, AskAgain... (voir 7.) |
Données globales peuplement | ||
s |
species | Espèce pour mode 1 (pas de données individuelles), (nomenclature AMAPsim ex : "pinmar") |
b |
storeLineTree | Booléen : stockage des lignes élastiques par AMAPsim |
b |
storeMtg | Booléen : stockage des Mtg |
b |
storeBranches | Booléen : calcul des branches dans R1 |
b |
storeCrownLayers | Booléen : calcul des couches de houppier dans R1 |
b |
storePolycyclism | Booléen : calcul des données polycyclisme dans R1 |
b |
storeTrunkShape |
Stockage du profil de tronc |
i |
initialSimulationAge |
Age initial à simuler
(quand pas de contrainte âge, YC). Unité = celle du module
Capsis ex: Eucalypt : le mois (à utiliser avec coefAge). |
f |
surface | Surface du peuplement (m2) |
i |
numberOfTreesInStand | Effectif du peuplement -> pour calcul de densité du peuplement |
f |
basalArea | Surface terrière du peuplement (G) (m2) |
f |
fertilityHDom | Hauteur dominante du peuplement à l'âge fertilityAge (m) |
f |
fertilityAge | Voir fertilityHDom (âge Capsis) |
f |
coeffAge | Pas de temps
AMAPsim/Capsis,
ex: pinmar-PP3 : 1 (an / an), eucapf1-eucalypt : env. 10 (EN / mois) |
b |
useAge |
Contrainte par l'âge |
f |
ageMean | Age moyen |
f |
ageStandardDeviation | Ecart type
âge |
f |
ageMin | Age min |
f |
ageMax | Age max |
f |
ageg | Age de l'arbre moyen |
f |
ageDom | Age dominant |
b |
useH |
Contrainte par la hauteur |
f |
HMean | Hauteur
moyenne (m) |
f |
HStandardDeviation | Ecart type hauteur (m) |
f |
HMin | Hauteur min (m) |
f |
HMax | Hauteur max (m) |
f |
Hg | Hauteur de l'arbre moyen (m) |
f |
HDom | Hauteur dominante (m) |
b |
useD |
Contrainte par le
diamètre |
f |
DMean | Diamètre
moyen (cm) |
f |
DStandardDeviation | Ecart type diamètre (cm) |
f |
DMin | Diamètre min (cm) |
f |
DMax | Diamètre max (cm) |
f |
Dg | Diamètre de l'arbre moyen (cm) |
f |
DDom | Diamètre dominant (cm) |
b |
useCrown |
Contrainte par le houppier |
f |
crownBaseHeight |
Hauteur de la base du houppier
(m) |
f |
crownMaxDiameter |
Diamètre maximal du
houppier
(m) |
i |
numberOfTreesToBeSimulated | Nombre d'arbres à simuler (mode 1 seulement. En mode 2, 1 arbre simulé pour chaque arbre envoyé, voir numberOfTrees) |
Données individuelles | ||
i |
numberOfTrees | Nombre d'arbres envoyés (mode 2 seulement) |
Pour
chaque arbre envoyé |
||
i |
treeId | Identifiant arbre (Capsis) |
s |
treeSpecies | Espèce (nomenclature AMAPsim ex : "pinmar") |
f |
finalCrownBaseHeight | Hauteur de la base du houppier sur étape finale (m) |
f |
finalCrownDiameter | Diamètredu houppier sur étape finale (m) |
i |
numberOfTreeSteps | Nombre d'étapes (historique) |
Pour
chaque étape de l'historique |
||
i |
age | Age de l'arbre (unité Capsis) |
f |
height | Hauteur de l'arbre (m) |
f |
dbh | Diamètre de l'arbre à 1.3m (cm) |
8.3 Format R1 : AMAPsim -> Capsis pour modes 1 et 2
Données techniques | ||
i |
dataLength | Longueur des données dataLength non compris |
s | messageId | Numéro de requête |
i |
requestType | Type de la requête |
i |
returnCode | 0 :
correct,
autre voir nomenclature (cf 8.4) |
i |
satisfactionIndex | Taux de réussite de la simulation (0 à 100) |
f |
surface | recopie de A1.surface -> pour connaître la surface liée à la réponse |
i |
numberOfTreesInStand | recopie de A1.numberOfTreesInStand -> pour connaître la surface liée à la réponse |
Données individuelles | ||
i |
numberOfTrees | Nombre d'arbres dans la réponse |
Pour
chaque arbre de la réponse |
||
i |
treeId | Mode 1 : un entier unique, mode 2 : id de l'arbre Capsis |
s |
fileName | Nom de fichier de la ligne élastique |
i |
numberOfTreeSteps | Histo des valeurs arbre (si mode 2, step Capsis (use coeffAge)) |
Pour
chaque étape de l'historique |
||
i |
age | Mode 2, age Capsis (ex : mois) mode 1 : au choix (ex : EN) |
f |
dbh | Diamètre (cm) |
f |
trunkDiameter260 |
Diamètre (cm) du tronc
à
2.6m (-1 si height < 2.6m) |
f |
mediumDiameter |
Diamètre médian
(cm)
: diamètre à la hauteur médiane |
f |
height | Hauteur (m) |
f |
heightDiameter7 |
Hauteur (m) du diamètre
7cm
(-1 si l'arbre n'atteint pas 7cm de diamètre) |
f |
heightDiameter2 |
Hauteur (m) du diamètre 2cm (-1 si l'arbre n'atteint pas 2cm de diamètre) |
f |
mediumHeight |
Hauteur médiane (m) = 2.6 + (H du diamètre 7cm - 2.6) / 2 (-1 si heightDiameter7 < 2.6m) |
f |
trunkVolume | (m3) |
f |
trunkVolumeDplus20 |
(m3) |
f |
trunkVolumeD20to7 |
(m3) |
f |
trunkVolumeD7to4 |
(m3) |
f |
trunkVolumeD4to0 |
(m3) |
f |
trunkVolume260 |
(m3) |
f |
trunkVolumeDplus7 |
(m3) |
f |
trunkVolumeD7to2 | (m3) |
f |
branchVolume | (m3) Rq : totalVolume (non retourné) = trunkVolume + branchVolume |
f |
branchVolumeDplus20 |
(m3) |
f |
branchVolumeD20to7 |
(m3) |
f |
branchVolumeD7to4 |
(m3) |
f |
branchVolumeD4to0 |
(m3) |
f |
branchVolumeOrder2 |
(m3) |
f |
branchVolumeOrder3 |
(m3) |
f |
branchVolumeOrdern |
(m3) |
f |
leafSurface | (m2) Attention : il faut encore appliquer un coef de forme |
Branches (si demandé dans A1) | ||
i |
numberOfBranches | Nombre de branches dans l'arbre |
Pour
chaque branche |
||
i |
branchId | Id branche AMAPsim |
i |
branchStatus | 0 : morte / 1 : Vivante |
f |
branchDiameter | Diamètre (cm) |
f |
branchLength | Longueur (m) |
f |
branchAngle | Angle d'insertion (degrés) |
f |
branchHeight | Hauteur insertion (m) |
i |
branchComplexity |
Degré maximum de
ramification
de la branche |
i |
branchBearerId |
Index de la poule pondeuse
(pousse
porteuse) |
Couches de houppier (si demandé dans A1) | ||
i |
numberOfLayers | Nombre de couches |
Pour chaque couche de houppier | ||
f |
layerHeight | Hauteur du haut de la la couche (m) |
f |
layerDiameter | Diamètre de la couche (tronc seul : D = 0) (m) |
Unités topologiques |
||
i |
numberOfUTs |
Nombre d'unités
topologiques |
Pour chaque UT : Polycyclisme (si demandé dans A1) | ||
i |
numberOfCycles | Nombre de cycles dans l'UT |
Pour
chaque cycle |
||
f |
cycleHeight | Hauteur du cycle (cm) |
i |
numberOfBranches | Nombre de branches |
Unités de croissance
(pour
profil de tronc) |
||
i |
numberOfUCs |
Nombre d'unités de
croissance |
Pour chaque UC |
||
f |
topHeight |
Hauteur du sommet de l'UC |
i |
numberOfRings |
Nombre de
cernes |
Pour chaque cerne |
||
f |
width | Largeur du
cerne |
8.4 Nomenclature des codes retour du serveur
Code retour |
Libellé |
0 |
Pas d'erreur |
-1 |
Ajustement échoué |
-2 |
Erreur système,
vérifier les traces |
-3 |
Format de requête
erroné |