Download forecast precipitation dataset from CHIRPS-GEFS website using Python

Written by Men Vuthy, 2022


Objective

  • The objective is to download forecast daily precipitation from CHIRPS-GEFS website by using Python, and save in local directory.

Data folder:

img1

Code

Import modules

[1]:
import os
import pandas as pd
from urllib import request

Parameter Setting

[4]:
# Main website url
url = 'https://data.chc.ucsb.edu/products/EWX/data/forecasts/CHIRPS-GEFS_precip_v12/05day/precip_mean/'

# Directory for export
export_dir = '/content/data_download/'

# Start date range from i to j
start_date_i = '2000-01-01'
start_date_j = '2000-01-10'

# End date range from i to j
end_date_i = '2000-01-05'
end_date_j = '2000-01-14'

Start download

[5]:
# Create list of start date
dateRange_pdcore = pd.date_range(start_date_i, start_date_j)
dateRange = pd.DataFrame({'date':dateRange_pdcore })

startDate = []
for i in range(len(dateRange)):
  ts = pd.to_datetime(str(dateRange.date.values[i]))
  d = ts.strftime('%Y%m%d')
  startDate.append(d)

# Create list of end date
dateRange_pdcore = pd.date_range(end_date_i, end_date_j)
dateRange = pd.DataFrame({'date':dateRange_pdcore })

endtDate = []
for i in range(len(dateRange)):
  ts = pd.to_datetime(str(dateRange.date.values[i]))
  d = ts.strftime('%Y%m%d')
  endtDate.append(d)

# download_url, save_localFile = [], []
for i in range(len(startDate)):
  # Create file name
  download_url = os.path.join(url + 'data-mean_'+ startDate[i]+ '_'+ endtDate[i]+ '.tif')

  # Create file name for saving to local drive
  save_localFile = export_dir + 'data-mean_'+ startDate[i]+ '_'+ endtDate[i]+ '.tif'

  # Download remote and save locally
  request.urlretrieve(download_url, save_localFile)

After executing above code, the downloaded data will be located in the export_dir.

Downloaded data:

img2