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")