从OpenStreetMap获取速度限制

时间:2013-04-01 18:20:54

标签: mobile openstreetmap

我正在创建一个移动应用程序,以确定某人是否是一个好司机。手机位于仪表板上,并在用户驾驶时收集GPS信息。我需要确定一个方法,如果驱动程序遵循速度限制,我想通过OpenStreetMap这样做。从OpenStreetMap获取速度限制的最佳方法是什么?

3 个答案:

答案 0 :(得分:9)

您可以发出Web请求以获得答案 这是一个小盒子的一个(尝试作为浏览器URL),你应该是:

www.overpass-api.de/api/xapi?*[maxspeed=*][bbox=5.6283473,50.5348043,5.6285261,50.534884]

并且答案显示街道在学校门口经过:

<node id="1312239864" lat="50.5348877" lon="5.6286790">
  <tag k="highway" v="crossing"/>
  <tag k="traffic_calming" v="bump"/>
</node>
<node id="2025084665" lat="50.5345623" lon="5.6274183">
  <tag k="traffic_calming" v="choker"/>
</node>
...
<way id="191950462">
  <nd ref="2025084669"/>
...
  <tag k="bicycle" v="yes"/>
  <tag k="highway" v="secondary"/>
  <tag k="maxspeed" v="30"/>
  <tag k="name" v="Rue d'Esneux"/>
  <tag k="source:maxspeed" v="school zone"/>
</way>

我只留下了有趣的东西,最自我解释。例如,他们自己的节点上的流量平静功能。
街道是由节点和自己的标签组成的。
maxspeed = 30是你的答案。如果没有最大速度, 默认适用于高速公路=二级(或=高速公路......)
所有标签都在wiki.openstreetmap.org中描述
那是在使用xapi。您也可以使用overpass api
限速覆盖是部分的,但您可以改进它。 在主地图上留下Notes以提供数据。

答案 1 :(得分:6)

对于任何寻找可以同时使用XML和json的优秀现代替代方案的人来说,HERE Maps是隐藏的宝石,值得一试,有一个免费的计划可以提供大约100,000个请求,API也非常坚固且易于使用

https://developer.here.com/myapps/create-with-plan/10134035/10134084

创建一个帐户,创建您的应用,将您的lat批量应用到类似于下面的API。

根据文档获取速度限制示例请求

http://route.st.nlp.nokia.com/routing/6.2/getlinkinfo.xml?app_id=DemoAppId01082013GAL&app_code=AJKnXv84fjrb0KIHawS0Tg&waypoint=50.05564304861044,8.38889128575724&linkattributes=all

我与HERE地图没有任何关系,只是一个寻求良好速度限制解决方案的开发人员!

PS如果你使用这个解决方案,那么这个答案也可能有用。

Here Maps REST API - getlinkinfo returns incorrect speed limit

答案 2 :(得分:3)

在OpenStreetMap数据(link)中,有一个maxspeed标记用于道路和水道。 OSM数据本身有多种格式。最容易上手的是人类可读的XML格式,可以直接从OpenStreetMap.org导出。下面是The Strand in London的示例条目,显示数据格式以及maxspeed的表达方式。

<way id="157541665" version="1" timestamp="2012-04-05T22:32:48Z" changeset="1"/>
  <nd ref="1697772135"/>
  <nd ref="33141175"/>
  <nd ref="321255915"/>
  <nd ref="282569730"/>
  <tag k="highway" v="primary"/>
  <tag k="lanes" v="3"/>
  <tag k="maxspeed" v="30 mph"/>
  <tag k="name" v="Strand"/>
  <tag k="postal_code" v="EC4"/>
</way>