def test_mask_is_stable():
    mg = RasterModelGrid((10, 10))
    mg.add_zeros("node", "topographic__elevation")
    np.random.seed(3542)
    noise = np.random.rand(mg.size("node"))
    mg.at_node["topographic__elevation"] += noise
    fr = FlowAccumulator(mg, flow_director="D8")
    fsc = FastscapeEroder(mg, K_sp=0.01, m_sp=0.5, n_sp=1)
    for x in range(2):
        fr.run_one_step()
        fsc.run_one_step(dt=10.0)
        mg.at_node["topographic__elevation"][mg.core_nodes] += 0.01

    mask = np.zeros(len(mg.at_node["topographic__elevation"]), dtype=np.uint8)
    mask[np.where(mg.at_node["drainage_area"] > 0)] = 1

    mask0 = mask.copy()

    dd = DrainageDensity(mg, channel__mask=mask)
    mask1 = mask.copy()

    dd.calc_drainage_density()
    mask2 = mask.copy()

    assert_array_equal(mask0, mask1)
    assert_array_equal(mask0[mg.core_nodes], mask2[mg.core_nodes])
Exemplo n.º 2
0
def CalandConv_DrainageDensity(rmg, DD_thrshld, filename):
    rmg.at_node['topographic__elevation'][rmg.core_nodes]
    channels = np.array(rmg.at_node['drainage_area'] > DD_thrshld,
                        dtype=np.uint8)
    dd = DrainageDensity(rmg, channel__mask=channels)
    mean_drainage_density = dd.calc_drainage_density()
    print 'the mean drainage density of %s is: %f' % (filename,
                                                      mean_drainage_density)

    return mean_drainage_density