FORMA est un système d'alerte de déforestation bimensuel de 500 x 500 mètres basé sur MODIS pour les forêts tropicales humides. L'ensemble de données FORMA 500 dans Earth Engine est une image avec des alertes à partir de janvier 2006, qui est mise à jour tous les mois. Chaque alerte est associée à une heure dans une seule bande nommée alert_date
, en secondes epoch. Filtrer les données FORMA par dates et calculer les alertes dans des 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 sont produites en 2012, recherchez les pixels dont les heures sont comprises entre le premier jour de 2012 et le premier jour de 2013, exprimées en secondes depuis minuit le 1er janvier 1970 :
É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 contenant uniquement les pixels dont les heures 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, reprenez 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'));
Compter les alertes FORMA dans plusieurs régions d'intérêt
Jusqu'à présent, nous avons calculé les statistiques dans une seule région à la fois. Pour calculer des statistiques dans plusieurs régions à la fois, vous pouvez utiliser reduceRegions()
. Encore une fois, en s'appuyant sur 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 notez 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 dispose désormais d'une propriété supplémentaire, sum
, nommée d'après le réducteur. La valeur de cette propriété correspond à la sortie du réducteur ou au nombre d'alertes de 2012 dans les zones protégées.
Comparer les 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 à la fois par FORMA et par les données de 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 calques de déforestation prévus :
É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 découvrir ce que vous allez créer avec !