了解 Open street map query response 的响应

Understand the response of Open street map query response

我正在尝试获取特定坐标周围位置的限速。

OSM Query: www.overpass-api.de/api/xapi?*[maxspeed=*][bbox=5.6283473,50.5348043,5.6285261,50.534884]

响应:

<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="Overpass API">
<note>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</note>
<meta osm_base="2015-06-09T07:04:02Z"/>

  <node id="21265775" lat="50.5350159" lon="5.6293520"/>
  <node id="21265776" lat="50.5346804" lon="5.6276238"/>
  <node id="1312239857" lat="50.5347491" lon="5.6278274"/>
  <node id="1312239864" lat="50.5348877" lon="5.6286790">
    <tag k="highway" v="crossing"/>
    <tag k="traffic_calming" v="table"/>
  </node>
  <node id="2025084669" lat="50.5353414" lon="5.6303289">
    <tag k="highway" v="traffic_calming"/>
    <tag k="traffic_calming" v="choker"/>
  </node>
  <node id="3362188585" lat="50.5345623" lon="5.6274183">
    <tag k="highway" v="traffic_calming"/>
    <tag k="traffic_calming" v="choker"/>
  </node>
  <way id="191950462">
    <nd ref="2025084669"/>
    <nd ref="21265775"/>
    <nd ref="1312239864"/>
    <nd ref="1312239857"/>
    <nd ref="21265776"/>
    <nd ref="3362188585"/>
    <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>

</osm>

这是在边界框的情况下(bbox:我猜这些是角坐标,或者 API 根据提供的坐标制作一个框或多边形)。但问题是,我只有一个坐标,另一个问题是,我在响应中看到 maxspeed = 30。但是不确定我应该写什么样的代码来解析这个响应,因为响应格式可能会改变。我正在使用 objective C 平台来解析此响应。

响应的格式是常规的 XML. For understanding it you should read about OSM's elements

您的回复包含一个 way and several nodes as well as their tags。但是当查询不同的边界框时,它可能包含不止一种方式。

这条路有一条您似乎感兴趣的maxspeed tag。几何体由其节点定义的方式。该方式通过 <nd ref="<node ID>"/> 引用六个不同的节点。每个 <node> 都有一个唯一的 ID 和一个通过纬度和经度指定的坐标。几何的方式是由它引用其节点的顺序定义的,而不是节点在响应文件中出现的顺序!在您的特定情况下,路径从 ID 为 2025084669 的节点开始,到 ID 为 3362188585 的节点结束。还要记住,一种方式可以多次引用同一个节点(例如,如果它是环形交叉路口)。并且可以通过多种方式引用单个节点(例如,如果它是一个连接点)。

如果您创建一个 OSM 帐户并试用其中一种地图编辑器,您可能会更容易理解这些原语。

关于 JSON 输出:我建议摆脱 XAPI 兼容性调用,而是开始使用更强大的 Overpass XML 或 Overpass QL(参见 language guide): raw data, query and data on overpass turbo。请注意,此处的边界框格式与 XAPI 语法中的顺序不同。