Monthly rainfall

What month has most rain?

Step 1: import the chirps data

Step 2: Set the date variables

// set start and end year
var startyear = 2000;
var endyear = 2014;

// make a date object
var startdate = ee.Date.fromYMD(startyear, 1, 1);
var enddate = ee.Date.fromYMD(endyear + 1, 1, 1);

// make a list with years
var years = ee.List.sequence(startyear, endyear);
// make a list with months
var months = ee.List.sequence(1, 12);

Step 3: Set the geography

// Specify Country names
var country_names = ['Indonesia'];

// Get the country boundaries
var countries = ee.FeatureCollection('ft:1tdSwUL7MVpOauSgRzqVTOwdfy17KDbw-1d9omPw');

// Filter for country
var Indonesia = countries.filter(ee.Filter.inList('Country', country_names));

// Get the geometry
var Indonesia = Indonesia.geometry();

Step 4: Calculate monthly precipitation

var monthlyPrecip =  ee.ImageCollection.fromImages(
  years.map(function (y) {
    return months.map(function(m) {
      var w = chirps.filter(ee.Filter.calendarRange(y, y, 'year'))
                    .filter(ee.Filter.calendarRange(m, m, 'month'))
                    .sum();
      return w.set('year', y)
              .set('month', m)
              .set('system:time_start', ee.Date.fromYMD(y, m, 1));

    });
  }).flatten()
);

Step 5: Calculate monthly precipitation

var meanMonthlyP =  ee.ImageCollection.fromImages(
  months.map(function (m) {
    var w = monthlyPrecip.filter(ee.Filter.eq('month', m)).mean();
    return w.set('month', m)
            .set('system:time_start',ee.Date.fromYMD(1, m, 1));
  }).flatten()
);

Step 5: Calculate monthly precipitation

var meanMonthlyP =  ee.ImageCollection.fromImages(
  months.map(function (m) {
    var w = monthlyPrecip.filter(ee.Filter.eq('month', m)).mean();
    return w.set('month', m)
            .set('system:time_start',ee.Date.fromYMD(1, m, 1));
  }).flatten()
);

Step 6: Create and plot the chart

var title = {
  title: 'Monthly precipitation',
  hAxis: {title: 'Time'},
  vAxis: {title: 'Precipitation (mm)'},
};

var chartMonthly = ui.Chart.image.seriesByRegion({
  imageCollection: meanMonthlyP,
  regions: Indonesia,
  reducer: ee.Reducer.mean(),
  band: 'precipitation',
  scale: 2500,
  xProperty: 'system:time_start',
  seriesProperty: 'SITE'
}).setOptions(title)
  .setChartType('ColumnChart');

print(chartMonthly);

See an example here

Advertisements

5 comments

    1. Its monthly rainfall related to the period 2000 – 2014.
      the statement in step 5 results in the startdate of 1901 (.set(‘system:time_start’,ee.Date.fromYMD(1, m, 1));)
      you e.g. change it to the year 2000: (.set(‘system:time_start’,ee.Date.fromYMD(2000, m, 1));)

      Like

  1. Hello sir,
    After I change from 1 to 2000,2001,2002…. but the results are always the same. I have something wrong?
    Thank a lot sir

    Like

  2. Hi, do you have any example on how to do monthly rainfall anomaly calculation using chirps daily data?
    Lets say the step to be done is below:
    – Calculate monthly long-term average (LTA) using data from 1981 – 2017 as base period
    – Calculate monthly accumulation for Jan 2018 (example)
    – Calculate rainfall anomaly for Jan 2018 by dividing Rainfall Jan 2018 with LTA Jan

    Like

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 )

Google photo

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

Twitter picture

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

Facebook photo

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

Connecting to %s