GLAD at UMD provides the primary forest for 2000 which is the base map for most of their analysis. This primary forest consists of natural long-lived forest extent. The mapping and definition for the primary forest are based on the methodology as described in the paper for humid tropical forests and modified to include dry and seasonal forest types. The threshold for the tree canopy cover (tcc) is 25%.

Here we will be using the Primary Forest for 2000 and based on the forest definition, we will calculate the primary forest for each year after 2000.

  1. Import the tcc, tree canopy height (tch), area of interest and primary forest for 2000.
    var tcc = ee.ImageCollection("projects/servir-mekong/yearly_primitives_smoothed/tree_canopy"),
        tch = ee.ImageCollection("projects/servir-mekong/yearly_primitives_smoothed/tree_height"),
        mekong = ee.FeatureCollection("users/biplov/gadm-mekong"),
        primary2000 = ee.Image("users/biplov/primary-forest-2000");
  2.  Base on the tcc and tch threshold, make a function to iterate over the required years to compute the primary forest as we go.
    var tccThreshold = 25;
    var tchThreshold = 5;
    var startYear = 2001;
    var endYear = 2018;
    var getPrimaryForest = function(year, list) {
      var tccImage = ee.Image(tcc.filterDate(ee.Date.fromYMD(year, 1, 1), ee.Date.fromYMD(year, 12, 31)).first());
      var tchImage = ee.Image(tch.filterDate(ee.Date.fromYMD(year, 1, 1), ee.Date.fromYMD(year, 12, 31)).first());
      var previous = ee.Image(ee.List(list).get(-1));
      var mask =;
      var image = previous.updateMask(mask);
      image = image.set('system:time_start', ee.Date.fromYMD(year, 1, 1).millis());
      return ee.List(list).add(image);
    var sequence =  ee.List.sequence(startYear, endYear);
    var first = ee.List([primary2000]);
    var primaryForestList = ee.List(sequence.iterate(getPrimaryForest, first));
    var primaryForest = ee.ImageCollection(primaryForestList);
    var primary2018 = primaryForest.filterDate('2018-01-01', '2018-12-31').first();
    primary2018 = primary2018.toByte();
    Map.addLayer(primary2018, {min:0, max:1, palette: 'green'}, 'primary forest 2018');

Get the full code here.

Happy Earth Science 🙂