如何使用 Overpass 在另一个 way/area 中找到一个 tag/way?

How can I find a tag/way in another way/area with Overpass?

我希望 "Chemnitz" 中的所有行业都具有 "hot_water_tank"。

此查询为我提供了带有标签 "landuse"="industrial""man_made"="hot_water_tank" 的所有对象。我只需要包含 "hot_water_tank".

"landuse"="industrial"
area
  ["name"="Chemnitz"]->.a;        
out body qt;
(
  way
    (area.a)                   
    ["landuse"="industrial"];

    way(area.a)
   ["man_made"="hot_water_tank"];


);

out body qt;

>;

out skel qt;

我试过这个

area
  ["name"="Chemnitz"]->.a;        

(
  way
    (area.a)                   
    ["landuse"="industrial"]->.c;
    way(area.a)
   ["man_made"="hot_water_tank"]->.s;

  (.c; .s;)->.all;
  (.c; - .s;)->.I_without_T;
  (.s; - .c;)->.T_wihtout_I;
  ((.all; - .I_without_T;) - .T_without_I;);


);

out body qt;
>;
out skel qt;

结果截图:

这里的关键是使用 Overpass QL 中两个鲜为人知的语句。 首先 is_in 给了我们特征所在的区域,其次我们需要使用 pivot[=17 从所述区域提取关系 and/or 方式=].

这是一个示例代码:

(area["name"="Chemnitz"]) -> .chemnitz; //Chemnitz

(
  way(area.chemnitz)["man_made"="hot_water_tank"];
  (._;>;)
)->.hotwatertank; // all tanks in Chemnitz

(.hotwatertank is_in;) -> .areas; // areas in which tanks are located

(
  way(pivot.areas)["landuse"="industrial"];
  relation(pivot.areas)["landuse"="industrial"];
)->._; // convert areas to ways and relations with "landuse"="industrial" pair

(._;._ >;); // get geometry
out body qt; //print