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

时间:2016-04-11 20:58:33

标签: java python python-2.7 simulation

我目前有一个openstreetmap转换为在相扑中使用10000辆汽车并且无限时间。作为学校的分配,我们需要做的是使用这些数据并将其加载到我们现有的应用程序中,以测试我们编写的代码的可伸缩性。 问题是我如何能够将每辆汽车生成的信息加载到单独的Java应用程序中。我已经尝试过寻找解决方案但到目前为止空洞。我希望我错过了一些东西,并且可以做到这一点。

1 个答案:

答案 0 :(得分:1)

基本上有两种方法:

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

  2. 使用TraCI4J或TraaS界面直接连接到Sumo。

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

    200

    然后运行Sumo将输出定向到套接字。假设您在同一台机器上运行并使用排放输出,则应调用

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

    (您当然可以选择与12345不同的端口,但它们必须匹配两个呼叫。)

    然后你可以解析从BufferedReader读取的文件,你可能想读一些关于XML解析的东西。

    第二种方法将涉及TraaS

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

    有关可用的方法和输出,请参阅TraaSSumo outputs上的文档