get speed limits from OpenStreetMap

孤街浪徒 提交于 2020-01-10 10:07:34

问题


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?


回答1:


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]

and the answer showing the street passing through it, in front of a school:

<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>

I only left the interesting stuff in, most self explanatory. For example, traffic calming features on their own node.
The street is the way made of the nodes and of its own tags.
maxspeed=30 is your answer. Should there be no maxspeed, the default applies for highway=secondary (or =motorway ...)
All the tags are described at wiki.openstreetmap.org
That's using xapi. You may also use the overpass api.
Speed limit coverage is partial but you may improve it. Leave Notes on the main map to provide the data.




回答2:


For any one looking for a good modern alternative which can use both XML and json,HERE Maps ishidden gem defiantly worth checking out, there is a free plan which gives around 100,000 requests, the API is also rock solid and easy to use.

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

Create an account, create your app, apply your lat lot to an API similar to the below.

Get the speed limit example request as per their documentation

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

I am in no way affiliated with HERE Maps, just a developer looking for a good speed limit solution!

PS if you do you do use this solution, then this answer may also be of use.

Here Maps REST API - getlinkinfo returns incorrect speed limit




回答3:


There is a maxspeed tag that is used to for roads and waterways in the OpenStreetMap data (link). The OSM data itself is available in a number of formats. The easiest to get started with is the human readable XML format which can be exported directly from OpenStreetMap.org. below is an example entry for The Strand in London showing the data format and how maxspeed is expressed.

<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>


来源:https://stackoverflow.com/questions/15749133/get-speed-limits-from-openstreetmap

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!