Adding Data and Making a UI

  1. Go to Google Earth Engine Code Editor
  2. Define temporal and spatial variables to filter the datasets, namely the approximate ignition coordinates and start date of the fire.
  3. Use the following code snippet to set up location and date variables:
  4. var lon = -117.868;
    var lat = 34.241;
    var zoom = 9;
    var inYear = 2020;
    var inMonth = 9;
    var inDay = 6;
    var durationAF = 15; // in days
    var durationBA = 1; // in months
    var startDateAF = ee.Date.fromYMD(inYear, inMonth, inDay);
    var endDateAF = startDateAF.advance(durationAF, 'day');
    var startDateBA = ee.Date.fromYMD(inYear, inMonth, 1);
    var endDateBA = startDateBA.advance(durationBA, 'month');
  5. Upload the NIFC perimeter for the Bobcat Fire as an Earth Engine asset and use it as a reference layer.
  6. var WFIGS = ee.FeatureCollection('users/sounny/WFIGS');
    var reference = ee.Feature(WFIGS.filter(ee.Filter.eq('irwin_In_1', 'BOBCAT')).sort('poly_Acres', false).first());
  7. Process MODIS active fire datasets:
  8. var mod14a1 = ee.ImageCollection('MODIS/006/MOD14A1');
    var myd14a1 = ee.ImageCollection('MODIS/006/MYD14A1');
    var mod14a1Img = mod14a1.filterDate(startDateAF, endDateAF);
    var myd14a1Img = myd14a1.filterDate(startDateAF, endDateAF);
    var getFireMask = function(image) { return image.select('FireMask').gte(7); };
    var getMaxFRP = function(image) { return image.select('MaxFRP').multiply(0.1); };
    var mod14a1ImgMask = mod14a1Img.map(getFireMask).sum();
    var myd14a1ImgMask = myd14a1Img.map(getFireMask).sum();
    var mod14a1ImgFrp = mod14a1Img.map(getMaxFRP).sum();
    var myd14a1ImgFrp = myd14a1Img.map(getMaxFRP).sum();
  9. Process MODIS burned area dataset:
  10. var mcd64a1 = ee.ImageCollection('MODIS/006/MCD64A1');
    var getBurnDate = function(image) { return image.select('BurnDate'); };
    var mcd64a1Img = mcd64a1.filterDate(startDateBA, endDateBA);
    var mcd64a1ImgMask = mcd64a1Img.map(getBurnDate).min();
  11. Process GOES active fire products:
  12. var goes16 = ee.ImageCollection('NOAA/GOES/16/FDCF');
    var goes17 = ee.ImageCollection('NOAA/GOES/17/FDCF');
    var filterGOES = ee.Filter.calendarRange(0, 0, 'minute');
    var goes16Img = goes16.filterDate(startDateAF, endDateAF).filter(filterGOES);
    var goes17Img = goes17.filterDate(startDateAF, endDateAF).filter(filterGOES);
    var getFireMask = function(image) { return image.select('Mask').gte(10).and(image.select('Mask').lte(35)); };
    var getFRP = function(image) { return image.select('Power'); };
    var goes16ImgMask = goes16Img.map(getFireMask).sum();
    var goes17ImgMask = goes17Img.map(getFireMask).sum();
    var goes16ImgFrp = goes16Img.map(getFRP).sum();
    var goes17ImgFrp = goes17Img.map(getFRP).sum();
  13. Visualize the datasets and reference perimeter on the Earth Engine map:
  14. Map.addLayer(mod14a1ImgMask.selfMask(), { palette: 'orange' }, 'MOD14A1');
    Map.addLayer(myd14a1ImgMask.selfMask(), { palette: 'red' }, 'MYD14A1');
    Map.addLayer(mcd64a1ImgMask.selfMask(), { palette: 'black' }, 'MCD64A1');
    Map.addLayer(goes16ImgMask.selfMask(), { palette: 'skyblue' }, 'GOES16', false);
    Map.addLayer(goes17ImgMask.selfMask(), { palette: 'purple' }, 'GOES17', false);
    Map.setCenter(lon, lat, 9);
  15. For advanced visualization, use ui.Panel and ui.Map.Linker to compare datasets side by side.