您的位置:首页 > 编程语言 > Python开发

python从SUMO中获取车辆平均行驶时间

2015-12-03 15:36 477 查看

1.SUMO的trip information文件

在SUMO的帮助文档中的simulation output中有如下说明。SUMO提供用来记录车辆trip信息的文件。

文件的格式如下

<tripinfos>
<tripinfo id="<VEHICLE_ID>" \
depart="<DEPARTURE_TIME>" departLane="<DEPARTURE_LANE_ID>" \
departPos="<DEPARTURE_POSITION>" departSpeed="<DEPARTURE_SPEED>" \
departDelay="<DEPARTURE_DELAY>" \
arrival="<ARRIVAL_TIME>" arrivalLane="<DEPARTURE_LANE_ID>" \
arrivalPos="<ARRIVAL_POSITION>" arrivalSpeed="<ARRIVAL_SPEED>" \
duration="<TRAVEL_TIME>" routeLength="<ROUTE_LENGTH>" \
waitSteps="<STEPS_WITH_HALTS>" rerouteNo="<REROUTE_NUMBER>" \
devices="<DEVICE_LIST>" vtype="<VEHICLE_TYPE_ID>"/>

... information about further vehicles ...

</tripinfos>
为了计算车辆的平均行驶时间,其实就是提取出每一个车辆记录中的duration属性,然后相加取平均。

2.python代码

# -*- coding: utf-8 -*-
"""
Created on Thu Dec 03 18:50:50 2015

@author: Luyixiao
"""

import bs4
soup = bs4.BeautifulSoup(open('E:/averageTime.xml'))
soup = soup.body.tripinfos

list = []
for child in soup.children:
list.append(child)

kk = list[0]
for i in range(0,len(list)):#delete the blank record
if list[i]==kk:
list.pop(i)

sum = 0
for t in list:#count the amount duration
sum= sum+float(t['duration'])

average = sum/len(list)#calculate the average time for per vehicle
很简单的一个处理就可以获取车辆平均滞留时间,这一指标可以用来衡量区域交通的通畅情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: