def sever_divergences(flow_table, vaa_table): flow_table = read_dbf(flow_table)[["fromcomid", "tocomid"]] vaa_table = read_dbf(vaa_table)[["comid", "streamcalc", "divergence"]] for direction in ("to", "from"): flow_table = pd.merge(flow_table, vaa_table, left_on="{}comid".format(direction), right_on="comid") flow_table = flow_table.rename(columns={ var: direction + var for var in ("streamcalc", "divergence") }) flow_table = flow_table[~((flow_table.fromstreamcalc > 0) & (flow_table.tostreamcalc == 0))] flow_table = flow_table[~(flow_table.todivergence == 2)] new_table = flow_table[["fromcomid", "tocomid"]].rename(columns={"fromcomid": "comid"}) return new_table
def get_residence_times(reservoir_table, volume_path): # Read and reformat volume table volume_table = read_dbf(volume_path)[["comid", "volumecorr"]] volume_table = volume_table.rename(columns={ "comid": "wb_comid", "volumecorr": "volume" }) # Join reservoir table with volumes joined_table = pd.merge(reservoir_table, volume_table, on="wb_comid") joined_table['residence_time'] = joined_table.volume / (joined_table.flow * 0.0283168) / 86400. del joined_table['volume'] return joined_table
def add_erom_data(erom_dir): # Read all monthly EROM tables master_table = None months = list(map(str, range(1, 13))) + ['ma'] for month in months: table_path = os.path.join(erom_dir, "EROM_{}0001.dbf".format(month.zfill(2))) fields = ["comid", "q0001e", "v0001e" ] if month == 'ma' else ["comid", "q0001e"] erom_table = read_dbf(table_path)[fields] erom_table.columns = [ c.replace("0001e", month) for c in erom_table.columns ] if master_table is None: master_table = erom_table else: master_table = pd.merge(master_table, erom_table, on='comid') return master_table
def extract_tables(flow_table, flow_lines, vaa_table, gridcode_table): extract_fields = [ ["featureid", "gridcode"], # gridcode_table ["comid", "fcode", "wbareacomi"], # flow lines ["comid", "hydroseq", "lengthkm", "streamcalc"] ] # vaa_table rename_fields = [("wbareacomi", "wb_comid"), ("terminalpa", "terminal_path")] for i, (table, fields) in enumerate( zip((gridcode_table, flow_lines, vaa_table, flow_table), extract_fields)): new_table = read_dbf(table)[fields] if fields[0] != "comid": new_table = new_table.rename(columns={fields[0]: 'comid'}) flow_table = pd.merge(flow_table, new_table, how='outer', on='comid') # Rename fields and filter out COMID = 0 flow_table = flow_table.rename( columns=dict(rename_fields))[flow_table.comid > 0] return flow_table