Présentation des données de surveillance des forêts pour l'action (FORMA)

FORMA est un système d'alerte de déforestation bimensuel basé sur MODIS, d'une résolution de 500 x 500 mètres, pour les forêts tropicales humides. L'ensemble de données FORMA 500 dans Earth Engine est une image avec des alertes commençant en janvier 2006 et mises à jour tous les mois. Chaque alerte est associée à une heure dans une seule bande nommée alert_date en unités de secondes d'epoch. Filtrer les données FORMA par date et calculer les alertes dans les zones d'intérêt sont deux des actions les plus importantes que vous pouvez effectuer avec l'ensemble de données FORMA.

Filtrer FORMA par date

Pour n'afficher que les alertes qui se produisent en 2012, recherchez les pixels dont l'heure est comprise entre le premier jour de 2012 et le premier jour de 2013, exprimée en secondes depuis le 1er janvier 1970 à minuit :

Éditeur de code (JavaScript)

// Convert dates from milliseconds to seconds.
var start = ee.Date('2012-01-01').millis().divide(1000);
var end = ee.Date('2013-01-01').millis().divide(1000);

// Load the FORMA 500 dataset.
var forma = ee.Image('FORMA/FORMA_500m');

// Create a binary layer from the dates of interest.
var forma2012 = forma.gte(start).and(forma.lte(end));

Map.setCenter(15.87, -0.391, 7);
Map.addLayer(
  forma2012.mask(forma2012),
  {palette: ['FF0000']},
  'FORMA alerts in 2012'
);

Dans cet exemple, forma2012 est une image binaire ne contenant que les pixels dont les dates se situent en 2012 (c'est-à-dire que tous les autres pixels sont masqués).

Compter les alertes FORMA dans une région d'intérêt

Comme nous l'avons fait dans la section précédente avec les données de Hansen et al., nous pouvons commencer par compter le nombre d'alertes FORMA (pixels) dans une zone d'intérêt. Par exemple, pour compter le nombre d'alertes dans les zones protégées de la République du Congo en 2012, utilisez l'exemple précédent comme suit :

Éditeur de code (JavaScript)

// Load country features from Large Scale International Boundary (LSIB) dataset.
var countries = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017');

// Subset the Congo Republic feature from countries.
var congo = ee.Feature(
  countries
    .filter(ee.Filter.eq('country_na', 'Rep of the Congo'))
    .first()
);

// Subset protected areas to the bounds of the congo feature
// and other criteria. Clip to the intersection with congo.
var protectedAreas = ee.FeatureCollection('WCMC/WDPA/current/polygons')
  .filter(ee.Filter.and(
    ee.Filter.bounds(congo.geometry()),
    ee.Filter.neq('IUCN_CAT', 'VI'),
    ee.Filter.neq('STATUS', 'proposed'),
    ee.Filter.lt('STATUS_YR', 2010)
  ))
  .map(function(feat){
    return congo.intersection(feat);
  });

// Display protected areas on the map.
Map.addLayer(
  protectedAreas,
  {color: '000000'},
  'Congo Republic protected areas'
);

// Calculate the number of FORMA pixels in protected
// areas of the Congo Republic, 2012.
var stats = forma2012.reduceRegion({
  reducer: ee.Reducer.sum(),
  geometry: protectedAreas.geometry(),
  scale: 500
});
print('Number of FORMA pixels, 2012: ', stats.get('constant'));

Comptabiliser les alertes FORMA dans plusieurs régions d'intérêt

Jusqu'à présent, nous avons calculé des statistiques dans une seule région à la fois. Pour calculer des statistiques dans plusieurs régions à la fois, vous pouvez utiliser reduceRegions(). En reprenant l'exemple précédent :

Éditeur de code (JavaScript)

var regionsStats = forma2012.reduceRegions({
  collection: protectedAreas,
  reducer: ee.Reducer.sum(),
  scale: forma2012.projection().nominalScale()
});
print(regionsStats);

Examinez l'objet imprimé dans la console et observez que la sortie de reduceRegions() est un autre FeatureCollection. Notez que chaque région de la collection des zones protégées de la République du Congo possède désormais une propriété supplémentaire, sum, nommée d'après le réducteur. La valeur de cette propriété est le résultat du réducteur, soit le nombre d'alertes de 2012 dans les zones protégées.

Comparaison des ensembles de données FORMA et Hansen et al.

Pour comparer les ensembles de données FORMA et Hansen et al., vous pouvez utiliser des opérateurs logiques. (En savoir plus sur les opérations logiques) Plus précisément, nous souhaitons créer une image dans laquelle les pixels marqués comme déforestation par les données FORMA et Hansen et al. sont définis sur 1, et les autres sur 0. Ce code crée une image de ce type pour 2012 et l'affiche avec d'autres couches de déforestation prédites :

Éditeur de code (JavaScript)

// Convert dates from milliseconds to seconds.
var start = ee.Date('2012-01-01').millis().divide(1000);
var end = ee.Date('2013-01-01').millis().divide(1000);
var region = ee.Geometry.Rectangle([-59.81163, -9.43348, -59.27561, -9.22818]);

// Load the FORMA 500 dataset.
var forma = ee.Image('FORMA/FORMA_500m');

// Create a binary layer from the dates of interest.
var forma2012 = forma.gte(start).and(forma.lte(end));

// Load Hansen et al. data and get change in 2012.
var gfc = ee.Image('UMD/hansen/global_forest_change_2015');
var gfc12 = gfc.select(['lossyear']).eq(12);

// Create an image which is one where the datasets
// both show deforestation and zero elsewhere.
var gfc_forma = gfc12.eq(1).and(forma2012.eq(1));

// Display data on the map.
Map.setCenter(-59.58813, -9.36439, 11);
Map.addLayer(forma.updateMask(forma), {palette: '00FF00'}, 'Forma (green)');
Map.addLayer(gfc12.updateMask(gfc12), {palette: 'FF0000'}, 'Hansen (red)');
Map.addLayer(
  gfc_forma.updateMask(gfc_forma),
  {palette: 'FFFF00'},
  'Hansen & FORMA (yellow)'
);

Ceci conclut la présentation des ensembles de données sur l'évolution des forêts dans Earth Engine. Nous avons hâte de voir ce que vous allez en faire !