Я хочу использовать разрабатываемую версию Overpass (https://olbricht.nrw/ovt/#) для создания сделанных на заказ областей с помощью функции hull ().
Мои данные для создания вокруг корпуса () в теге «ref», который для этих объектов отформатирован как [n] - [m], и я хочу использовать только часть [n] для группировки.
Единственное решение, которое мне удалось make - сделать выбор для каждого значения [n], использовать convert для создания производного объекта, а затем объединить их все вместе. Очень громоздкий в обслуживании.
Мой код выглядит следующим образом:
[out:json];
{{geocodeArea:Gentofte Municipality}}->.a;
(
node["power"="substation"](area.a);
way["power"="substation"](area.a);
)->.trafoer;
.trafoer out;.trafoer>;out geom;
node["ref"]["power"="cable_distribution_cabinet"](area.a)->.skabe;
node.skabe["ref"~ "^11-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "11", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~ "^13-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "13", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~ "^15-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "15", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~ "^21-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "21", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~ "^43-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "43", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~ "^132-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "132", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~ "^198-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "198", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~ "^241-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "241", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~ "^254-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "254", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~ "^357-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "357", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~ "^424-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "424", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~ "^441-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "441", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~ "^444-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "444", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~ "^499-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "499", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~ "^686-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "686", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~ "^733-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "733", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~ "^820-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "820", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~ "^821-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "821", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~ "^907-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone= "907", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~"^1145-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone="1145", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~"^1267-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone="1267", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~"^1396-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone="1396", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~"^1492-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone="1492", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~"^1517-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone="1517", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~"^1555-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone="1555", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~"^1692-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone="1692", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~"^1960-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone="1960", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~"^4029-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone="4029", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~"^4205-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone="4205", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~"^4531-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone="4531", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~"^4782-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone="4782", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~"^5009-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone="5009", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~"^6842-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone="6842", ::=::, ::geom=geom();)->.sum;
node.skabe["ref"~"^7106-"]->.ix; (.skabe; - .ix;)->.skabe; (.sum; .ix convert skab zone="7106", ::=::, ::geom=geom();)->.sum;
.skabe out;
.sum out geom;
.sum;
for (t["zone"])
{
make substation_area
substation_ref=_.val,
source=set("{"+type()+" "+id()+"}"),
::geom=hull(gcat(geom()));
out geom;
}
{{style:
node[!zone], way {
color:red; fill-color:red; width:3; text: ref;
}
node[zone], way {
color:darkgreen; fill-color:green; width:1; symbol-size:4;
}
node[power=substation], way {
color:black; fill-color:blue; width:1; dashes:5,5; symbol-size:12; text: ref;
}
area {
text: substation_ref;
}
}}
Есть ли более элегантный способ запустить for l oop непосредственно в теге вместо создания производного Сначала объекты?