如何通过将它们绘制在虚线图上来直观地比较两个xml文件的条目。
每个xml文件的格式如下:
<queue-export xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/queue_file.xsd">
<data timestep="0.00">
<lanes>
<lane id="22972473#3_0" queueing_time="0.00" queueing_length="0.00" queueing_length_experimental="5.00"/>
</lanes>
</data>
<data timestep="60.00">
<lanes>
<lane id="-22972470#0_0" queueing_time="0.00" queueing_length="0.00" queueing_length_experimental="5.00"/>
<lane id="-22972470#2_0" queueing_time="0.00" queueing_length="0.00" queueing_length_experimental="6.01"/>
<lane id="-4588224_0" queueing_time="60.00" queueing_length="97.32" queueing_length_experimental="0.00"/>
<lane id="191556835#0_0" queueing_time="0.00" queueing_length="0.00" queueing_length_experimental="19.14"/>
<lane id="191556835#1_0" queueing_time="0.00" queueing_length="0.00" queueing_length_experimental="14.36"/>
<lane id="22972473#3_0" queueing_time="60.00" queueing_length="5.00" queueing_length_experimental="5.00"/>
<lane id="47707171#1_0" queueing_time="0.00" queueing_length="0.00" queueing_length_experimental="11.08"/>
<lane id="47707171#2_0" queueing_time="0.00" queueing_length="0.00" queueing_length_experimental="6.81"/>
</lanes>
</data>
<data timestep="120.00">
<lanes>
<lane id="-168935757#0_0" queueing_time="60.00" queueing_length="85.84" queueing_length_experimental="0.00"/>
<lane id="-4588219#3_0" queueing_time="60.00" queueing_length="120.82" queueing_length_experimental="0.00"/>
<lane id="168935756_0" queueing_time="60.00" queueing_length="95.79" queueing_length_experimental="0.00"/>
<lane id="196850607#1_0" queueing_time="60.00" queueing_length="108.43" queueing_length_experimental="0.00"/>
<lane id="199847247#0_0" queueing_time="60.00" queueing_length="14.75" queueing_length_experimental="14.75"/>
</lanes>
</data>
<data timestep="180.00">
<lanes>
<lane id=":25663154_5_0" queueing_time="0.00" queueing_length="0.00" queueing_length_experimental="8.04"/>
<lane id=":3922684843_0_0" queueing_time="0.00" queueing_length="0.00" queueing_length_experimental="6.81"/>
</lanes>
</data>
我想逐个显示每个数据时间步长中每个xml文件中排队时间或排队长度的差异。
希望您可以指导我使用或执行的python代码或库。
答案 0 :(得分:0)
我将使用lxml
库来获取所需的值:
from lxml import etree
file1 = etree.parse('/path/to/file1.xml')
# This will give you a list of Elements
data1 = file1.xpath('//data')
agg_1 = []
for timestep in data1:
ts = []
# The lanes element is the only (immediate) child of data,
# so we can get each lane as the children of lanes
lanes = timestep.getchildren()[0].getchildren()
# Need to get the queueing_time and queueing_length
# attributes from each lane
for lane in lanes:
ts.append((lane.attrib.get('queueing_time'), lane.attrib.get('queueing_length'))
x, y = sum([float(x) for x,_ in ts]), sum([float(y) for _,y in ts])
agg_1.append((x,y))
这应该为您提供一个结构类似[(0.00, 0.00), (120.00, 102.32),...]
的列表,其中每个条目都代表一个时间戳(假定所有时间戳都在其中。您可以为file_2
重复该过程,从而获得汇总的统计信息。我已经有一段时间没有使用matplotlib
了,因此可以将其添加到编辑中,但这应该可以帮助您入门
注意:这不适用于以下情况:
lane
中有0个lanes
元素