# Annexe G : Exemple de code et de calcul en open source

Le code open-source pour les calculs de crédit de biodiversité est disponible pour le public sur le [Savimbo GitHub](https://github.com/savimbo).&#x20;

Nous avons l’intention de rendre ce code plus facile à utiliser et disponible pour les projets des Peuples Autochtones et des communautés locales, avec une interface qui peut attribuer automatiquement des crédits depuis, et vers, une base de données Airtable gratuite après le début de la certification de biodiversité en 2024. Airtable gratuit [inscription ](https://airtable.com/invite/r/fxsn6mcE)est disponible maintenant. Les projets des Peuples Autochtones peuvent maintenant s’inscrire sur la liste d’attente sur cette interface et obtenir des modèles de base de données Airtable en envoyant un e-mail à <ops@savimbo.com>

Des calculs de démonstration sont aussi disponibles sur Google Earth Engine a promis de fournir des comptes gratuits aux groupes autochtones impliqués dans le changement climatique. Non commercial [inscription](https://earthengine.google.com/noncommercial/) est disponible.&#x20;

**Figure 11. Exemple de code Google Earth Engine**&#x20;

<figure><img src="https://lh6.googleusercontent.com/rVQ0Wv_v9_eXa7qOghqAvJhwResowct17qRiUSD-lO_eatzZqyiNhfpKmprKNcRWdVXXkv2FuYyAetkdA1BzOcf6d7EWeGqmRpKVVMGmk89gLOQd8i1K-Ia4A7ixXu0Xo2XSlovBPF8KPN24COHu6a4" alt=""><figcaption><p><em><strong>Figure 11</strong></em>. Exemple de code Google Earth Engine</p></figcaption></figure>

Exemple de code, code en révision externe. Peut être consulté dans Google Earth Engine à ce [lien.](https://code.earthengine.google.com/e914e4bf1b4fd252f4ad90318ca2371e) Ou dans Savimbo GitHub à ce [lien.](https://github.com/savimbo) Contact ***ops at savimbo.co**m* si vous voulez être réviseur du code.&#x20;

```markup
// Charger le polygone plot18
var plot18_data = require("users/drea/map:plot18_data");
var plot18 = plot18_data.polygon;

// Calculer la superficie de la parcelle en hectares
var plotArea = plot18.area();
var plotAreaHectares = plotArea.divide(10000);

// Charger les points jaguar
var points_jaguar_data = require("users/drea/map:points_jaguar_data");
var puntos = points_jaguar_data.points;
var radios = [];
var sumMultipliedArea = ee.Number(0);

// Définir une collection de caractéristiques pour stocker les polygones d’intersection
var intersectionPolygons = ee.FeatureCollection([]);

// Définir la fonction assignedArea
var assignedAreaFunction = function(offset) {
  var day = startDate.advance(offset, 'day');
  var dayString = day.format('YYYY-MM-dd');
  var feature = ee.Feature(null, { date: dayString, intersectionArea: intersectionArea });
  return feature.set('date_area', ee.String(dayString).cat(' - ').cat(intersectionArea));
};

// Calculer les radios et les buffers pour chaque point
for (var i = 0; i < puntos.length; i++) {
  var point = puntos[i].geometry;
  var date = puntos[i].date;

  // Calculer la date de début en soustrayant 30 jours
  var startDate = ee.Date(date).advance(-30, 'day');
  
  // Calculer la date de fin en ajoutant 30 jours
  var endDate = ee.Date(date).advance(30, 'day');
  
  // Créer une caractéristique avec la géométrie du point et la date comme propriétés
  var feature = ee.Feature(point, { date: date });
  
  var pointBuffer = feature.buffer(800);
  radios.push(pointBuffer);
  
  // Calculer l’intersection avec plot18
  var intersection = pointBuffer.intersection(plot18);
  
  // Calculer la superficie en hectares
  var area = intersection.area().divide(10000);
  
  // Obtenir le mois et l’année de la date
  var month = ee.Date(date).get('month');
  var year = ee.Date(date).get('year');
  
  // Générer une étiquette pour le mois et l’année
  var monthYearLabel = ee.String(month).cat('-').cat(year).cat(' Hectarias N°');
  
  // Calculer l’intersection avec plot18 pour le point courant
  var intersectionPlot18 = pointBuffer.intersection(plot18);
  
  // Calculer la superficie en hectares pour l’intersection avec plot18
  var intersectionArea = intersectionPlot18.area().divide(10000);
  var multipliedArea = intersectionArea.multiply(60);
  
  // Ajouter multipliedArea à la somme
  sumMultipliedArea = sumMultipliedArea.add(multipliedArea);
  
  // Définir la plage de dates du jaguar
  var jaguarRange = endDate.difference(startDate, 'day');
  
 // Attribuer la valeur intersectionArea à chaque jour de la plage du jaguar
  var assignedArea = ee.FeatureCollection(ee.List.sequence(0, jaguarRange.subtract(1)).map(assignedAreaFunction));
  
  // Afficher les résultats pour chaque point
  print('Jaguar :', i + 1);
  print('Date de capture de l’image :', date);
  print('Date de début :', startDate.format('YYYY-MM-dd'));
  print('Date de fin :', endDate.format('YYYY-MM-dd'));
  print('Superficie totale d’intersection par jour en hectares :', intersectionArea);
  print('Superficie d’intersection multipliée * 60 :', multipliedArea);
  print('Superficie attribuée par jour :', assignedArea);
  print('----------------------');
  
  // Ajouter le buffer du point courant à la carte en bleu
  Map.addLayer(pointBuffer, { color: 'blue' }, 'Radio ' + (i + 1));
  
  // Ajouter la géométrie d’intersection à intersectionPolygons
  intersectionPolygons = intersectionPolygons.merge(intersection);
}

// Faire des unions de polygones pour éviter les doublons
var unionPolygons = intersectionPolygons.union();

// Calculer la superficie totale des intersections sans doublons
var totalIntersectionArea = unionPolygons.geometry().area().divide(10000);

// Afficher les résultats
print('Superficie totale d’intersection en hectares :', totalIntersectionArea);
print('Superficie de plot18 en hectares :', plotAreaHectares);
print('Somme des superficies d’intersection multipliées en hectares * 60 jours :', sumMultipliedArea);

// Ajouter la couche plot18 à la carte
Map.addLayer(plot18, { color: 'gold' }, "plot18");
Map.centerObject(plot18);

```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://isbm.savimbo.com/savimbo-indicator-species-biodiversity-method-fr/annexes/annexe-g-exemple-de-code-et-de-calcul-en-open-source.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
