前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python从SUMO中获取车辆平均行驶时间

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

作者头像
钱塘小甲子
发布2019-01-29 09:54:08
3.2K0
发布2019-01-29 09:54:08
举报
文章被收录于专栏:钱塘小甲子的博客

1.SUMO的trip information文件

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

文件的格式如下

代码语言:javascript
复制
<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代码

代码语言:javascript
复制
# -*- 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

很简单的一个处理就可以获取车辆平均滞留时间,这一指标可以用来衡量区域交通的通畅情况。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015年12月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.SUMO的trip information文件
  • 2.python代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档