14

I'm creating a mobile app that determines if someone if a good driver. The phone sits on the dashboard and collects GPS information while the user is driving. I need to determine a way if the driver is following the speed limit, and I would like to do this via OpenStreetMap. What is the best way to get speed limits from OpenStreetMap?

4

3 回答 3

13

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

于 2013-09-11T13:44:39.310 回答
6

对于任何寻找可以同时使用 XML 和 json 的现代替代方案的人来说,HERE Maps ishidden gem 绝对值得一试,有一个免费计划提供大约 100,000 个请求,API 也坚如磐石且易于使用。

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

创建一个帐户,创建您的应用程序,将您的 lat lot 应用到类似于下面的 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 没有任何关系,只是一个正在寻找好的限速解决方案的开发人员!

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

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

于 2015-06-27T21:59:11.830 回答
3

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>
于 2013-04-02T08:08:31.427 回答