Google maps 使用google maps API查找某个位置的平均速度

Google maps 使用google maps API查找某个位置的平均速度,google-maps,Google Maps,我试图了解某个特定位置的当前交通状况。所提到的GTrafficOverlay对象仅在现有地图上提供覆盖 有人知道我如何使用他们的API从谷歌获取这些数据吗?谷歌没有为这些数据提供公共API 雅虎有一个关于交通状况的feed()——建筑、事故等等。一篇关于如何访问它的评论是 如果您想要实际的道路速度,您可能需要与商业供应商合作。这只是理论上的,但也许有一种方法可以使用distancematrix api提取这些数据 方法 1) 创建一个拓扑道路网络,包括节点和边,如下所示: 每个边缘都有四个属性

我试图了解某个特定位置的当前交通状况。所提到的
GTrafficOverlay
对象仅在现有地图上提供覆盖


有人知道我如何使用他们的API从谷歌获取这些数据吗?

谷歌没有为这些数据提供公共API

雅虎有一个关于交通状况的feed()——建筑、事故等等。一篇关于如何访问它的评论是


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

这只是理论上的,但也许有一种方法可以使用distancematrix api提取这些数据

方法

1)

创建一个拓扑道路网络,包括节点和边,如下所示:

每个边缘都有四个属性:
[边缘编号;边缘速度;边缘时间,边缘长度]
您可以使用openstreetmap数据创建此网络。 在开始时,每条边缘将具有相同的道路速度,例如50km/h。 只需使用drivelink并删除其他边。还要考虑到有些道路是单向的

2)

随机选择两个距离不小于5或10km的节点

  • 使用dijsktra最短路径算法计算这两个节点之间的最短路径(成本=边缘时间)。使用拓扑网络来实现这一点。输出将如下所示:

    节点=[NODE_23,NODE_44]路径=[EDGE_3,EDGE_130,EDGE_49,EDGE_39]

  • 使用距离矩阵api计算两个节点之间行驶所需的时间

预先分配一个大小为
N X边数\u的矩阵a,用零值填充
预先分配一个大小为
1 X边数\u的矩阵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

将新的计算速度指定给每条边

3)

迭代点2),直到计算的速度开始收敛

评论

我不确定计算的速度是否会收敛,测试这个方法会很有趣。如果我有时间,我会尝试这样做。 距离矩阵api没有提供比1分钟更精确的旅行时间,这就是为什么一对节点之间的距离至少需要5或10公里或更长的原因。 此外,这种方法也不尊重谷歌的服务条款