旅行时间在一定范围内的所有点的地图?

45

我的问题非常简单,只需用一行就能理解:

是否有一种方法、工具等,可使用Google地图获取某个特定时间内所有路段的叠加层?

我希望问题已经很清楚了,但我在网上找不到相关的信息。

如果您有任何信息,都可以告诉我!

以下是一个示例来说明我的意思:

我正在寻找一个新的居住地。我知道我的办公室的精确地址。 在这种情况下,我能够在Google地图上叠加出某个特定时间范围内(比如30分钟)的路程所覆盖的区域。 我们将会在高速公路周围看到一个长长的彩色区域(因为你可以更快地到达目的地),而在道路周围则会看到其他颜色。


你所说的“surface”是什么意思并不清楚。你是在谈论地质学吗?还是其他什么? - Mano Marks
请定义“旅行时间”,是通过什么方式旅行的?(速度应该很重要) - Dr.Molle
看来我没有想象中清楚 :) - jlengrand
1
关于这个问题,我后来发现这种东西的名称叫做“等时线”。 - jlengrand
6个回答

37

我认为你在寻找类似于Mapnificient的东西:它会显示您在规定时间内可以通过公共交通到达的区域(视频)。

enter image description here

一个更多选项的类似网站是How Far Can I Travel。 在这里,您可以选择输入您的旅行速度和旅行时间或距离。另外,您还可以指定结果的精度。

enter image description here

那么,如何自己创建这样的示例呢?请参见这个相关问题,被接受的答案逐步解释了如何从Google Maps API 获取旅行时间数据

最后,您可以花费8.75美元购买Adam Ozimek和Daniel Miles撰写的文章Stata utilities for geocoding and generating travel time and travel distance information,其中描述了traveltime命令,该命令使用Google Maps为数据提供空间信息。

traveltime命令获取纬度和经度信息并查找点之间的旅行距离,以及通过驾车,步行或使用公共交通前往该距离所需的时间。


1
感谢您提供如此详细的答案。实际上,您几乎已经让我失去了兴趣,因为显然我想要开发的东西已经被完成了...我将不得不找到另一个想法! - jlengrand
6
自己实现是一次非常棒的学习经验。你可以看到当前的实现存在哪些不足,并尝试改进它们。 - BioGeek
1
目前没有任何现有的解决方案适用于我的城市,因此还有空间进行另一种开发。 - Suzana

5

除了@BioGeek提供的答案外,这里还有一些:

Nokia Here Maps API可以提供您需要的输出精确形状。他们称其为基于时间的等值线。请参见此处:请求基于时间的等值线

enter image description here

对于10分钟以下的旅行时间,请使用Isoscope,地址在这里。

此外,看起来这个也很有前途:Route360

更新:

在以下地方,可以免费使用Route360:

  • 非洲

  • 奥地利

  • 澳大利亚和新西兰

  • 不列颠群岛

  • 卑诗省

  • 捷克共和国

  • 丹麦

  • 法国

  • 德国

  • 意大利

  • 马来西亚、新加坡和文莱

  • 墨西哥

  • 挪威

  • 葡萄牙

  • 西班牙

  • 瑞典

  • 瑞士

  • 美国


Route 360 看起来确实很有趣。问题是它们目前只在德国可用 :). - jlengrand
这个已经改变了。在丹麦、英国群岛、挪威、加拿大、瑞士和法国,该服务可以免费使用(直到达到一定的请求限制)。请查看此处的列表。美国将很快可用(下周左右)。 - Daniel Gerber
Route360°已更名为Targomo,上面的失效链接现在可以找到: - abenrob

4
我认为您正在寻找Google Distance Matrix API。它返回的不是路线,而是每个起点和终点对之间的持续时间和距离。它每10秒有100个元素的使用限制。
因此,您可以根据所需的旅行时间做出有根据的距离猜测,在半径为该距离的圆上选择六或八个等分点,并查询相应的持续时间。然后根据结果调整距离并计算中间点。通过这种方式,您可以在几次迭代中得到(相当粗略的)地图。

2
我认为没有简单的方法可以做到这一点,但是有一个思路:
首先需要获取起始位置的经纬度坐标。然后需要计算出距离起始位置1公里的50个坐标(可以参考这里)。接下来需要遍历每个点,并使用谷歌驾车路线API查询从起始位置到该点的驾车时间。
您需要再次遍历这些点,以查找在允许旅行时间(例如您问题中的30分钟)之下的点,将这些点移动另外一公里左右(与点最初从起始位置移动的方向相同),并重复驾驶时间请求,直到所有点都在允许旅行时间之上。最终,您将得到50个坐标,可以使用Google Javascript API for mapping polygons将其作为多边形绘制到Google地图图像上。
这种方法需要向Google发送大量请求,因此您需要考虑Google每天对请求数量的限制。

谢谢你的回答。这正是我也想到的想法,尽管知道它完全不高效。感谢提供链接! - jlengrand
顺便说一下,我使用谷歌应用引擎工作,所以我不认为JavaScript是一个好的做法。我使用Python。 - jlengrand

2
您可以使用GraphHopper Directions API - 这个API部分也是开源的
由于我们最近添加了公共交通功能,目前它们还不能同时使用。但这已经计划好了,在此之前,您可以享受道路网络等时线的功能 :)
免责声明:我是GraphHopper的创始人之一。

enter image description here


1
你可以在当前位置周围画一个圆,并以每X度角检查道路。
另一个想法是使用等高线图和等值线。

哇,你正好开发出了我想要做的东西^^。虽然在网上找不到它。你的代码是开源的吗?我可以使用它吗? - jlengrand
@jlengrand:这不是我写的,也没有关于许可证的任何信息。复制数学并不是很复杂。在每个X度,它会询问谷歌方向API是否返回圆的点的航路点。 - Micromega
是的,但对于谷歌API和Web开发两者都是完全新手的我来说,这是一个巨大的帮助。关于许可证也找不到任何信息。 - jlengrand
1
很遗憾,看起来这个链接已经失效了。 - oob

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