我正在创建一个移动应用程序,以确定某人是否是一个好司机。手机位于仪表板上,并在用户驾驶时收集GPS信息。我需要确定一个方法,如果驱动程序遵循速度限制,我想通过OpenStreetMap这样做。从OpenStreetMap获取速度限制的最佳方法是什么?
答案 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。
根据文档获取速度限制示例请求
我与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>