gpt4 book ai didi

java - 从 SUMO 模拟获取实时汽车数据到 java

转载 作者:行者123 更新时间:2023-12-01 10:04:17 26 4
gpt4 key购买 nike

我目前有一个 openstreetmap 已转换为可在相扑中使用,可容纳 10000 辆汽车,并且无限期使用。作为学校作业,我们需要做的是使用这些数据并将其加载到我们现有的应用程序中,以测试我们编写的代码的可扩展性。问题是我如何能够将每辆车生成的信息加载到单独的 java 应用程序中。我尝试寻找解决方案,但到目前为止一无所获。我希望我只是错过了一些事情并且这可以完成。

最佳答案

基本上有两种方法:

  1. 在使用套接字连接或命名管道写入 Sumo XML 输出时解析它

  2. 使用 TraCI4J 或 TraaS 接口(interface)直接连接到 Sumo。

对于第一种方法,您需要在 Java 端打开服务器套接字

ServerSocket serverSocket = new ServerSocket(12345);
Socket clientSocket = serverSocket.accept();
BufferedReader in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));

然后运行 ​​Sumo,将输出定向到套接字。假设您在同一台机器上运行并且使用发射输出,您应该调用

sumo -c my.sumocfg --emission-output localhost:12345

(您当然可以选择 12345 以外的端口,但两个调用必须匹配。)

然后你可以解析从 BufferedReader 读取的文件,你可能想阅读一些有关 XML 解析的内容。

第二种方法将涉及 TraaS

String sumo_bin = "c:/Program Files (x86)/sumo/bin/sumo-gui.exe";
String config_file = "simulation/config.sumo.cfg";
SumoTraciConnection conn = new SumoTraciConnection(sumo_bin, config_file);

conn.runServer();

//load routes and initialize the simulation
conn.do_timestep();

//get the CO2 emission for a specific vehicle
double co2 = (double) conn.do_job_get(Vehicle.getCO2Emission("v0"));
System.out.println("CO2: " + co2 + " g/s");

//stop TraCI
conn.close();

请参阅 TraaS 上的文档并在Sumo outputs上可用的方法和输出

关于java - 从 SUMO 模拟获取实时汽车数据到 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36559110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com