Skip to content

Commit c9b434a

Browse files
Merge pull request #55 from BP2022-AP1/refactor/replace-connected-nodes-edges
Refactor: Replace connected nodes edges
2 parents 3994b67 + 2950910 commit c9b434a

File tree

5 files changed

+493
-568
lines changed

5 files changed

+493
-568
lines changed

orm_importer/importer.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,11 @@ def _get_edge_speed(self, edge: Edge):
136136
ways_b = set(self.ways[edge.node_b.name])
137137
common_ways = ways_a.intersection(ways_b)
138138
if len(common_ways) != 1:
139-
return None
140-
max_speed = common_ways.pop().tags.get("maxspeed", None)
141-
return int(max_speed) if max_speed else None
139+
# The default 160 is arbitrary and set, so the following steps produce working output.
140+
return 160
141+
maxspeed = common_ways.pop().tags.get("maxspeed", None)
142+
# The default 160 is arbitrary and set, so the following steps produce working output.
143+
return int(maxspeed) if maxspeed else 160
142144

143145
def _should_add_edge(self, node_a: model.Node, node_b: model.Node, path: list[int]):
144146
edge_not_present = not self.topology.get_edge_by_nodes(node_a, node_b)
@@ -191,8 +193,8 @@ def run(self, polygon, railway_option_types: list[str] = None):
191193
if node_a and node_b and self._should_add_edge(node_a, node_b, path):
192194
self.paths[(node_a, node_b)].append(path)
193195
current_edge = model.Edge(node_a, node_b)
194-
node_a.connected_nodes.append(node_b)
195-
node_b.connected_nodes.append(node_a)
196+
node_a.connected_edges.append(current_edge)
197+
node_b.connected_edges.append(current_edge)
196198
self.topology.add_edge(current_edge)
197199
self._add_geo_nodes(path, current_edge)
198200
current_edge.update_length()
@@ -249,9 +251,10 @@ def run(self, polygon, railway_option_types: list[str] = None):
249251
candidate.lat, candidate.lon
250252
).to_dbref()
251253
new_edge = Edge(node, new_node)
254+
new_edge.maximum_speed = 160
252255
new_edge.update_length()
253-
node.connected_nodes.append(new_node)
254-
new_node.connected_nodes.append(node)
256+
node.connected_edges.append(new_edge)
257+
new_node.connected_edges.append(new_edge)
255258
nodes_to_add.append(new_node)
256259
self.topology.add_edge(new_edge)
257260
break

orm_importer/utils.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,12 @@ def merge_edges(e1: model.Edge, e2: model.Edge, node_to_remove: model.Node):
142142
print(str(e2.node_a.uuid) + " " + str(e2.node_b.uuid))
143143
first_node = e1.node_a if e1.node_b == node_to_remove else e1.node_b
144144
second_node = e2.node_a if e2.node_b == node_to_remove else e2.node_b
145-
first_node.connected_nodes.remove(node_to_remove)
146-
first_node.connected_nodes.append(second_node)
147-
second_node.connected_nodes.remove(node_to_remove)
148-
second_node.connected_nodes.append(first_node)
145+
first_node.remove_edge_to_node(node_to_remove)
146+
second_node.remove_edge_to_node(node_to_remove)
149147
edge = Edge(first_node, second_node)
148+
edge.maximum_speed = min(e1.maximum_speed, e2.maximum_speed)
149+
first_node.connected_edges.append(edge)
150+
second_node.connected_edges.append(edge)
150151
edge.signals = e1.signals + e2.signals
151152
edge.intermediate_geo_nodes = e1.intermediate_geo_nodes + e2.intermediate_geo_nodes
152153
edge.update_length()

0 commit comments

Comments
 (0)