如何使用 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
我希望 "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