使用OverPass我正在请求特定区域中的所有路线和节点。
文档说:“以正确的顺序枚举了定义道路几何形状的节点,并且仅使用其唯一标识符通过引用进行指示。这些节点必须已经使用其坐标分别定义。”
但是我得到的结果是,缺少了一些节点的定义,因为我得到了一些在节点定义中找不到的方式的子节点ID子代。
这是我的OverPass QL查询:
[bbox:{{bbox}}];
(
node;
<;
);
out;
我想念什么吗?
谢谢。
答案 0 :(得分:1)
严格来说,基于<
(递归)语句的解决方案不符合您的要求。为了找出原因,我们来看一下Overpass QL documentation:
递归向上独立查询写为一个小于符号“ <”。
它需要一个输入集。它产生一个结果集。其结果集是 组成:
- 在输入集中出现节点的所有方式;加
- 在输入集中出现的具有节点或方式的所有关系;加
- 所有具有某种方式出现在结果集中的关系
您会注意到您的查询还返回了许多关系,尽管在您提到的问题中,您只希望结果中包含节点和方式。
正确的查询如下所示。而不是使用<
,我们在QL中明确地告诉我们,我们只想要一组节点的方法,而所有节点都只希望一组方法-别无其他!
(
node({{bbox}});
way(bn);
node(w);
);
out meta;
(顺便说一句,请忘记上面提到的Overpass语言指南。该指南不完整,目前尚未维护)。
答案 1 :(得分:0)
您的查询未请求所有“路和节点”。相反,它仅请求节点并执行“递归”以获取这些节点所在的方式。但是,对于这些方式,您只能从初始查询中获取节点。您将需要一个额外的“递归向下”查询所有其他节点,这些方式包括:
[bbox:{{bbox}}];
(
node;
<;
);
out body;
>;
out;