OSM:在某种程度上,节点比定义的节点多



使用OverPass,我请求特定区域中的所有路径和节点。

文件中写道:"定义道路几何结构的节点以正确的顺序枚举,并且只能使用其唯一标识符通过引用来指示。这些节点必须已经用其坐标单独定义。">

但在我得到的结果中,一些节点的定义丢失了,因为我得到了一些节点ID,这是我在节点定义中找不到的。

这是我的OverPass QL查询:

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

我错过了什么?

谢谢。

严格来说,基于<(recurse-up)语句的解决方案不能满足您的要求。为了找出原因,我们来看看天桥QL文档:

递归独立查询被写成一个小于符号"<"。

它需要一个输入集。它生成一个结果集。其结果集为包括:

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

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

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

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

(顺便说一句:请忘记上面提到的天桥语言指南。它不完整,目前没有维护)

您的查询不会请求所有"方式和节点"。相反,它只是请求节点并执行"递归",以获取这些节点的组成方式。但是,对于这些方法,您将仅从初始查询中获得节点。您将需要一个额外的"递归向下"来查询所有其他节点,这些方式包括:

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

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

最新更新