Beispiel #1
0
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
Beispiel #3
0
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
Beispiel #4
0
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