代码之家  ›  专栏  ›  技术社区  ›  dassouki

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

  •  6
  • dassouki  · 技术社区  · 15 年前

    我正在研究一个交通模型,准备做一个5000点之间的旅行时间矩阵。有没有一个免费的,半可靠的方法来计算我所有节点之间的旅行时间?

    编辑

    我想使用的api,如谷歌地图或类似的,因为他们包括数据,如道路方向,车道数,张贴速度,道路类型等。。。

    编辑2

    5 回复  |  直到 15 年前
        1
  •  6
  •   tcarobruce    15 年前

    Google Directions API 限制您 2500 calls per day . 此外,服务条款规定,您只能“在谷歌地图上显示结果时”使用该服务。

    OpenTripPlanner ,一个可以进行多模式路由的开发中项目,以及 Graphserver OpenTripPlanner的基础。

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

        2
  •  1
  •   Nick T twasbrillig    15 年前

    因为总共有12502500个连接,我敢肯定如果你尝试使用Google地图的话,你会达到某种程度的限制。你需要多准确的结果/你要走多远?

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

        3
  •  1
  •   ndp    14 年前

    如果你真的需要所有这些路线准确地计算和存储在你的数据库中,这听起来像(我相信),你将不得不花钱获得这个。正如你所能想象的,这是昂贵的发展,应该有再膨胀。

    • 你真的需要所有的5000!数据库中的距离?如果你在需要它们的时候向google请求,然后缓存它们(如果允许的话)。我有过这样的web应用程序,由于缓慢的流量增长模式,我能够在早期利用免费服务来审查这个想法。
    • 也许有一种混合模式,你可以存储大城市之间的距离,并对较短的距离做更多的估计。

    再说一次,我真的不知道你的问题是什么,但也许跳出框框思考会帮助你找到一个更容易的解决办法。

        4
  •  1
  •   Nicolas78    14 年前

    你可能需要在这里进行一些启发。也许你可以根据一些因素来估算旅行时间,比如几何距离和一些关于起点和终点的特征(城市与农村地区、国家……)。你可以得到一些距离,试着在其中的一个子集上拟合你的参数,看看你能预测其他的参数有多好。例如,我的预测是,在许多情况下,随着距离的增大,旅行时间与距离成线性关系。

    我知道这很混乱,但是嘿,你试图估计1250万IO数据点(或者其他任何数量:)

    您还可以通过查找与您要查找的时间接近的点,从已经检索到的“真实”旅行时间中逐步添加知识:

    • 获取StartApprox和EndApprox到起始和结束位置的最近点,以便在StartApprox和EndApprox之间有一个行程时间
    • 如果启动器错误+EndError>距离(StartApprox,EndApprox)*0.10(或任何阈值)—>通过API计算距离(并存储),否则使用已知的行程时间加上基于StartError+EndError的开销时间

    (如果你在纽约有100个地址,在旧金山有100个地址,那么所有的值或多或少都是相同的(即它们之间的差异可能比这些预测中涉及的不确定性要小),这样的方法可以避免你在1可以做的情况下发出10000个查询)

        5
  •  -1
  •   Ruz    14 年前

    很多GIS软件包都有路由算法,如果你有数据。。。运输数据可能相当浪费。

    以下是快速谷歌搜索的一些其他选择: Wikipedia Route66 Truck Miles