#To.xml
import pickledef node_to_xml(node_df_path):# 读取输出的data_deal.py 输出的rou_df文件with open(node_df_path, "rb") as file1:node_df = pickle.load(file1)with open("node.txt", "w") as f:f.write("<nodes>\r\n")for _, row in node_df.iterrows():f.write("  <node id=\""+str(row['id'])+"\" x=\""+str(row['x'])+"\" y=\""+str(row['y'])+"\" type=\""+row['type']+"\"/>\r")f.write("\r</nodes>")
def edge_to_xml(edge_df_path):with open(edge_df_path, "rb") as file2:edge_df = pickle.load(file2)with open("edge.txt", "w") as f:f.write("<edges>\r\n")for _, row in edge_df.iterrows():f.write("  <edge id=\""+str(row['id'])+"\" from=\""+str(row['from'])+"\" to=\""+str(row['to'])+"\" numLanes=\""+str(row['numLanes'])+"\" speed=\""+str(row['speed'])+"\"/>\r")f.write("\r</edges>")def rou_to_xml(rou_df_path):with open(rou_df_path, "rb") as file3:edge_df = pickle.load(file3)with open("rou.txt", "w") as f:f.write("<routes>\r\n")for _, row in edge_df.iterrows():f.write("  <vehicle id=\""+str(row['id'])+"\" depart=\""+str(row['depart'])+"\">\r")f.write("      <route edges=\"" + ' '.join(str(e) for e in row['route']) + "\"/>\r")f.write("  </vehicle>\r")f.write("\r</routes>")if __name__ == '__main__':node_df_path=('C:/Users/sutpc/Desktop/成果/data_deal.py/node/node.df')node_to_xml(node_df_path)edge_df_path=('C:/Users/sutpc/Desktop/成果/data_deal.py/edge/edge.df')edge_to_xml(edge_df_path)rou_df_path=('C:/Users/sutpc/Desktop/成果/data_deal.py/rou/df_rou1h.df')rou_to_xml(rou_df_path)

上面的输入为node.df,edge.df,rou1h.df,里面的内容可以根据我们自己所需的字段进行填充、调整,上面输出的均是txt文件,可以选择将文件重命名手动转换成xml文件,也可以使用以下简单代码实习自动生成转换。

import osimport shutil  # 复制文件的库txtpath = r"C:\Users\sutpc\Desktop\Luzhou_project\Output-To_xml"os.chdir(txtpath)filelist = os.listdir(txtpath)  # 该文件夹下所有的文件(包括文件夹)print(filelist)  # 文件夹中所有文件名for v in filelist:old = v  # 旧文件名_list = v.split('.')new = 'map.' + _list[0] + '.xml'  # 新文件名shutil.copy(old, new)  # 复制后命名

最终可以输出以下六个文件:

当然,最后还得对node.xml和edge.xml进行netconvert操作。cmd接口调用代码如下:

import os
os.system("cd")
os.system("cd C:\\Users\\sutpc\\Desktop\\Luzhou_project\\Output-To_xml")
net_xml=os.system("netconvert --node-files=map.node.xml --edge-files=map.edge.xml --output-file=map.net.xml")

其次是实现自动生成sumocfg文件,实现代码如下:

def get_sumocfg():with open("C:/Users/sutpc/Desktop/Luzhou_project/Input-sumo_connect/map.sumocfg.txt", "w") as f:f.write("<configuration>\r")f.write("    <input>\r")f.write("        <net-file value=\"map.net.xml\"/>\r")f.write("        <route-files value=\"map.rou.xml\"/>\r")f.write("    </input>\r")f.write("    <time>\r")f.write("        <begin value=\"0\"/>\r")f.write("        <end value=\"360000\"/>\r")f.write("    </time>\r")f.write("</configuration>\r")txtpath = r"C:\Users\sutpc\Desktop\Luzhou_project\Input-sumo_connect"os.chdir(txtpath)old="map.sumocfg.txt"new="map.sumocfg"shutil.copy(old, new)

最后调用sumo的python接口进行sumo仿真即可。

Sumo自行编写node.xml edge.xml rou.xml进行仿真的简单思路相关推荐

  1. SUMO中车辆需求建模方法(rou.xml)

    SUMO需求建模种类 生成网络后,可以使用SUMO-GUI对其进行查看 ,但不会有汽车行驶.仍然需要有关车辆的某种描述.这称为交通需求.从现在开始,我们将使用以下术语:行程是由起点(街道),目的地终点 ...

  2. sumo路由文件(.rou.xml文件)的生成以及关于生成交通流的一些方法

    1. 首先准备好一个构建的路网(.net.xml)文件 这里我所利用的一个路网构造如下: 2. 路由文件(.rou.xml)文件 可以在netedit里边对路网个各个道路边缘id长度以及相关参数进行配 ...

  3. XML(一)XML大揭秘

    前言 每天都要学习很多新的知识,比你厉害的程序员比你还努力,那你混的下这口饭吗?所以不抱怨,坚持!接下来给大家分享的是xml.可能很多做开发的都遇到过xml, 比如maven,各种框架的配置文件都有, ...

  4. java xml解析器_Java XML解析器

    java xml解析器 Java XML parser is used to work with xml data. XML is widely used technology to transpor ...

  5. java xml sql_走进 SQL/XML

    DBA:XML 走进 SQL/XML 作者:Tim Quinlan 概览 SQL 与 XML 的互操作性,了解如何着手处理存储在数据库中的 XML 文档. 2006 年 12 月发布 XML 数据通常 ...

  6. XML入门教程(XML这样学)

    前言:"与其每天担心未来,不如努力现在.别对自己丧失信心,成长的路上,只有奋斗才能给你最大的安全感." 你好,我是梦阳辰!下面和我一起学习XML吧! 01.XML概述 1.什么是X ...

  7. 【4-8】《XML与JSON》——XML、解析XML、SAX、DOM4J、XStream、JSON、Gson、Fastjson

    文章目录 XML与JSON 一.XML 1.XML概述 1.XML语法格式 2.语法进阶CDATA(了解) 2.解析XML 1.SAX解析 2.DOM解析 3.JDOM解析 4.DOM4J解析 3.D ...

  8. python 之模块之 xml.dom.minidom解析xml

    # -*- coding: cp936 -*- #python 27 #xiaodeng #python 之模块之 xml.dom.minidom解析xml #http://www.cnblogs.c ...

  9. 使用Qt创建XML文档及XML文档的增删改

    目录名字 使用Qt创建XML文档及XML文档的增删改 XML文档的操作 :QXml + QFile+QTextStream 创建XML的一般步骤: XML 文档的操作(添加.查找.更新.删除) 添加的 ...

最新文章

  1. readline停止后怎么重新开始_2021,离婚后人生重新开始
  2. android.graphic.Path
  3. 前端学习(3041):vue+element今日头条管理-控制用户的访问权限
  4. oracle select机制_ORACLE的工作机制(转载)
  5. 使用手机访问vue项目
  6. 关于windows2008重新启动需要重新设置分辨率的问题
  7. ftp客户端flashfxp破解教程
  8. ppt太大如何压缩到最小,这个方法你得知道
  9. python删除表格第一行不动_Excel教程,教你如何设置表格第一行和第一列固定不动,一直显示...
  10. 阿里系退出吴奇隆刘诗诗公司 仅靠明星光环难留资本
  11. 【编程工具】——pycharm
  12. php 批量生成链接,php 生成迅雷链接的简单示例
  13. css33d图片轮播_通过html+css3实现图片轮播切换
  14. mysql trim()_MySQL trim()函数
  15. 20个有用的iOS图标和应用模板资源
  16. [附源码]计算机毕业设计Node.js应急物资管理系统(程序+LW)
  17. 酸奶能通便吗?身体知道酸奶用效果给你答案
  18. java一键配置环境变量_Java环境变量一键配置工具|
  19. 精准营销服务平台设计-基于大数据和AI的商业智能平台
  20. 抽象类和接口的应用场景

热门文章

  1. 实验吧-杂项-异性相吸(异或加密)
  2. 数据库恢复技术习题练习
  3. 一个精英的诞生,家庭因素有多大?
  4. ERROR Error: command failed: yarn
  5. Cause: java.sql.SQLException: connection closed问题排查、解决
  6. 待看 我在赶集网的两个月
  7. Python入门(二十七)——线程深入复习(.tart()、 .join()、.setDaemon(True))
  8. 升级鸿蒙OS后原来APP还在,更新后APP数据原封不动,鸿蒙系统被嘲讽就换了一个开机动画...
  9. mysql 0xc0000005_duilib菜单开发遇见“0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突”...
  10. 比尔总动员比尔座驾获取攻略