(二)osm格式文件如何导入sumo(包括建筑物边界的生成)

本文详细介绍了如何从OpenStreetMap获取数据,通过netconvert和randomTrips.py工具将其转换为SUMO所需的.net.xml和.rou.xml格式,以及生成地形文件.poly.xml和最终的仿真配置文件.sumocfg。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、进入openstreetmap官网

搜索位置,并手动选择导出区域,点击导出,即可得到.osm格式文件。 将输出的地图命名为map.osm 进行一定的数据清洗

二、将.osm格式转化成为sumo所接纳的.net.xml格式

将map.osm文件放置在一个文件夹下(不一定在sumo下载路径的文件夹) 在其路径上直接输入cmd,回车,进入到命令行:

输入命令,对应代码如下:

netconvert --osm-files map.osm -o map.net.xml

代码块解释: netconvert——路网转换; osm——表示转换的是来自osm格式路网; map.osm——表示已经存在osm类型的文件; o——output的缩写,输出; map.net.xml——输出为net类型的路网文件;

三、点击回车,出现success即为创建成功(如果有警告暂时不用理)

刚刚存放map.osm的文件夹下就多出了一个map.net.xml文件

四、生成路由文件.rou.xml(利用randomTrips.py)

成功创建了路网文件,接下来就要创建路由了(这里选用创建路由多种方式之一的:randomTrips.py自动生成)

randomTrips.py存在的路径为:找到下载的sumo位置进去:sumo/tools/randomTrips.py

找到其所在路径后,把randomTrips.py文件复制到map.net.xml所在的目录下,在其路径上输入cmd,敲回车,进入命令行:对应代码如下:

tools> python randomTrips.py -n map.net.xml -r map.rou.xml

出现success,代表成功创建路由文件(有点电脑上无论怎么操作都不会有反应的,可能跟电脑配置有关,需要换一台电脑看看)

五、添加建筑物边界(.poly.xml地形文件的生成)

利用polyconvert工具将.net.xml文件和.osm文件生成地形文件,通过如下命令生成.poly.xml文件:

代码: polyconvert --net-file map.net.xml --osm-files map.osm -o map.poly.xml

出现success,代表成功创建地形文件

代码块解释: polyconvert——地形转换; net——表示转换的是来自net格式路网; osm——表示转换的是来自osm格式路网; o——output的缩写,输出; map.poly.xml——输出为poly类型的路网文件;

六、生成仿真文件.sumocfg

成功生成路由文件后新创建一个map.sumocfg文件:可以得到如下图所示几个文件:

七、仿真文件.sumocfg中引入信息:

接下来在map.sumocfg文件夹中引入前面所生成的路网信息路由信息及地形信息,并设置仿真时间:

八、以上工作都完成后,直接双击map.sumocfg文件,进入到sumoGUI界面: 设置仿真时间等,即可出现预期的仿真效果:

### 导入NGSIM数据到SUMO交通模拟平台 为了将NGSIM数据成功导入SUMO,需遵循特定的数据预处理和配置流程[^1]。NGSIM(Next Generation SIMulation)项目提供了详细的车辆轨迹数据集,这些数据可以被转换成适用于微观交通仿真的格式。 #### 数据准备阶段 NGSIM原始数据通常是以CSV文件形式存在,其中包含了时间戳、车辆ID、位置坐标等信息。要使这些数据适应于SUMO环境,必须先将其转化为SUMO能够识别的输入格式,比如`.xml`或`.sumocfg`文件。 对于此过程中的具体操作方法之一是利用Python脚本读取并解析来自NGSIM源文件的信息,再通过编写相应的逻辑来构建节点(node)、边(edge)以及路线(route),最终导出为SUMO所需的网络描述(net.xml)与流量定义(rou.xml)。 ```python import pandas as pd from sumolib import net df = pd.read_csv('ngsim_data.csv') net_file = 'network.net.xml' route_file = open("routes.rou.xml", "w") print('<routes>', file=route_file) for index, row in df.iterrows(): print(f' <vehicle id="{row["Vehicle_ID"]}" type="passenger" route="route_{int(row["Global_X"]) % 10}"/>', file=route_file) print('</routes>', file=route_file) route_file.close() ``` 上述代码片段展示了如何基于NGSIM CSV数据创建基本的SUMO路由文件。实际应用中可能还需要考虑更多细节,例如不同路段的速度限制、车道变化等因素。 #### 配置SUMO仿真参数 完成数据转化之后,在启动SUMO之前还需设置好必要的运行参数,这可以通过编辑.sumocfg配置文件实现。该文件指定了所使用的网路结构文件(.net.xml), 流量流文件(.rou.xml)以及其他选项如持续时间和随机种子等。 ```xml <configuration> <input> <net-file value="network.net.xml"/> <route-files value="routes.rou.xml"/> </input> </configuration> ``` 以上XML片断提供了一个简单的例子说明怎样指定要用作仿真的基础架构模型和移动实体路径规划方案。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值