使用谷歌地图API查找某一位置的平均速度

3

我想获取特定位置当前的交通情况。在这里提到的GTrafficOverlay对象只能为现有地图提供覆盖层。

是否有人知道如何使用谷歌API获取此数据?

2个回答

1
这只是理论上的,但也许可以使用距离矩阵API提取这些数据的方法。
方法:
1)建立一个拓扑路网,包括节点和边,类似于以下内容:

enter image description here

每条边都有四个属性:[EDGE_NUMBER;EDGE_SPEED;EDGE_TIME,EDGE_LENGTH] 您可以使用OpenStreetMap数据创建此网络。 一开始,每条边的道路速度相同,例如50km/h。 您只需要使用drivelink并删除其他边缘。还要考虑到某些道路是单向的。
2) 随机选择两个节点,它们之间的距离不小于5或10km。
使用Dijkstra最短路径算法计算这两个节点之间的最短路径(成本= EDGE_TIME)。使用您的拓扑网络进行计算。输出将如下所示: NODE = [NODE_23,NODE_44] PATH = [EDGE_3,EDGE_130,EDGE_49,EDGE_39]
使用距离矩阵API计算在两个节点之间行驶所需的时间。
预分配一个大小为N X number_of_edge的矩阵A,并填充零值 预分配一个大小为1 X number_of_edge的矩阵B,并填充零值。
在矩阵A的第一行中,如果相应的边在路径中,则将每列(对应每条边)填充为该边的长度。
[col_1,col_2,col_3,...,col_39,...,col_49,...,col_130]
[0,    0,    len_3,...,len_39,...,len_49,...,len_130] %row 1

在矩阵B的第一行中放入使用距离矩阵API计算出的时间。
然后选择两个未在第一条路径中使用的新节点,并重复该操作,直到没有剩余节点为止(这样您将填充第2行、第3行等)。
现在,您可以解决线性方程组:Ax = B,其中speed = 1/x
将新计算出的速度分配给每个边缘。
迭代步骤2,直到计算出的速度开始收敛。
注:我不确定计算出的速度是否会收敛,如果有时间,测试一下这种方法会很有趣。距离矩阵API提供的旅行时间精度不超过1分钟,因此节点对之间的距离至少需要为5或10公里或更多。此外,此方法未遵守Google的服务条款。

0

Google没有公开API提供此数据。

Yahoo有一个交通状况的源(example)--包括施工、事故等。如何访问它的说明在这里

如果您想要实际的道路速度,可能需要与商业供应商合作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接