如何使用 OpenStreetMaps 获取道路的速度限制?

Nic*_*ckd 4 java api openstreetmap

我试图使用坐标获取指定道路的速度限制,我尝试过使用 OpenStreetMaps,但我对这个 API 请求非常陌生,你会如何在 java 中向 API 请求信息?谢谢。

Mic*_*ael 6

OSM 中的道路属于称为“道路”的更广泛类别的一部分。例如,要查找伦敦周围 M25 的最大速度,您可以在以下位置查询 HTTP GET

/api/0.6/way/27731013
Run Code Online (Sandbox Code Playgroud)

响应是

<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="CGImap 0.8.1 (12076 thorn-01.openstreetmap.org)" copyright="OpenStreetMap and contributors" attribution="http://www.openstreetmap.org/copyright" license="http://opendatacommons.org/licenses/odbl/1-0/">
 <way id="27731013" visible="true" version="17" changeset="69008803" timestamp="2019-04-08T14:10:29Z" user="ika-chan! UK-USA" uid="1016290">
  <nd ref="210993597"/>
  <nd ref="6390949913"/>
  <nd ref="204492"/>
  <nd ref="12086420"/>
  <nd ref="6390949910"/>
  <nd ref="204490"/>
  <nd ref="6390949967"/>
  <nd ref="6390949908"/>
  <nd ref="669805479"/>
  <tag k="active_traffic_management" v="yes"/>
  <tag k="bicycle" v="no"/>
  <tag k="carriageway_ref" v="A"/>
  <tag k="description" v="London Orbital Motorway"/>
  <tag k="foot" v="no"/>
  <tag k="highway" v="motorway"/>
  <tag k="highways_england:area" v="DBFO5"/>
  <tag k="horse" v="no"/>
  <tag k="int_ref" v="E 15;E 30"/>
  <tag k="lanes" v="4"/>
  <tag k="lit" v="yes"/>
  <tag k="maxspeed" v="70 mph"/>
  <tag k="maxspeed:variable" v="peak_traffic"/>
  <tag k="motor_vehicle" v="designated"/>
  <tag k="oneway" v="yes"/>
  <tag k="operator" v="Highways England"/>
  <tag k="ref" v="M25"/>
  <tag k="source:maxspeed" v="UK:motorway"/>
  <tag k="surface" v="asphalt"/>
 </way>
</osm>
Run Code Online (Sandbox Code Playgroud)

最大速度为

<tag k="maxspeed" v="70 mph"/>
Run Code Online (Sandbox Code Playgroud)

这可能并不总是存在。根据OSM 论坛上的这篇文章

OSM 中的数据不完整,OSM 中只有约 7% 的高速公路具有 maxspeed 标签。但是许多(所有?)国家/地区都有基于道路分类的默认速度限制,您可以从高速公路标签值(或参考)中推断出这一点,因此仅仅因为缺少 maxspeed 标签并不意味着您无法推断出速度极限。然而,这要求您了解您感兴趣的国家/地区的速度限制(或道路分类)。