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)
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).
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 :
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.
Voir documentation séparée : Capsis in AmapSim by J-.F.Barczi
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.
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.
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).
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.
Aller : A1 complet avec données globales et individuelles renseignées. Retour : R1 complet.
Utilisation du client AMAPsim invoqué sur une étape du projet considéré (dans la “boîte à outils” du menu contextuel).
Ensuite : visualisation des résultats par les outils de visu et d'extraction de données Capsis.
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 |
Les notations suivantes sont utilisées dans la suite du document :
Notes :
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) |
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 |
Code retour |
Libellé |
0 |
Pas d'erreur |
-1 |
Ajustement échoué |
-2 |
Erreur système,
vérifier les traces |
-3 |
Format de requête
erroné |