输出嵌套关系的节点,同时在 Overpass-api 中保留标签

Output a nested relation's nodes while keeping tags in Overpass-api

我正在尝试按洞自定义渲染一些高尔夫球场。目标是显示每个孔的矢量图像及其相关特征。

我可以通过课程的关系进行递归,但我不知道如何同时保留标签和节点位置。我想输出这样的东西(可能经过一些 post 处理):

{
hole: 1,
par: 4,
...,
teeboxes: [{id:"x",nodes:[{lat,lon},...]},...],
fairways: [{id:"x",nodes:[{lat,lon},...]},...],
green: [{id:"x",nodes:[{lat,lon},...]},...],
}

我的查询目前是这样的:

[out:json][timeout:5];
relation["name"="Davis Golf Course"];
way(r)["golf"="hole"];
foreach->.a(
  .a out;
  way(around.a:40.0)["golf"];
  out;
)

这让我获得了所有功能以正确的顺序,但我只获得了没有节点坐标的节点 ID。下面将只给出这些特征的所有节点,但我不知道它们属于哪个。

[out:json][timeout:5];
relation["name"="Davis Golf Course"];
way(r)["golf"="hole"];
foreach->.a(
  .a out;
  way(around.a:40.0)["golf"];
  >>;
  out;
)

我是新手,所以我可能会在左外野。谢谢你的帮助! Course reference

我能够成功查询到我想要的内容:

[out:json][timeout:5];
way(<golf_course>);map_to_area ->.golfcourse;

way["golf"="hole"](area.golfcourse)->.holes;

(
relation["golf"="fairway"](area.golfcourse);
way["golf"~"^(green|tee|water_hazard|bunker|fairway)"](area.golfcourse);
)->.features;

.holes out geom;
.features out geom;