给料搅拌机一个XML道路fi

2024-09-26 22:07:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是模拟特定城市的交通状况。我会用搅拌机画出汽车,让它们在类似曼哈顿配置的车道上移动。所有关于汽车在给定时刻的相对位置/方向和速度的信息都由一个XML文件决定。在

如何从Blender中的这个XML文件中读取数据,以便汽车能够获得关于如何在道路上行驶的有用信息?在

编辑:Python可能是一个很好的起点。但我真的要解析字符串吗?或者与Blender有简单的XML兼容性吗?在

我需要导入的XML基本上如下所示:

<sumo-netstate>
  <timestep time="0.00">
        <edge id="34403897">
            <lane id="34403897_0">
                <vehicle id="t0" pos="5.10" speed="0.00"/>
            </lane>
        </edge>
    </timestep>
    <timestep time="1.00">
        <edge id="-10745949#5">
            <lane id="-10745949#5_0">
                <vehicle id="t1" pos="5.10" speed="0.00"/>
            </lane>
        </edge>
        <edge id="34403897">
            <lane id="34403897_0">
                <vehicle id="t0" pos="6.54" speed="1.44"/>
            </lane>
        </edge>
    </timestep>
..
..
..
</sumo-netstate>

Tags: 文件pos信息idtimexml汽车speed
2条回答

如果您使用python的xmldom解析器,应该不难。 试试下面的代码,应该可以正常工作。我在我的电脑里测试过

from xml.dom.minidom import parse
from xml.dom.minidom import Node

domData = parse("XMLFile.xml")
lanes = domData.getElementsByTagName("lane")
for lane in lanes:
    #print lane id
    laneId = lane.getAttribute("id")
    print "LaneID: " + laneId

    #print vehicle id, position and speed
    vehicles = lane.getElementsByTagName("vehicle")
    for vehicle in vehicles:
        vehicleId = vehicle.getAttribute("id")
        vehiclePos = vehicle.getAttribute("pos")
        vehicleSpeed = vehicle.getAttribute("speed")
        print "\tVehicleID: " + vehicleId, "VehiclePos: " + vehiclePos, "VehicleSpeed: " + vehicleSpeed

domData.unlink()

它使用minidom并解析xml文档的节点。可以使用getElemetsByTagName获取节点或元素列表。代码没有空检查等,所以一定要添加它们。在

快乐编码:-)

Blender与Python-3和Python标准库中的所有模块完全集成。其中包括几个XML处理器。在

相关问题 更多 >

    热门问题