Historical flood occurrence

Calculate flood frequency from the JRC surface water

Step 1: import the JRC Monthly Water History v1.0 (1984-2015)

var jrc = ee.ImageCollection("JRC/GSW1_0/MonthlyHistory");

Step 2: Set the geometry of the country

 // Define country name
var country_names = ['Paraguay'];
// import the country feasture collection
var countries = ee.FeatureCollection('ft:1tdSwUL7MVpOauSgRzqVTOwdfy17KDbw-1d9omPw');
// find the countries in the country list
var Country = countries.filter(ee.Filter.inList('Country', country_names)).geometry();

Step 3: Define the study period

// Define study period
var startDate = ee.Date.fromYMD(1985, 1, 1);
var endDate = ee.Date.fromYMD(2016, 12, 31);

Step 4: filter the data for the study period

// filter jrc data for country and period
var myjrc = jrc.filterBounds(Country).filterDate(startDate, endDate);

Step 5: Set all observations to 1 and add the layer as a new bands

// Detect observations
var myjrc = myjrc.map(function(img){
  // observation is img > 0
  var obs = img.gt(0);
  return img.addBands(obs.rename('obs').set('system:time_start', img.get('system:time_start')));
});

Step 6: Set all observations with water to 1 and add the layer as a new bands

// Detect all observations with water
var myjrc = myjrc.map(function(img){
  // if water
  var water = img.select('water').eq(2);
  return img.addBands(water.rename('onlywater').set('system:time_start', img.get('system:time_start')));
});

Step 7: calculate total number of observations and number of observations with water

// calculate the total amount of observations
var totalObs = ee.Image(ee.ImageCollection(myjrc.select("obs")).sum().toFloat());
// calculate all observations with water
var totalWater = ee.Image(ee.ImageCollection(myjrc.select("onlywater")).sum().toFloat());

Step 8: Calculate the percentage of observations with water.

// calculate the percentage of observations with water
var floodfreq = totalWater.divide(totalObs).multiply(100);

Step 9: Mask areas without water

// maks areas that are not water
var myMask = floodfreq.eq(0).not();
floodfreq = floodfreq.updateMask(myMask);

Step 10: visualize the result.

var viz = {min:0, max:50, palette:['c10000,d742f4,001556,b7d2f7']};
Map.addLayer(floodfreq.clip(Country),viz,"Flood frequency")

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s