Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/tests/tools/sumolib/net_intermodal/runner.py
428384 views
1
#!/usr/bin/env python
2
# Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
# Copyright (C) 2008-2026 German Aerospace Center (DLR) and others.
4
# This program and the accompanying materials are made available under the
5
# terms of the Eclipse Public License 2.0 which is available at
6
# https://www.eclipse.org/legal/epl-2.0/
7
# This Source Code may also be made available under the following Secondary
8
# Licenses when the conditions for such availability set forth in the Eclipse
9
# Public License 2.0 are satisfied: GNU General Public License, version 2
10
# or later which is available at
11
# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12
# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13
14
# @file runner.py
15
# @author Jakob Erdmann
16
# @date
17
18
from __future__ import absolute_import
19
from __future__ import print_function
20
21
22
import os
23
import sys
24
if 'SUMO_HOME' in os.environ:
25
tools = os.path.join(os.environ['SUMO_HOME'], 'tools')
26
sys.path.append(tools)
27
else:
28
sys.exit("please declare environment variable 'SUMO_HOME'")
29
import sumolib.net # noqa
30
31
32
def printSorted(d):
33
return ' '.join(["%s:%s" % (k, d[k]) for k in sorted(d.keys())])
34
35
36
net = sumolib.net.readNet(sys.argv[1], withInternal=True, withLatestPrograms=True)
37
print("list of all edges")
38
for edge in net.getEdges():
39
print(edge.getID())
40
41
print("list of internal edgeIDs of node 'C' (attribute)")
42
for edgeID in net.getNode("C").getInternal():
43
print(edgeID)
44
45
print("list of internal edgeIDs of node 'C' (complete)")
46
node = net.getNode("C")
47
for edge in net.getEdges():
48
if edge.getFromNode() == node and edge.getToNode() == node:
49
print(edge.getID())
50
51
for laneID in ["SC_0", ":C_w2_0"]:
52
lane = net.getLane(laneID)
53
print("connections from %s:\n%s" % (
54
lane.getID(),
55
'\n'.join(list(map(str, lane.getOutgoing())))))
56
print("outgoing internal lanes of %s: %s" % (
57
lane.getID(), ' '.join(
58
[net.getLane(c.getViaLaneID()).getID()
59
if c.getViaLaneID() != "" else ""
60
for c in lane.getOutgoing()])))
61
62
for laneID in ["CN_0", ":C_w2_0"]:
63
lane2 = net.getLane(laneID)
64
print("lanes to %s: %s" % (lane2.getID(), ' '.join(sorted([li.getID() for li in lane2.getIncoming()]))))
65
66
internal_edge = net.getEdge(":C_0")
67
internal_lane = net.getLane(":C_0_0")
68
internal_lane_cons = internal_lane.getOutgoing()
69
print("connections from %s:\n%s" % (internal_lane.getID(),
70
'\n'.join(map(str, internal_lane_cons))))
71
internal_lane_incoming = sorted(internal_lane.getIncoming())
72
print("lanes to %s: %s" % (internal_lane.getID(),
73
' '.join([li.getID() for li in internal_lane_incoming])))
74
assert internal_edge.getFunction() == 'internal'
75
assert internal_edge.isSpecial()
76
assert internal_lane.getEdge().isSpecial()
77
assert internal_edge.getFromNode().getID() == "C"
78
assert internal_edge.getToNode().getID() == "C"
79
80
# params
81
print("edgeParams", printSorted(net.getEdge("CE").getParams()))
82
print("laneParams", printSorted(net.getLane("CE_0").getParams()))
83
print("laneParams", printSorted(net.getLane("CE_1").getParams()))
84
print("junctionParams", printSorted(net.getNode("C").getParams()))
85
print("tlsParams", printSorted(net.getTLS("C").getPrograms()["0"].getParams()))
86
87
# functions
88
print("getNeighboringEdges", ' '.join(sorted([e.getID() for e, _ in net.getNeighboringEdges(100, 0, 10)])))
89
print("getNeighboringLanes", ' '.join(sorted([ln.getID() for ln, _ in net.getNeighboringLanes(100, 0, 10)])))
90
print("getNeighboringNodes only for incoming edges",
91
' '.join(sorted([n.getID() for n in net.getNode("N").getNeighboringNodes(False, True)])))
92
print("getNeighboringNodes only for outgoing edges",
93
' '.join(sorted([n.getID() for n in net.getNode("S").getNeighboringNodes(True, False)])))
94
print("getNeighboringNodes", ' '.join(sorted([n.getID() for n in net.getNode("C").getNeighboringNodes()])))
95
96