使用5k +地址的可用地理API计算出行时间

时间:2010-07-13 19:01:58

标签: google-maps geolocation maps gis

我正在研究运输模型,并准备在5,000点之间进行旅行时间矩阵。是否有一种免费,半可靠的方法来计算我所有节点之间的旅行时间?

我认为谷歌地图对我可以实现的查询/点击次数有限制。

修改

我想使用谷歌地图或类似的api,因为它们包括道路方向,车道数,发布速度,道路类型等数据......

编辑2

请注意,openstreet地图数据不完整,不适用于美国以外的所有司法管辖区。

5 个答案:

答案 0 :(得分:6)

Google Directions API将您限制为2500 calls per day。此外,服务条款规定您必须“仅在Google地图上显示结果时使用”服务。

您可能对OpenTripPlanner感兴趣,这是一个可以进行多模态路由的开发项目,以及构建OpenTripPlanner的Graphserver

一种方法是使用Graphserver的OpenStreetMap数据从每个节点生成Shortest Path Trees

答案 1 :(得分:1)

由于总共有12,502,500个连接,我很确定如果你试图将Google地图用于所有连接,你会遇到某种限制。您需要多少准确的结果/旅行的距离?

我可能会尝试生成一个带有行驶速度的粗略地图(例如,将州际公路快速标记为yadda yadda),然后使用一些软件计算从一点到另一点需要多长时间。人们可以把它想象成一个电磁场问题,你试图在一个具有不同电阻的平面上点到点计算电阻(州际公路是电线,湖泊是开路......)。

答案 2 :(得分:1)

如果您真的需要准确计算并存储在您的数据库中的所有这些路线,听起来(我相信)您将不得不花钱来获得这些。你可以想象,开发成本很高,而且应该有重复数据。

但是,我会对你的问题进行一些探讨:

  • 你真的需要5000全部!数据库中的距离?如果您根据需要向他们询问谷歌,然后将其缓存(如果允许),该怎么办?我有这样的网络应用程序,由于交通缓慢的模式,我能够尽早利用免费服务来审查这个想法。
  • 你真的需要全部5000分吗?或者你可以选择前100名并且有一个更易处理的问题吗?
  • 也许有一些混合物可以存储大城市之间的距离,并对更短的距离进行更多估算。

同样,我真的不知道你的问题是什么,但也许在盒子外思考会帮助你找到一个更简单的解决方案。

答案 3 :(得分:1)

你可能需要在这里寻找一些启发式方法。也许你可以根据一些因素估算旅行时间,例如几何距离和一些关于起点和终点的特征(城市与农村地区,国家,......)。您可以获得一些距离,尝试将您的参数拟合到它们的一个子集上,并查看您能够预测其他距离的程度。例如,我的预测是,在许多情况下,随着距离变大,行程时间接近距离的线性依赖性。

我知道它很乱,但是嘿,你正在试图估计12.5mio的数据点(或者无论数量是多少)。

您也可以通过找到您正在寻找的点的近点来逐步添加已经检索过的“真实”旅行时间的知识:

  • 获取最接近的点StartApprox,EndApprox到开始和结束位置,以便您有StartApprox和EndApprox之间的旅行时间
  • 计算距离StartError,start和StartApprox之间的EndError,end和EndApprox
  • 如果StartError + EndError>距离(StartApprox,EndApprox)* 0.10(或任何您的阈值) - >通过API计算距离(并存储它),否则使用已知的旅行时间加上基于StartError + EndError的开销时间

(如果您在NY有100个地址,在SF有100个地址,所有值都会或多或少相同(即它们之间的差异可能低于这些预测中涉及的不确定性),这样的方法会让你不要发出10000个查询,其中1会这样做)

答案 4 :(得分:-1)