sumolib.net.connection
1# Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo 2# Copyright (C) 2011-2026 German Aerospace Center (DLR) and others. 3# This program and the accompanying materials are made available under the 4# terms of the Eclipse Public License 2.0 which is available at 5# https://www.eclipse.org/legal/epl-2.0/ 6# This Source Code may also be made available under the following Secondary 7# Licenses when the conditions for such availability set forth in the Eclipse 8# Public License 2.0 are satisfied: GNU General Public License, version 2 9# or later which is available at 10# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html 11# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later 12 13# @file connection.py 14# @author Daniel Krajzewicz 15# @author Laura Bieker 16# @author Karol Stosiek 17# @author Michael Behrisch 18# @author Jakob Erdmann 19# @date 2011-11-28 20 21from sumolib.net.lane import get_allowed 22 23 24class Connection: 25 # constants as defined in sumo/src/utils/xml/SUMOXMLDefinitions.cpp 26 LINKDIR_STRAIGHT = "s" 27 LINKDIR_TURN = "t" 28 LINKDIR_TURN_LEFTHAND = "T" 29 LINKDIR_LEFT = "l" 30 LINKDIR_RIGHT = "r" 31 LINKDIR_PARTLEFT = "L" 32 LINKDIR_PARTRIGHT = "R" 33 34 """edge connection for a sumo network""" 35 36 def __init__(self, fromEdge, toEdge, fromLane, toLane, direction, 37 tls, tllink, tllink2, allow, disallow, state, viaLaneID=None): 38 self._from = fromEdge 39 self._to = toEdge 40 self._fromLane = fromLane 41 self._toLane = toLane 42 self._direction = direction 43 self._tls = tls 44 self._tlLink = tllink 45 self._tlLink2 = tllink2 46 self._state = state 47 self._via = viaLaneID 48 self._allowed = get_allowed(allow, disallow) 49 self._params = {} 50 51 def __str__(self): 52 return '<connection from="%s" to="%s" fromLane="%s" toLane="%s" %s%sdirection="%s">' % ( 53 self._from.getID(), 54 self._to.getID(), 55 self._fromLane.getIndex(), 56 self._toLane.getIndex(), 57 ('' if self._tls == '' else 'tl="%s" linkIndex="%s" ' % (self._tls, self._tlLink)), 58 ('' if self._tlLink2 < 0 else ' linkIndex2="%s" ' % self._tlLink2), 59 self._direction) 60 61 def allows(self, vClass): 62 """true if this connection allows the given vehicle class""" 63 if vClass is None or vClass == "ignoring": 64 return True 65 return vClass in self._allowed 66 67 def setParam(self, key, value): 68 self._params[key] = value 69 70 def getParam(self, key, default=None): 71 return self._params.get(key, default) 72 73 def getParams(self): 74 return self._params 75 76 def getFrom(self): 77 return self._fromLane.getEdge() 78 79 def getTo(self): 80 return self._toLane.getEdge() 81 82 def getFromLane(self): 83 return self._fromLane 84 85 def getToLane(self): 86 return self._toLane 87 88 def getViaLaneID(self): 89 return self._via 90 91 def getDirection(self): 92 return self._direction 93 94 def getTLSID(self): 95 return self._tls 96 97 def getTLLinkIndex(self): 98 return self._tlLink 99 100 def getTLLinkIndex2(self): 101 return self._tlLink2 102 103 def getJunctionIndex(self): 104 return self._from.getToNode().getLinkIndex(self) 105 106 def getJunction(self): 107 return self._from.getToNode() 108 109 def getState(self): 110 return self._state
class
Connection:
25class Connection: 26 # constants as defined in sumo/src/utils/xml/SUMOXMLDefinitions.cpp 27 LINKDIR_STRAIGHT = "s" 28 LINKDIR_TURN = "t" 29 LINKDIR_TURN_LEFTHAND = "T" 30 LINKDIR_LEFT = "l" 31 LINKDIR_RIGHT = "r" 32 LINKDIR_PARTLEFT = "L" 33 LINKDIR_PARTRIGHT = "R" 34 35 """edge connection for a sumo network""" 36 37 def __init__(self, fromEdge, toEdge, fromLane, toLane, direction, 38 tls, tllink, tllink2, allow, disallow, state, viaLaneID=None): 39 self._from = fromEdge 40 self._to = toEdge 41 self._fromLane = fromLane 42 self._toLane = toLane 43 self._direction = direction 44 self._tls = tls 45 self._tlLink = tllink 46 self._tlLink2 = tllink2 47 self._state = state 48 self._via = viaLaneID 49 self._allowed = get_allowed(allow, disallow) 50 self._params = {} 51 52 def __str__(self): 53 return '<connection from="%s" to="%s" fromLane="%s" toLane="%s" %s%sdirection="%s">' % ( 54 self._from.getID(), 55 self._to.getID(), 56 self._fromLane.getIndex(), 57 self._toLane.getIndex(), 58 ('' if self._tls == '' else 'tl="%s" linkIndex="%s" ' % (self._tls, self._tlLink)), 59 ('' if self._tlLink2 < 0 else ' linkIndex2="%s" ' % self._tlLink2), 60 self._direction) 61 62 def allows(self, vClass): 63 """true if this connection allows the given vehicle class""" 64 if vClass is None or vClass == "ignoring": 65 return True 66 return vClass in self._allowed 67 68 def setParam(self, key, value): 69 self._params[key] = value 70 71 def getParam(self, key, default=None): 72 return self._params.get(key, default) 73 74 def getParams(self): 75 return self._params 76 77 def getFrom(self): 78 return self._fromLane.getEdge() 79 80 def getTo(self): 81 return self._toLane.getEdge() 82 83 def getFromLane(self): 84 return self._fromLane 85 86 def getToLane(self): 87 return self._toLane 88 89 def getViaLaneID(self): 90 return self._via 91 92 def getDirection(self): 93 return self._direction 94 95 def getTLSID(self): 96 return self._tls 97 98 def getTLLinkIndex(self): 99 return self._tlLink 100 101 def getTLLinkIndex2(self): 102 return self._tlLink2 103 104 def getJunctionIndex(self): 105 return self._from.getToNode().getLinkIndex(self) 106 107 def getJunction(self): 108 return self._from.getToNode() 109 110 def getState(self): 111 return self._state
Connection( fromEdge, toEdge, fromLane, toLane, direction, tls, tllink, tllink2, allow, disallow, state, viaLaneID=None)
37 def __init__(self, fromEdge, toEdge, fromLane, toLane, direction, 38 tls, tllink, tllink2, allow, disallow, state, viaLaneID=None): 39 self._from = fromEdge 40 self._to = toEdge 41 self._fromLane = fromLane 42 self._toLane = toLane 43 self._direction = direction 44 self._tls = tls 45 self._tlLink = tllink 46 self._tlLink2 = tllink2 47 self._state = state 48 self._via = viaLaneID 49 self._allowed = get_allowed(allow, disallow) 50 self._params = {}
def
allows(self, vClass):
62 def allows(self, vClass): 63 """true if this connection allows the given vehicle class""" 64 if vClass is None or vClass == "ignoring": 65 return True 66 return vClass in self._allowed
true if this connection allows the given vehicle class