【问题标题】:OpenstreetMap Overpass API - Validate tag if presentOpenstreetMap Overpass API - 验证标签(如果存在)
【发布时间】:2018-10-15 09:54:45
【问题描述】:

我有这个问题

[out:json];

(
 way['addr:street'='Kurzenmoor']['addr:housenumber'='12']['addr:postcode'='25370']['addr:country'='DE'];
 node(around:700)['highway'='bus_stop'][!'ref'];
);

out;

由于尚未在 API 中指定国家/地区,因此不会返回结果。

这行得通:

[out:json];

(
 way['addr:street'='Kurzenmoor']['addr:housenumber'='12']['addr:postcode'='25370'];
 node(around:700)['highway'='bus_stop'][!'ref'];
);


out;

有没有办法把这些结合起来?如果没有国家,我想要结果,如果有国家,它应该匹配所需的国家(在这个例子中是“DE”,如果匹配,我想要结果,否则我不想要它。

【问题讨论】:

标签: openstreetmap overpass-api


【解决方案1】:

Overpass API 不是地理编码器。

更好的方法是首先通过地理编码确定位置,例如通过使用Nominatim、Photon 或其他OSM-based geocoders 之一。在第二步中,使用 Overpass API 查找该位置附近的公交车站。

【讨论】:

  • 在这种情况下使用 Nominatim 对我有什么帮助?如果同一个邮政编码有多个结果,我将如何搜索我需要的具体结果?我仍然不能简单地传入国家代码,因为它可能没有在 OpenStreetMap 中设置。同样从我所见,该请求返回多个结果,但没有任何详细信息,因此我必须手动获取已返回的每个位置的详细结果。还是我在监督什么?也许你可以提供一个示例代码。谢谢
  • 另一个例子:https://nominatim.openstreetmap.org/search?street=213 Brünner Straße&postalcode=1210&country=AT 这不会返回所需的建筑物。但是https://nominatim.openstreetmap.org/search?street=213 Brünner Straße&postalcode=1210 可以。所以问题仍然存在
  • 除此之外,由于此功能有不同的用例(检查是否有结果,否则执行另一个查询,没有另一个请求api)
  • 这看起来像一个错误。您是否考虑通过github.com/openstreetmap/Nominatim/issues 进行举报?
  • 我已经为你报告了这个错误:github.com/openstreetmap/Nominatim/issues/1034
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-24
  • 2017-07-31
  • 1970-01-01
  • 2013-08-05
  • 1970-01-01
  • 2020-11-21
  • 2018-11-04
相关资源
最近更新 更多