def test_add_exposures_to_edges(self):
     graph_proj = files.load_graph_kumpula_noise()
     edge_dicts = graph_utils.get_all_edge_dicts(graph_proj)
     edge_gdf = graph_utils.get_edge_gdf(
         graph_proj, attrs=['geometry', 'length', 'uvkey'], subset=5)
     edge_gdf['split_lines'] = [
         geom_utils.get_split_lines_list(line_geom, noise_polys)
         for line_geom in edge_gdf['geometry']
     ]
     split_lines = geom_utils.explode_lines_to_split_lines(edge_gdf,
                                                           uniq_id='uvkey')
     split_line_noises = noise_exps.get_noise_attrs_to_split_lines(
         split_lines, noise_polys)
     edge_noises = noise_exps.aggregate_line_noises(split_line_noises,
                                                    'uvkey')
     graph_utils.update_edge_attr_to_graph(graph_proj,
                                           edge_noises,
                                           df_attr='noises',
                                           edge_attr='noises')
     edge_dicts = graph_utils.get_all_edge_dicts(graph_proj)
     edge_d = edge_dicts[0]
     print(edge_d)
     exp_len_sum = sum(edge_d['noises'].values())
     assert (edge_d['noises'], round(exp_len_sum, 1)) == ({
         65: 107.025,
         70: 20.027
     }, round(edge_d['length'], 1))
Exemplo n.º 2
0
def add_noise_exposures_to_gdf(line_gdf, uniq_id, noise_polys):
    # add noises to lines as list
    line_gdf['split_lines'] = [
        geom_utils.get_split_lines_list(line_geom, noise_polys)
        for line_geom in line_gdf['geometry']
    ]
    # explode new rows from split lines column
    split_lines = geom_utils.explode_lines_to_split_lines(line_gdf, uniq_id)
    # join noises to split lines
    split_line_noises = get_noise_attrs_to_split_lines(split_lines,
                                                       noise_polys)
    # aggregate noises back to segments
    line_noises = aggregate_line_noises(split_line_noises, uniq_id)
    line_gdf = line_gdf.drop(['split_lines'], axis=1)
    return pd.merge(line_gdf, line_noises, how='inner', on=uniq_id)
Exemplo n.º 3
0
def get_edge_noises_df(edge_dicts):
    edge_gdf_sub = nw.get_edge_gdf(edge_dicts, ['geometry', 'length', 'uvkey'])
    # add noise split lines as list
    edge_gdf_sub['split_lines'] = [
        geom_utils.get_split_lines_list(line_geom, noise_polys)
        for line_geom in edge_gdf_sub['geometry']
    ]
    # explode new rows from split lines column
    split_lines = geom_utils.explode_lines_to_split_lines(
        edge_gdf_sub, 'uvkey')
    # join noises to split lines
    split_line_noises = exps.get_noise_attrs_to_split_lines(
        split_lines, noise_polys)
    # aggregate noises back to edges
    edge_noises = exps.aggregate_line_noises(split_line_noises, 'uvkey')
    return edge_noises
def get_edge_noises_df(edge_dicts):
    edge_gdf_sub = gpd.GeoDataFrame(
        edge_dicts, crs=from_epsg(3879))[['geometry', 'length', 'uvkey']]
    # build spatial indexes
    edges_sind = edge_gdf_sub.sindex
    # add noise split lines as list
    edge_gdf_sub['split_lines'] = [
        geom_utils.get_split_lines_list(line_geom, noise_polys)
        for line_geom in edge_gdf_sub['geometry']
    ]
    # explode new rows from split lines column
    split_lines = geom_utils.explode_lines_to_split_lines(
        edge_gdf_sub, 'uvkey')
    # join noises to split lines
    split_line_noises = exps.get_noise_attrs_to_split_lines(
        split_lines, noise_polys)
    # aggregate noises back to edges
    edge_noises = exps.aggregate_line_noises(split_line_noises, 'uvkey')
    return edge_noises