转换X& Y to Lat&经度

时间:2017-05-17 08:53:40

标签: java sumo

我目前正在开展一个学校项目,我们必须设置交通模拟。我们决定使用TraaS

TraaS有一种方法可以检索给定车辆的当前X和Y坐标(参见getPosition)。但是,这些X和Y坐标不是实际的地图坐标,而是相对于SUMO网。

问题是:如何将这些相对坐标转换为地理坐标?

TraaS有一个名为convertGeo的方法,可将X和Y坐标转换为地理坐标,但该方法会抛出异常。据我所知,我将正确的参数传递给方法;两个双打和一个字符串,表示您是从地理坐标转换还是。该方法抛出以下异常:

命令171的SUMO错误:不支持源位置类型

//Get a random vehicle from the list of current vehicles in the simulation.
String vehicle = getRandomVehicle(); //Retrieves a random ID of an existing vehicle in the simulatio, don't worry about it,

SumoPosition2D pos = (SumoPosition2D) conn.do_job_get(Vehicle.getPosition(vehicle)); //Retrieves the last X and Y coordinates of the vehicle (example -> X: 6997.111901690444, Y: 7564.062169389001)

Object obj = conn.do_job_get(Simulation.convertGeo(pos.x, pos.y, "False")); //Throws an exception -> SUMO error for command 171: Source position type not supported) 

2 个答案:

答案 0 :(得分:1)

code看,我会说这个命令还没有在TraaS中实现。您可以使用TraCI4J或python客户端(推荐,因为它是最新的一个),它已与sumo和jython捆绑在一起(如果你需要坚持使用java)。

答案 1 :(得分:0)

谢谢你的建议,迈克尔。

我已联系过TraaS的创建者,他确认这是一个错误。该问题已在r48(https://sourceforge.net/p/traas/code/48/)中修复。 convertGeo的参数也从(double,double,String)变为(double,double,boolean)。