Overpass查询合并求助:如何移除威斯巴登多余节点?
解决Overpass合并查询后多余节点的问题
问题原因
你当前查询里的>;命令会递归获取结果集中所有元素的依赖子元素——自行车道的relation包含大量组成它的way,而way又关联着大量普通节点,这些就是你看到的“多余节点”。单独查询时没这个问题,是因为单独查自行车道时你可能没注意到这些子节点,或者单独查交通信号灯时没有关联子元素。
解决方案
方案1:精准获取所需元素(推荐)
直接获取交通信号灯节点和自行车道relation对应的way,避免拉取多余节点。查询代码如下:
[out:json][timeout:25]; {{geocodeArea:Wiesbaden}}->.searchArea; // 收集交通信号灯节点 node["highway"="traffic_signals"](area.searchArea)->.ampeln; // 收集自行车道relation的组成way relation["route"="bicycle"](area.searchArea); way(r)->.bike_routes; // 合并并输出带几何信息的结果 (.ampeln; .bike_routes;); out geom;
- 用
way(r)提取自行车道relation的成员way,不会拉取way的节点 out geom直接输出元素的几何坐标,不需要额外节点数据,适合地图渲染
方案2:过滤输出结果
如果需要保留relation的完整信息(比如路线名称、属性),可以在输出时过滤掉多余节点:
[out:json][timeout:25]; {{geocodeArea:Wiesbaden}}; ( node["highway"="traffic_signals"](area)->.ampeln; relation["route"="bicycle"](area)->.routen; ); out body; >; // 只保留需要的元素类型:交通信号灯节点、way、relation node["highway"="traffic_signals"]; way; relation; out body;
- 先拉取所有依赖元素,再通过标签和类型过滤,只保留目标节点、自行车道的way和relation
内容的提问来源于stack exchange,提问作者Mathias Ellpunkt
相关产品推荐
相关产品推荐

