Converts Andy's merra evaporation climatology data to files with a value to use by basin


In [ ]:
import pandas as pd
import numpy as np
from charistools.hypsometry import Hypsometry
from charistools.modelEnv import ModelEnv
from charistools.readers import read_tile

In [ ]:
dirname = '/Users/brodzik/projects/CHARIS/evaporation/merra'
%cd $dirname
%ls

In [ ]:
filename = 'merra_evap_high_asia_calibration_basins_month_clim.txt'

In [ ]:
drainageids = ['AM_Vakhsh_at_Komsomolabad',
               'IN_Hunza_at_DainyorBridge',
               'GA_Karnali_at_Benighat',
               'GA_Narayani_at_Devghat',
               'GA_SaptaKosi_at_Chatara']
names = ['month'] + drainageids
names

In [ ]:
clim = pd.read_csv(filename, delim_whitespace=True, skiprows=3, header=None, 
                   names=names)

Data units are cm.


In [ ]:
clim

For each of the calibration basins, open the masks and calculate the area.


In [ ]:
def basin_area(drainageid):
    myEnv = ModelEnv("/Users/brodzik/ipython_notebooks/charis/calibration_modelEnv_config.ini")
    tiles = myEnv.tileIDs_for_drainage(drainageid)
    area = 0.
    for tile in tiles:
        maskFile = myEnv.fixed_filename(type='basin_mask', drainageID=drainageid, tileID=tile)
        data = read_tile(maskFile, verbose=True)
        area = area + (data[data == 1].sum() * myEnv.modis_tile_500m_pixel_area_km2)
    return(area)

In [ ]:
for drainageid in drainageids:
    area = basin_area(drainageid)
    sub = clim[['month', drainageid]]
    sub['Area_km2'] = area
    cm_to_km = 1. / (1000. * 100.)
    sub['ET_km3'] = sub[drainageid] * cm_to_km * sub['Area_km2']
    outfile = drainageid + '.merra.ET_clim.txt'
    sub.to_csv(outfile)

In [ ]:
myEnv.modis_tile_500m_pixel_area_km2

In [ ]:
test

In [ ]:
test[test < 6]

In [ ]:
test[test < 6].sum()

In [ ]: