OSM:以某种方式比定义的节点更多的节点

时间:2019-01-30 21:59:44

标签: openstreetmap overpass-api

使用OverPass我正在请求特定区域中的所有路线和节点。

文档说:“以正确的顺序枚举了定义道路几何形状的节点,并且仅使用其唯一标识符通过引用进行指示。这些节点必须已经使用其坐标分别定义。”

但是我得到的结果是,缺少了一些节点的定义,因为我得到了一些在节点定义中找不到的方式的子节点ID子代。

这是我的OverPass QL查询:

[bbox:{{bbox}}];
(
node;
<;
);
out;

我想念什么吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

严格来说,基于<(递归)语句的解决方案不符合您的要求。为了找出原因,我们来看一下Overpass QL documentation

  

递归向上独立查询写为一个小于符号“ <”。

     

它需要一个输入集。它产生一个结果集。其结果集是   组成:

     
      
  • 在输入集中出现节点的所有方式;加
  •   
  • 在输入集中出现的具有节点或方式的所有关系;加
  •   
  • 所有具有某种方式出现在结果集中的关系
  •   

您会注意到您的查询还返回了许多关系,尽管在您提到的问题中,您只希望结果中包含节点和方式。

正确的查询如下所示。而不是使用<,我们在QL中明确地告诉我们,我们只想要一组节点的方法,而所有节点都只希望一组方法-别无其他!

(
  node({{bbox}});
  way(bn);
  node(w);
);
out meta;

(顺便说一句,请忘记上面提到的Overpass语言指南。该指南不完整,目前尚未维护)。

答案 1 :(得分:0)

您的查询未请求所有“路和节点”。相反,它仅请求节点并执行“递归”以获取这些节点所在的方式。但是,对于这些方式,您只能从初始查询中获取节点。您将需要一个额外的“递归向下”查询所有其他节点,这些方式包括:

[bbox:{{bbox}}];
(
node;
<;
);
out body;
>;
out;

示例:https://overpass-turbo.eu/s/FGj