从OpenStreetMap获取速度限制

17

我正在创建一个移动应用程序,用于确定某人是否是一名好司机。手机放置在仪表盘上,在用户驾驶时收集GPS信息。我需要确定一种方法来检测司机是否遵守限速,并且我想通过OpenStreetMap来实现这一点。怎样从OpenStreetMap获取速度限制是最好的方法?

3个回答

13

您可以发出一个网络请求来获得您的答案。
以下是其中一个小框(将其作为浏览器URL尝试)中应该出现的内容:

You can make a Web request to get your answer.
Here is one (try it as a browser URL) of a small box where you're supposed to be:

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是你的答案。如果没有最高限速,则默认适用于highway=secondary(或=motorway…)
所有标签都在wiki.openstreetmap.org上描述。
这是使用xapi。您也可以使用overpass api
速度限制覆盖范围是部分的,但您可以改进它。 在主地图上留下笔记以提供数据。


1
该使用已被弃用。 - larsaars

6

对于任何想寻找一个能够使用XML和json的好的现代替代品的人来说,HERE Maps是一个隐藏的宝石,绝对值得一试。有一个免费计划,可以提供大约100,000个请求,API也非常稳定且易于使用。

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

创建一个账户,创建您的应用程序,将您的纬度和经度应用到类似下面的 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 Maps没有任何关联,只是一个寻找好的速度限制解决方案的开发者!

如果您使用此解决方案,则此答案也可能有用。

Here Maps REST API - getlinkinfo返回不正确的速度限制


4

在OpenStreetMap数据中,有一个maxspeed标签用于道路和水路(链接)。OSM数据本身以多种格式提供。最容易入门的是人类可读的XML格式,可以直接从OpenStreetMap.org导出。以下是伦敦The Strand的一个示例条目,显示数据格式以及如何表达最高速度(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>

8
请问您能否将您的GET请求发布到OpenStreetMap上?谢谢!:) - MQoder
1
一个展示你如何得出结果的例子会很方便。 - Teilmann

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