def merge_abstract_graphs(cls, abstract_graph_a, abstract_graph_b): start_id = abstract_graph_a.start_id end_id = abstract_graph_b.end_id start_angle = abstract_graph_a.start_angle end_angle = abstract_graph_b.end_angle abstract_coords = util.glue_list_pair(abstract_graph_a.abstract_coords, abstract_graph_b.abstract_coords) physical_coords = util.glue_list_pair(abstract_graph_a.physical_coords, abstract_graph_b.physical_coords) data = cls(start_id, end_id, start_angle, end_angle, abstract_coords, physical_coords) return data
def merge_two_spatial_graphs(cls, spatial_graph_a, spatial_graph_b, graph_interpolator, resolution): abstract_graph_a = spatial_graph_a.to_abstract_graph() abstract_graph_b = spatial_graph_b.to_abstract_graph() merged_abstract_graph = \ abstract_graphs.AbstractGraph.merge_abstract_graphs( abstract_graph_a, abstract_graph_b) land_cost = spatial_graph_a.land_cost + spatial_graph_b.land_cost pylon_cost = spatial_graph_a.pylon_cost + spatial_graph_b.pylon_cost tube_cost = spatial_graph_a.tube_cost + spatial_graph_b.tube_cost tunneling_cost = (spatial_graph_a.tunneling_cost + spatial_graph_b.tunneling_cost) latlngs = util.glue_list_pair(spatial_graph_a.latlngs, spatial_graph_b.latlngs) elevation_profile = elevation.ElevationProfile.merge_elevation_profiles( spatial_graph_a.elevation_profile, spatial_graph_b.elevation_profile) tube_curvature_array = util.glue_array_pair( spatial_graph_a.tube_curvature_array, spatial_graph_b.tube_curvature_array) spatial_curvature_array = SpatialGraph.merge_spatial_curvature_arrays( spatial_graph_a, spatial_graph_b, graph_interpolator, resolution) merged_spatial_graph = cls(merged_abstract_graph, land_cost, pylon_cost, tube_cost, tunneling_cost, latlngs, elevation_profile, spatial_curvature_array, tube_curvature_array) return merged_spatial_graph
def merge_two_tube_graphs(cls, tube_graph_a, tube_graph_b, graph_interpolator, resolution): abstract_graph_a = tube_graph_a.to_abstract_graph() abstract_graph_b = tube_graph_b.to_abstract_graph() merged_abstract_graph = \ abstract_graphs.AbstractGraph.merge_abstract_graphs( abstract_graph_a, abstract_graph_b) pylons_costs = util.glue_list_pair(tube_graph_a.pylons_costs, tube_graph_b.pylons_costs) total_pylon_cost = sum(pylons_costs) tube_cost = tube_graph_a.tube_cost + tube_graph_b.tube_cost tunneling_cost = (tube_graph_a.tunneling_cost + tube_graph_b.tunneling_cost) total_cost = tube_graph_a.total_cost + tube_graph_b.total_cost arc_lengths_partitions = (tube_graph_a.arc_lengths_partitions + tube_graph_b.arc_lengths_partitions) tube_elevations_partitions = (tube_graph_a.tube_elevations_partitions + tube_graph_b.tube_elevations_partitions) merged_tube_curvature_array = TubeGraph.merge_tube_curvature_arrays( tube_graph_a, tube_graph_b, graph_interpolator, resolution) data = cls(merged_abstract_graph, pylons_costs, total_pylon_cost, tube_cost, tunneling_cost, total_cost, arc_lengths_partitions, tube_elevations_partitions, tube_curvature_array=merged_tube_curvature_array) return data