def getDistance2D(x1, y1, x2, y2, isGeo=False, isDriving=False): """getDistance2D(double, double, double, double, boolean, boolean) -> double Returns the distance between the two coordinate pairs (x1,y1) and (x2,y2) If isGeo=True, coordinates are interpreted as longitude and latitude rather than cartesian coordinates in meters. If isDriving=True, the coordinates are mapped onto the road network and the length of the shortest route in the network is returned. Otherwise, the straight-line distance is returned. """ posType = tc.POSITION_2D if isGeo: posType = tc.POSITION_LON_LAT distType = tc.REQUEST_AIRDIST if isDriving: distType = tc.REQUEST_DRIVINGDIST traci._beginMessage(tc.CMD_GET_SIM_VARIABLE, tc.DISTANCE_REQUEST, "", 1 + 4 + 1 + 8 + 8 + 1 + 8 + 8 + 1) traci._message.string += struct.pack("!Bi", tc.TYPE_COMPOUND, 3) traci._message.string += struct.pack("!Bdd", posType, x1, y1) traci._message.string += struct.pack("!BddB", posType, x2, y2, distType) return traci._checkResult(tc.CMD_GET_SIM_VARIABLE, tc.DISTANCE_REQUEST, "").readDouble()
def getDrivingDistance2D(vehID, x, y): """getDrivingDistance2D(string, double, double) -> integer . """ traci._beginMessage(tc.CMD_GET_VEHICLE_VARIABLE, tc.DISTANCE_REQUEST, vehID, 1+4+1+8+8+1) traci._message.string += struct.pack("!BiBddB", tc.TYPE_COMPOUND, 2, tc.POSITION_2D, x, y, tc.REQUEST_DRIVINGDIST) return traci._checkResult(tc.CMD_GET_VEHICLE_VARIABLE, tc.DISTANCE_REQUEST, vehID).readDouble()
def getAdaptedTraveltime(edgeID, time): """getAdaptedTraveltime(string, double) -> double Returns the travel time value (in s) used for (re-)routing which is valid on the edge at the given time. """ traci._beginMessage(tc.CMD_GET_EDGE_VARIABLE, tc.VAR_EDGE_TRAVELTIME, edgeID, 1 + 4) traci._message.string += struct.pack("!Bi", tc.TYPE_INTEGER, traci._TIME2STEPS(time)) return traci._checkResult(tc.CMD_GET_EDGE_VARIABLE, tc.VAR_EDGE_TRAVELTIME, edgeID).readDouble()
def convert2D(edgeID, pos, laneIndex=0, toGeo=False): posType = tc.POSITION_2D if toGeo: posType = tc.POSITION_LAT_LON traci._beginMessage(tc.CMD_GET_SIM_VARIABLE, tc.POSITION_CONVERSION, "", 1+4 + 1+4+len(edgeID)+8+1 + 1+8+8) traci._message.string += struct.pack("!Bi", tc.TYPE_COMPOUND, 2) traci._message.string += struct.pack("!Bi", tc.POSITION_ROADMAP, len(edgeID)) + edgeID traci._message.string += struct.pack("!dBBdd", pos, laneIndex, posType, 0., 0.) return traci._checkResult(tc.CMD_GET_SIM_VARIABLE, tc.POSITION_CONVERSION, "").read("!dd")
def getEffort(vehID, time, edgeID): """getEffort(string, double, string) -> double . """ traci._beginMessage(tc.CMD_GET_VEHICLE_VARIABLE, tc.VAR_EDGE_EFFORT, vehID, 1+4+1+4+1+4+len(edgeID)) traci._message.string += struct.pack("!BiBiBi", tc.TYPE_COMPOUND, 2, tc.TYPE_INTEGER, time, tc.TYPE_STRING, len(edgeID)) + edgeID return traci._checkResult(tc.CMD_GET_VEHICLE_VARIABLE, tc.VAR_EDGE_EFFORT, vehID).readDouble()
def getEffort(edgeID, time): """getEffort(string, double) -> double Returns the effort value used for (re-)routing which is valid on the edge at the given time. """ traci._beginMessage(tc.CMD_GET_EDGE_VARIABLE, tc.VAR_EDGE_EFFORT, edgeID, 1 + 4) traci._message.string += struct.pack("!Bi", tc.TYPE_INTEGER, traci._TIME2STEPS(time)) return traci._checkResult(tc.CMD_GET_EDGE_VARIABLE, tc.VAR_EDGE_EFFORT, edgeID).readDouble()
def getLeader(vehID, dist=0.): """getLeader(string, double) -> (string, double) Return the leading vehicle id together with the distance. The dist parameter defines the maximum lookahead, 0 calculates a lookahead from the brake gap. """ traci._beginMessage(tc.CMD_GET_VEHICLE_VARIABLE, tc.VAR_LEADER, vehID, 1+8) traci._message.string += struct.pack("!Bd", tc.TYPE_DOUBLE, dist) return _readLeader(traci._checkResult(tc.CMD_GET_VEHICLE_VARIABLE, tc.VAR_LEADER, vehID))
def convert2D(edgeID, pos, laneIndex=0, toGeo=False): posType = tc.POSITION_2D if toGeo: posType = tc.POSITION_LAT_LON traci._beginMessage(tc.CMD_GET_SIM_VARIABLE, tc.POSITION_CONVERSION, "", 1+4 + 1+4+len(edgeID)+8+1 + 1+1) traci._message.string += struct.pack("!Bi", tc.TYPE_COMPOUND, 2) traci._message.string += struct.pack("!Bi", tc.POSITION_ROADMAP, len(edgeID)) + edgeID traci._message.string += struct.pack("!dBBB", pos, laneIndex, tc.TYPE_UBYTE, posType) return traci._checkResult(tc.CMD_GET_SIM_VARIABLE, tc.POSITION_CONVERSION, "").read("!dd")
def getDrivingDistance2D(vehID, x, y): """getDrivingDistance2D(string, double, double) -> integer . """ traci._beginMessage(tc.CMD_GET_VEHICLE_VARIABLE, tc.DISTANCE_REQUEST, vehID, 1+4+1+4+4+1) traci._message.string += struct.pack("!BiBddB", tc.TYPE_COMPOUND, 2, tc.POSITION_2D, x, y, REQUEST_DRIVINGDIST) return traci._checkResult(tc.CMD_GET_VEHICLE_VARIABLE, tc.DISTANCE_REQUEST, vehID).readDouble()
def convertRoad(x, y, isGeo=False): posType = tc.POSITION_2D if isGeo: posType = tc.POSITION_LAT_LON traci._beginMessage(tc.CMD_GET_SIM_VARIABLE, tc.POSITION_CONVERSION, "", 1+4 + 1+8+8 + 1+1) traci._message.string += struct.pack("!Bi", tc.TYPE_COMPOUND, 2) traci._message.string += struct.pack("!Bdd", posType, x, y) traci._message.string += struct.pack("!BB", tc.TYPE_UBYTE, tc.POSITION_ROADMAP) result = traci._checkResult(tc.CMD_GET_SIM_VARIABLE, tc.POSITION_CONVERSION, "") return result.readString(), result.readDouble(), result.read("!B")[0]
def getDrivingDistance(vehID, edgeID, pos, laneID=0): """getDrivingDistance(string, string, double, integer) -> double . """ traci._beginMessage(tc.CMD_GET_VEHICLE_VARIABLE, tc.DISTANCE_REQUEST, vehID, 1+4+1+4+len(edgeID)+4+1+1) traci._message.string += struct.pack("!BiBi", tc.TYPE_COMPOUND, 2, tc.POSITION_ROADMAP, len(edgeID)) + edgeID traci._message.string += struct.pack("!dBB", pos, laneID, REQUEST_DRIVINGDIST) return traci._checkResult(tc.CMD_GET_VEHICLE_VARIABLE, tc.DISTANCE_REQUEST, vehID).readDouble()
def convertRoad(x, y, isGeo=False): posType = tc.POSITION_2D if isGeo: posType = tc.POSITION_LAT_LON traci._beginMessage(tc.CMD_GET_SIM_VARIABLE, tc.POSITION_CONVERSION, "", 1+4 + 1+8+8 + 1+4+8+1) traci._message.string += struct.pack("!Bi", tc.TYPE_COMPOUND, 2) traci._message.string += struct.pack("!Bdd", posType, x, y) traci._message.string += struct.pack("!BidB", tc.POSITION_ROADMAP, 0, 0., 0) result = traci._checkResult(tc.CMD_GET_SIM_VARIABLE, tc.POSITION_CONVERSION, "") return result.readString(), result.readDouble(), result.read("!B")[0]
def getLeader(vehID, dist=0.): """getLeader(string, double) -> (string, double) Return the leading vehicle id together with the distance. The dist parameter defines the maximum lookahead, 0 calculates a lookahead from the brake gap. """ traci._beginMessage( tc.CMD_GET_VEHICLE_VARIABLE, tc.VAR_LEADER, vehID, 1 + 8) traci._message.string += struct.pack("!Bd", tc.TYPE_DOUBLE, dist) return _readLeader(traci._checkResult(tc.CMD_GET_VEHICLE_VARIABLE, tc.VAR_LEADER, vehID))
def getDrivingDistance(vehID, edgeID, pos, laneID=0): """getDrivingDistance(string, string, double, integer) -> double . """ traci._beginMessage(tc.CMD_GET_VEHICLE_VARIABLE, tc.DISTANCE_REQUEST, vehID, 1+4+1+4+len(edgeID) + 8+1+1) traci._message.string += struct.pack("!BiBi", tc.TYPE_COMPOUND, 2, tc.POSITION_ROADMAP, len(edgeID)) + edgeID traci._message.string += struct.pack("!dBB", pos, laneID, tc.REQUEST_DRIVINGDIST) return traci._checkResult(tc.CMD_GET_VEHICLE_VARIABLE, tc.DISTANCE_REQUEST, vehID).readDouble()
def getAdaptedTraveltime(vehID, time, edgeID): """getAdaptedTraveltime(string, double, string) -> double . """ traci._beginMessage(tc.CMD_GET_VEHICLE_VARIABLE, tc.VAR_EDGE_TRAVELTIME, vehID, 1 + 4 + 1 + 4 + 1 + 4 + len(edgeID)) traci._message.string += struct.pack("!BiBi", tc.TYPE_COMPOUND, 2, tc.TYPE_INTEGER, time) traci._message.packString(edgeID) return traci._checkResult(tc.CMD_GET_VEHICLE_VARIABLE, tc.VAR_EDGE_TRAVELTIME, vehID).readDouble()
def getAdaptedTraveltime(vehID, time, edgeID): """getAdaptedTraveltime(string, double, string) -> double . """ traci._beginMessage(tc.CMD_GET_VEHICLE_VARIABLE, tc.VAR_EDGE_TRAVELTIME, vehID, 1 + 4 + 1 + 4 + 1 + 4 + len(edgeID)) traci._message.string += struct.pack("!BiBiBi", tc.TYPE_COMPOUND, 2, tc.TYPE_INTEGER, time, tc.TYPE_STRING, len(edgeID)) + str(edgeID) return traci._checkResult(tc.CMD_GET_VEHICLE_VARIABLE, tc.VAR_EDGE_TRAVELTIME, vehID).readDouble()
def convert3D(edgeID, pos, laneIndex=0, toGeo=False): posType = tc.POSITION_3D if toGeo: posType = tc.POSITION_LON_LAT_ALT traci._beginMessage(tc.CMD_GET_SIM_VARIABLE, tc.POSITION_CONVERSION, "", 1 + 4 + 1 + 4 + len(edgeID) + 8 + 1 + 1 + 1) traci._message.string += struct.pack("!Bi", tc.TYPE_COMPOUND, 2) traci._message.packString(edgeID, tc.POSITION_ROADMAP) traci._message.string += struct.pack("!dBBB", pos, laneIndex, tc.TYPE_UBYTE, posType) return traci._checkResult(tc.CMD_GET_SIM_VARIABLE, tc.POSITION_CONVERSION, "").read("!ddd")
def convertGeo(x, y, fromGeo=False): fromType = tc.POSITION_2D toType = tc.POSITION_LON_LAT if fromGeo: fromType = tc.POSITION_LON_LAT toType = tc.POSITION_2D traci._beginMessage(tc.CMD_GET_SIM_VARIABLE, tc.POSITION_CONVERSION, "", 1+4 + 1+8+8 + 1+1) traci._message.string += struct.pack("!Bi", tc.TYPE_COMPOUND, 2) traci._message.string += struct.pack("!Bdd", fromType, x, y) traci._message.string += struct.pack("!BB", tc.TYPE_UBYTE, toType) return traci._checkResult(tc.CMD_GET_SIM_VARIABLE, tc.POSITION_CONVERSION, "").read("!dd")
def convertGeo(x, y, fromGeo=False): fromType = tc.POSITION_2D toType = tc.POSITION_LAT_LON if fromGeo: fromType = tc.POSITION_LAT_LON toType = tc.POSITION_2D traci._beginMessage(tc.CMD_GET_SIM_VARIABLE, tc.POSITION_CONVERSION, "", 1+4 + 1+8+8 + 1+1) traci._message.string += struct.pack("!Bi", tc.TYPE_COMPOUND, 2) traci._message.string += struct.pack("!Bdd", fromType, x, y) traci._message.string += struct.pack("!BB", tc.TYPE_UBYTE, toType) return traci._checkResult(tc.CMD_GET_SIM_VARIABLE, tc.POSITION_CONVERSION, "").read("!dd")
def getDistanceRoad(edgeID1, pos1, edgeID2, pos2, isDriving=False): """getDistanceRoad(string, double, string, double, boolean) -> double . """ distType = tc.REQUEST_AIRDIST if isDriving: distType = tc.REQUEST_DRIVINGDIST traci._beginMessage(tc.CMD_GET_SIM_VARIABLE, tc.DISTANCE_REQUEST, "", 1+4 + 1+4+len(edgeID1)+8+1 + 1+4+len(edgeID2)+8+1 + 1) traci._message.string += struct.pack("!Bi", tc.TYPE_COMPOUND, 3) traci._message.string += struct.pack("!Bi", tc.POSITION_ROADMAP, len(edgeID1)) + edgeID1 traci._message.string += struct.pack("!dBBi", pos1, 0, tc.POSITION_ROADMAP, len(edgeID2)) + edgeID2 traci._message.string += struct.pack("!dBB", pos2, 0, distType) return traci._checkResult(tc.CMD_GET_SIM_VARIABLE, tc.DISTANCE_REQUEST, "").readDouble()
def getDistanceRoad(edgeID1, pos1, edgeID2, pos2, isDriving=False): """getDistanceRoad(string, double, string, double, boolean) -> double Reads two positions on the road network and an indicator whether the air or the driving distance shall be computed. Returns the according distance. """ distType = tc.REQUEST_AIRDIST if isDriving: distType = tc.REQUEST_DRIVINGDIST traci._beginMessage(tc.CMD_GET_SIM_VARIABLE, tc.DISTANCE_REQUEST, "", 1+4 + 1+4+len(edgeID1)+8+1 + 1+4+len(edgeID2)+8+1 + 1) traci._message.string += struct.pack("!Bi", tc.TYPE_COMPOUND, 3) traci._message.string += struct.pack("!Bi", tc.POSITION_ROADMAP, len(edgeID1)) + edgeID1 traci._message.string += struct.pack("!dBBi", pos1, 0, tc.POSITION_ROADMAP, len(edgeID2)) + edgeID2 traci._message.string += struct.pack("!dBB", pos2, 0, distType) return traci._checkResult(tc.CMD_GET_SIM_VARIABLE, tc.DISTANCE_REQUEST, "").readDouble()
def getDistance2D(x1, y1, x2, y2, isGeo=False, isDriving=False): """getDistance2D(double, double, double, double, boolean, boolean) -> double Reads two coordinate pairs and an indicator whether the air or the driving distance shall be computed. Returns the according distance. """ posType = tc.POSITION_2D if isGeo: posType = tc.POSITION_LON_LAT distType = tc.REQUEST_AIRDIST if isDriving: distType = tc.REQUEST_DRIVINGDIST traci._beginMessage(tc.CMD_GET_SIM_VARIABLE, tc.DISTANCE_REQUEST, "", 1+4 + 1+8+8 + 1+8+8 + 1) traci._message.string += struct.pack("!Bi", tc.TYPE_COMPOUND, 3) traci._message.string += struct.pack("!Bdd", posType, x1, y1) traci._message.string += struct.pack("!BddB", posType, x2, y2, distType) return traci._checkResult(tc.CMD_GET_SIM_VARIABLE, tc.DISTANCE_REQUEST, "").readDouble()
def getDistance2D(x1, y1, x2, y2, isGeo=False, isDriving=False): """getDistance2D(double, double, double, double, boolean, boolean) -> double . """ posType = tc.POSITION_2D if isGeo: posType = tc.POSITION_LAT_LON distType = tc.REQUEST_AIRDIST if isDriving: distType = tc.REQUEST_DRIVINGDIST traci._beginMessage(tc.CMD_GET_SIM_VARIABLE, tc.DISTANCE_REQUEST, "", 1+4 + 1+8+8 + 1+8+8 + 1) traci._message.string += struct.pack("!Bi", tc.TYPE_COMPOUND, 3) traci._message.string += struct.pack("!Bdd", posType, x1, y1) traci._message.string += struct.pack("!BddB", posType, x2, y2, distType) return traci._checkResult(tc.CMD_GET_SIM_VARIABLE, tc.DISTANCE_REQUEST, "").readDouble()
def getDistanceRoad(edgeID1, pos1, edgeID2, pos2, isDriving=False): """getDistanceRoad(string, double, string, double, boolean) -> double Reads two positions on the road network and an indicator whether the air or the driving distance shall be computed. Returns the according distance. """ distType = tc.REQUEST_AIRDIST if isDriving: distType = tc.REQUEST_DRIVINGDIST traci._beginMessage( tc.CMD_GET_SIM_VARIABLE, tc.DISTANCE_REQUEST, "", 1 + 4 + 1 + 4 + len(edgeID1) + 8 + 1 + 1 + 4 + len(edgeID2) + 8 + 1 + 1) traci._message.string += struct.pack("!Bi", tc.TYPE_COMPOUND, 3) traci._message.packString(edgeID1, tc.POSITION_ROADMAP) traci._message.string += struct.pack("!dB", pos1, 0) traci._message.packString(edgeID2, tc.POSITION_ROADMAP) traci._message.string += struct.pack("!dBB", pos2, 0, distType) return traci._checkResult(tc.CMD_GET_SIM_VARIABLE, tc.DISTANCE_REQUEST, "").readDouble()
def getDistance2D(x1, y1, x2, y2, isGeo=False, isDriving=False): """getDistance2D(double, double, double, double, boolean, boolean) -> double Reads two coordinate pairs and an indicator whether the air or the driving distance shall be computed. Returns the according distance. """ posType = tc.POSITION_2D if isGeo: posType = tc.POSITION_LON_LAT distType = tc.REQUEST_AIRDIST if isDriving: distType = tc.REQUEST_DRIVINGDIST traci._beginMessage(tc.CMD_GET_SIM_VARIABLE, tc.DISTANCE_REQUEST, "", 1 + 4 + 1 + 8 + 8 + 1 + 8 + 8 + 1) traci._message.string += struct.pack("!Bi", tc.TYPE_COMPOUND, 3) traci._message.string += struct.pack("!Bdd", posType, x1, y1) traci._message.string += struct.pack("!BddB", posType, x2, y2, distType) return traci._checkResult(tc.CMD_GET_SIM_VARIABLE, tc.DISTANCE_REQUEST, "").readDouble()
def getDistance2D(x1, y1, x2, y2, isGeo=False, isDriving=False): """getDistance2D(double, double, double, double, boolean, boolean) -> double Returns the distance between the two coordinate pairs (x1,y1) and (x2,y2) If isGeo=True, coordinates are interpreted as longitude and latitude rather than cartesian coordinates in meters. If isDriving=True, the coordinates are mapped onto the road network and the length of the shortest route in the network is returned. Otherwise, the straight-line distance is returned. """ posType = tc.POSITION_2D if isGeo: posType = tc.POSITION_LON_LAT distType = tc.REQUEST_AIRDIST if isDriving: distType = tc.REQUEST_DRIVINGDIST traci._beginMessage( tc.CMD_GET_SIM_VARIABLE, tc.DISTANCE_REQUEST, "", 1 + 4 + 1 + 8 + 8 + 1 + 8 + 8 + 1) traci._message.string += struct.pack("!Bi", tc.TYPE_COMPOUND, 3) traci._message.string += struct.pack("!Bdd", posType, x1, y1) traci._message.string += struct.pack("!BddB", posType, x2, y2, distType) return traci._checkResult(tc.CMD_GET_SIM_VARIABLE, tc.DISTANCE_REQUEST, "").readDouble()