2

我正在尝试在某个区域搜索燃料(Tankstelle)。

这是一个 50 公里的边界框,它只给出很少的结果:

http://nominatim.openstreetmap.org/search?q=Tankstelle&format=xml&limit=50&viewbox=7.98435,49.40889,8.95440,48.77371&bounded=1

它包含一个“more_url”链接以获取更多数据。虽然我使用的是限制参数,但我只得到很少的结果。是否有可能至少获得与限制而不是这个more_url指定的结果一样多的结果?

汤姆

4

2 回答 2

2

编辑(试图更明确)

如果您想使用 Nominatim 搜索 OSM“功能”,您应该使用专用的 - 即使没有记录!- Nominatim 语法,使用括号内的特殊短语:

http://nominatim.openstreetmap.org/search?q=[Tankstelle]&format=xml&limit=50&viewbox=7.98435,49.40889,8.95440,48.77371&bounded=1

使用此语法的限制:

  • 你必须设置一个 viewbox,并且 bounded=1。
  • 限制的最大值为 50。

当我的查询检索到 max = 50(50 个加油站,即使地址中没有“Tankstelle”)时,您可以看到您的查询检索到 4 个结果(地址中带有“Tankstelle”)。

我不知道为什么 Nominatim 向您的搜索示例提出 more_url。

现在,如果您搜索常规地址(“q=50 Mozart street, Denver”),那么 Nominatim 通常会坚持您设置的限制 (50)。如果 Nominatim 找到超过 50 个答案,则 more_url 允许获取 50 个结果的下一个“页面”(依此类推)。

于 2014-09-04T11:40:15.277 回答
0

要检索给定区域中的所有加油站,最好使用不同的 API,例如Overpass API。Nominatim 主要是一个(反向)地理编码器,并不是为此类查询而设计的。

请参阅此示例查询,显示边界框中的所有加油站,使用overpass turbo进行可视化:

<osm-script output="json" timeout="25">
  <union>
    <query type="node">
      <has-kv k="amenity" v="fuel"/>
      <bbox-query e="8.95440" n="49.40889" s="48.77371" w="7.98435"/>
    </query>
    <query type="way">
      <has-kv k="amenity" v="fuel"/>
      <bbox-query e="8.95440" n="49.40889" s="48.77371" w="7.98435"/>
    </query>
    <query type="relation">
      <has-kv k="amenity" v="fuel"/>
      <bbox-query e="8.95440" n="49.40889" s="48.77371" w="7.98435"/>
    </query>
  </union>
  <print mode="body"/>
  <recurse type="down"/>
  <print mode="skeleton" order="quadtile"/>
</osm-script>
于 2014-09-03T09:24:46.550 回答