Примером, наиболее близким к тому, чего вы хотите достичь, является, вероятно, учебник по CityMobil, см. http://sumo.dlr.de/wiki/Tutorials/CityMobil, но он сводится к чему-то такому:
import traci
import traci.constants as tc
traci.start(["sumo", "my.sumocfg"])
traci.simulation.subscribe()
while True:
moveNodes = {}
traci.simulationStep()
# update the position of all running vehicles
for veh, subs in traci.vehicle.getAllSubscriptionResults().items():
moveNodes[veh] = (subs[tc.VAR_ROAD_ID], subs[tc.VAR_LANEPOSITION])
# add new departed vehicles
for v in traci.simulation.getSubscriptionResults()[tc.VAR_DEPARTED_VEHICLES_IDS]:
traci.vehicle.subscribe(v)
subs = traci.vehicle.getSubscriptionResults(v)
moveNodes[v] = (subs[tc.VAR_ROAD_ID], subs[tc.VAR_LANEPOSITION])
Это дает вам карту с сохранением актуальных позиций для всех транспортных средств. Обратите внимание, что карта перестраивается каждый шаг с нуля, поэтому вам не нужно заботиться об оставлении транспортных средств. Если объекты вашего автомобиля сохраняются дольше, вам нужно будет удалить их, как только для них больше не будет результатов подписки.