Example #1
0
 def addEdge(self, id, fromID, toID, prio, function, name):
     if id not in self._id2edge:
         fromN = self.addNode(fromID)
         toN = self.addNode(toID)
         edge = Edge(id, fromN, toN, prio, function, name)
         self._edges.append(edge)
         self._id2edge[id] = edge
     return self._id2edge[id]
Example #2
0
 def startElement(self, name, attrs):
     if name == 'district':
         self._StartDTIn = self._net.newVertex()
         self._StartDTIn.label = attrs['id']
         self._StartDTOut = self._net.newVertex()
         self._StartDTOut.label = self._StartDTIn.label
         self._net._startVertices.append(self._StartDTIn)
         self._net._endVertices.append(self._StartDTOut)
     elif name == 'dsink':
         sinklink = self._net.getEdge(attrs['id'])
         self.I += 1
         conlink = self._StartDTOut.label + str(self.I)
         newEdge = Edge(conlink, sinklink.target, self._StartDTOut, "real")
         self._net.addEdge(newEdge)
         newEdge.ratio = attrs['weight']
         newEdge.connection = 1
     elif name == 'dsource':
         sourcelink = self._net.getEdge(attrs['id'])
         self.I += 1
         conlink = self._StartDTIn.label + str(self.I)
         newEdge = Edge(conlink, self._StartDTIn, sourcelink.source, "real")
         self._net.addEdge(newEdge)
         newEdge.ratio = attrs['weight']
         newEdge.connection = 2
Example #3
0
 def startElement(self, name, attrs):
     if name == 'district':
         self._StartDTIn = self._net.newVertex()
         self._StartDTIn.label = attrs['id']
         self._StartDTOut = self._net.newVertex()
         self._StartDTOut.label = self._StartDTIn.label
         self._net._startVertices.append(self._StartDTIn)
         self._net._endVertices.append(self._StartDTOut)
     elif name == 'dsink':
         sinklink = self._net.getEdge(attrs['id'])
         self.I += 1
         conlink = self._StartDTOut.label + str(self.I)
         newEdge = Edge(conlink, sinklink.target, self._StartDTOut, "real")
         self._net.addEdge(newEdge)
         newEdge.ratio = attrs['weight']
         newEdge.connection = 1
     elif name == 'dsource':
         sourcelink = self._net.getEdge(attrs['id'])
         self.I += 1
         conlink = self._StartDTIn.label + str(self.I)
         newEdge = Edge(conlink, self._StartDTIn, sourcelink.source, "real")
         self._net.addEdge(newEdge)
         newEdge.ratio = attrs['weight']
         newEdge.connection = 2
Example #4
0
 def insertEdge(self, tail, head, weight=None):
     if head in self.nodes and tail in self.nodes:
         self.inc[tail].addAsLast(Edge(tail, head, weight))
Example #5
0
 def addIsolatedRealEdge(self, edgeLabel):
     self.addEdge(
         Edge(edgeLabel, self.newVertex(), self.newVertex(), "real"))
Example #6
0
 def startElement(self, name, attrs):
     self._chars = ''
     if name == 'edge' and (not attrs.has_key('function')
                            or attrs['function'] != 'internal'):
         self._edge = attrs['id']
         self._net.addIsolatedRealEdge(self._edge)
         self._edgeObj = self._net.getEdge(self._edge)
         self._edgeObj.source.label = attrs['from']
         self._edgeObj.target.label = attrs['to']
         self._maxSpeed = 0
         self._laneNumber = 0
         self._length = 0
     elif name == 'tl-logic':
         self._junctionObj = TLJunction()
         if self._junctionObj and attrs.has_key('id'):
             self._junctionObj.label = attrs['id']
             self._net.addTLJunctions(self._junctionObj)
             self._phasenoInfo = False
     elif self._junctionObj and name == 'phase':
         if attrs.has_key('state'):
             self._newphase = Signalphase(float(attrs['duration']),
                                          attrs['state'])
         else:
             self._newphase = Signalphase(float(attrs['duration']), None,
                                          attrs['phase'], attrs['brake'],
                                          attrs['yellow'])
         if self._junctionObj:
             self._junctionObj.phases.append(self._newphase)
             self._counter += 1
             self._newphase.label = self._counter
     elif name == 'succ':
         self._edge = attrs['edge']
         if self._edge[0] != ':':
             self._edgeObj = self._net.getEdge(self._edge)
             if self._edgeObj.junction == 'None':
                 self._edgeObj.junction = attrs['junction']
         else:
             self._edge = ""
     elif name == 'succlane' and self._edge != "":
         l = attrs['lane']
         if l != "SUMO_NO_DESTINATION":
             toEdge = self._net.getEdge(l[:l.rfind('_')])
             newEdge = Edge(self._edge + "_" + l[:l.rfind('_')],
                            self._edgeObj.target, toEdge.source)
             self._net.addEdge(newEdge)
             self._edgeObj.finalizer = l[:l.rfind('_')]
             if attrs.has_key('tl'):
                 self._edgeObj.junction = attrs['tl']
                 self._edgeObj.junctiontype = 'signalized'
                 if attrs['dir'] == "r":
                     self._edgeObj.rightturn = attrs['linkno']
                     self._edgeObj.rightlink.append(toEdge)
                 elif attrs['dir'] == "s":
                     self._edgeObj.straight = attrs['linkno']
                     self._edgeObj.straightlink.append(toEdge)
                 elif attrs['dir'] == "l":
                     self._edgeObj.leftturn = attrs['linkno']
                     self._edgeObj.leftlink.append(toEdge)
                 elif attrs['dir'] == "t":
                     self._edgeObj.uturn = attrs['linkno']
             else:
                 self._edgeObj.junctiontype = 'prioritized'
                 if attrs['dir'] == "r":
                     self._edgeObj.rightturn = attrs['state']
                     self._edgeObj.rightlink.append(toEdge)
                 elif attrs['dir'] == "s":
                     self._edgeObj.straight = attrs['state']
                     self._edgeObj.straightlink.append(toEdge)
                 elif attrs['dir'] == "l":
                     self._edgeObj.leftturn = attrs['state']
                     self._edgeObj.leftlink.append(toEdge)
                 elif attrs['dir'] == "t":
                     self._edgeObj.uturn = attrs['state']
     elif name == 'lane' and self._edge != '':
         self._maxSpeed = max(self._maxSpeed, float(attrs['maxspeed']))
         self._laneNumber = self._laneNumber + 1
         self._length = float(attrs['length'])
Example #7
0
def edge_copy(source_id, target_id, label, data):
    return Edge(source_id=source_id,
                target_id=target_id,
                label=label,
                properties=copy.copy(data))