如何使用Overpass API获取航标?XAPI转Overpass API请求无返回结果问题求助
Fixing Your Overpass API Request for Seamarks
我来帮你排查这个问题~你的Overpass API请求没返回结果的核心原因是标签过滤的语法错误,咱们一步步来修正:
1. Correct the Tag Filter Syntax
你原来的写法 node["seamark:type=harbour"] 不符合Overpass的语法规范。在Overpass中,标签的键和值需要分开用引号包裹,中间用等号连接,正确的格式应该是:node["seamark:type"="harbour"]
2. Simplify the Request Structure
原请求里的 >; out skel qt; 是用来递归下载节点关联的Way或Relation元素,但如果你只需要标记为seamark:type=harbour的节点,这部分可以去掉,避免冗余请求。
Working Request for Nodes Only
[out:json][timeout:25]; node["seamark:type"="harbour"](4.04297,51.63984,5.09216,51.87106); out body;
Extended Request (Include Ways & Relations)
如果有些海港是用Way或Relation标记的(而非单一节点),可以扩展请求覆盖这些类型:
[out:json][timeout:25]; ( node["seamark:type"="harbour"](4.04297,51.63984,5.09216,51.87106); way["seamark:type"="harbour"](4.04297,51.63984,5.09216,51.87106); relation["seamark:type"="harbour"](4.04297,51.63984,5.09216,51.87106); ); out body; >; out skel qt;
Why No Error Message?
Overpass API的一个特点是,对于这类语法错误不会返回明确的异常提示,只会返回空的结果集,这也是容易让人困惑的地方。修正语法后,你应该就能获取到目标区域内的海港航标数据了。
内容的提问来源于stack exchange,提问作者Fiphe
相关产品推荐
相关产品推荐

