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))
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)
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