我正在研究ITS(智能交通系统)。所以我必须计算一辆公共汽车在公共汽车站的EAT(预计到达时间)。现在我有两个点(lat,lng)目前车辆的停止和位置。所以我必须计算距离。下一步,我将获得速度,这样我就可以计算公共汽车到达车站的时间。我的问题是,我正在使用这种方法来计算两点之间的距离,
private double distance(double lat1, double lon1, double lat2, double lon2, char unit) {
double theta = lon1 - lon2;
double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta));
dist = Math.acos(dist);
dist = rad2deg(dist);
dist = dist * 60 * 1.1515;
if (unit == 'K') {
dist = dist * 1.609344;
} else if (unit == 'N') {
dist = dist * 0.8684;
}
return (dist);
}我的想法是,它计算两点之间的直线距离。它不会在实时发生。因为车辆是通过公路行驶的。因此,有没有更好的解决方案或算法来找出两个地方之间的距离。请任何人在这方面帮助我。
发布于 2014-10-15 13:43:55
距离取决于公交车路线。
如果您的智能交通系统知道公交车路线,那么您可以使用该信息。
谷歌地图有这些公交路线吗?您可以使用Google Maps API向它询问从原点到目标点的运输路线,但您必须确定哪个选择是正确的(如果有)。
如果你的实际目标是确定预计到达时间,那么你需要的是运输时间表,而不是距离。(乘客需要等待公共汽车的到达,公共汽车可能会在某些站点等待与其他线路的会合,以此类推。)只要知道相关的总线线路,Google Maps API就可以提供帮助。
发布于 2014-10-15 14:01:26
你是对的,计算两个地理位置的直接距离是不够的,因为路线通常不是笔直的。在这种情况下,Google地图api可以帮助您。
你可以使用谷歌地图Direction Service。检查以下传输模式:
https://developers.google.com/maps/documentation/javascript/directions#TravelModes
当然,你必须考虑到停车时间和公交车的平均速度。由于公交车不会总是有相同的速度,你需要计算平均速度,将红绿灯和其他相关因素考虑在内(可能是交通堵塞?)如果您的估计时间也显示可能的延迟并实时更新(当公交车将出现拥堵时,可以将等待时间与延迟时间相加),这将是最好的。
发布于 2018-04-20 01:11:25
您可以使用下面的LatLangTool方法
public static Double getDistanceToLocation(SourceCordinate from, SourceCordinate to) {
LatLng busDeparturePoint = new LatLng(from.latitude, from.longitude);
LatLng busDestinationPoint = new LatLng(to.latitude, to.longitude);
return LatLngTool.distance(busDeparturePoint, busDestinationPoint, LengthUnit.KILOMETER);
}https://stackoverflow.com/questions/26375138
复制相似问题