Table of Contents

Connexion Capsis - AMAPsim

Capsis in AmapSim

Capsis in AmapSim by J-.F.Barczi

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.

Fig. 1 : Le client AMAPsim

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 :

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

Fig. 2 : interface de saisie en Mode 1

Fig. 3 : Création d'un projet portant les résultats de la simulation 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).

Fig. 5 : La requête en mode 2

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 :

Notes :

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
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é