如何在Overpass中以其他方式/区域找到标签/方式?

时间:2016-10-05 10:01:52

标签: openstreetmap overpass-api

我希望所有行业都在" Chemnitz"用" hot_water_tank"。

此查询为我提供了标记为"landuse"="industrial""man_made"="hot_water_tank"的所有对象。我只需要包含"landuse"="industrial"的{​​{1}}。

"hot_water_tank"

我试过这个

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;

结果截图:

here a industry with tanks, now i need only the industry with tanks the dark red point is the industry with hot_water_tanks, i need only a result with the industry

1 个答案:

答案 0 :(得分:1)

这里的关键是使用Overpass QL中的两个鲜为人知的语句。 首先 is_in 为我们提供了功能所在的区域,其次我们需要使用 pivot 从所述区域中提取关系和/或方式。

以下是示例代码:

(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