Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/tests/tools/sumolib/net/runner.py
428387 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("version:", net.getVersion())
38
lane = net.getLane("SC_0")
39
lane2 = net.getLane("CN_0")
40
print("lanes to %s: %s" % (lane2.getID(), ' '.join(sorted([li.getID() for li in lane2.getIncoming()]))))
41
42
print("connections from %s:\n%s" % (
43
lane.getID(),
44
'\n'.join(list(map(str, lane.getOutgoing())))))
45
print("outgoing internal lanes of %s: %s" % (
46
lane.getID(), ' '.join([net.getLane(c.getViaLaneID()).getID() for c in lane.getOutgoing()])))
47
48
internal_edge = net.getEdge(":C_0")
49
internal_lane = net.getLane(":C_0_0")
50
internal_lane_cons = internal_lane.getOutgoing()
51
print("connections from %s:\n%s" % (internal_lane.getID(),
52
'\n'.join(map(str, internal_lane_cons))))
53
internal_lane_incoming = sorted(internal_lane.getIncoming())
54
print("lanes to %s: %s" % (internal_lane.getID(),
55
' '.join([li.getID() for li in internal_lane_incoming])))
56
assert internal_edge.getFunction() == 'internal'
57
assert internal_edge.isSpecial()
58
assert internal_lane.getEdge().isSpecial()
59
assert internal_edge.getFromNode().getID() == "C"
60
assert internal_edge.getToNode().getID() == "C"
61
62
# params
63
print("edgeParams", printSorted(net.getEdge("CE").getParams()))
64
print("laneParams", printSorted(net.getLane("CE_0").getParams()))
65
print("laneParams", printSorted(net.getLane("CE_1").getParams()))
66
print("junctionParams", printSorted(net.getNode("C").getParams()))
67
print("tlsParams", printSorted(net.getTLS("C").getPrograms()["0"].getParams()))
68
69
# functions
70
print("getNeighboringEdges", ' '.join(sorted([e.getID() for e, _ in net.getNeighboringEdges(100, 0, 10)])))
71
print("getNeighboringLanes", ' '.join(sorted([ln.getID() for ln, _ in net.getNeighboringLanes(100, 0, 10)])))
72
print("getNeighboringNodes only for incoming edges",
73
' '.join(sorted([n.getID() for n in net.getNode("N").getNeighboringNodes(False, True)])))
74
print("getNeighboringNodes only for outgoing edges",
75
' '.join(sorted([n.getID() for n in net.getNode("S").getNeighboringNodes(True, False)])))
76
print("getNeighboringNodes", ' '.join(sorted([n.getID() for n in net.getNode("C").getNeighboringNodes()])))
77
78