Annexe G : exemple de code open source et de calcul
Démo Google Earth Engine et accès au code ISBM sur le GitHub de Savimbo
Ce contenu vous a-t-il été utile ?
Ce contenu vous a-t-il été utile ?
// Charger le polygone plot18
var plot18_data = require("users/drea/map:plot18_data");
var plot18 = plot18_data.polygon;
// Calculer la surface de la parcelle en hectares
var plotArea = plot18.area();
var plotAreaHectares = plotArea.divide(10000);
// Charger les points du 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 d'entités 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 rayons et les tampons 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 entité 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 surface 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(' Hectares N°');
// Calculer l'intersection avec plot18 pour le point actuel
var intersectionPlot18 = pointBuffer.intersection(plot18);
// Calculer la surface 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('Surface totale d'intersection par jour en hectares :', intersectionArea);
print('Surface d'intersection multipliée * 60 :', multipliedArea);
print('Surface attribuée par jour :', assignedArea);
print('----------------------');
// Ajouter au plan la zone tampon actuelle en bleu
Map.addLayer(pointBuffer, { color: 'blue' }, 'Rayon ' + (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 surface totale des intersections sans doublons
var totalIntersectionArea = unionPolygons.geometry().area().divide(10000);
// Afficher les résultats
print('Surface totale d'intersection en hectares :', totalIntersectionArea);
print('Surface de plot18 en hectares :', plotAreaHectares);
print('Somme de la surface d'intersection multipliée en hectares * 60 jours :', sumMultipliedArea);
// Ajouter la couche plot18 à la carte
Map.addLayer(plot18, { color: 'gold' }, "plot18");
Map.centerObject(plot18);