Also ich hatte mich kürtlich auch mit diesem Thema beschäftigt.
Meine Abfrage:
[out:csv(::type,::id,"WDPA_ID:ref",protection_title,short_protection_title,name,operator,leisure,start_date,wikidata,::user)][timeout:45];
{{geocodeArea:Brandenburg}}->.searchArea;
(
way["boundary"="protected_area"]["protect_class"="4"]["name"](area.searchArea);
relation["boundary"="protected_area"]["protect_class"="4"]["name"](area.searchArea);
);
out meta;
Liefert eine Liste aller in Brandenburg erfassten Schutzgebiete mit protect_class=4 als csv.
Man sieht z.B., das ::id nicht immer ganz vorn stehen muß. Ein anderer, von mir verwendeter Wert (::user) steht z.B. am Ende.
Was für mich interessant wäre…
Ich habe in der ersten Zeile die Felder in der Reihenfolge angegeben, die ich möchte. Gibt es ein Kürzel, mit dem ist dagen kann "zeige mir alle erfassten Schlüssel-Wert-Kombinationen an, die bei Flächen und Relationen mit protect_class=4 gefunden werden.
Stimmt! hatte bei meinen Tests wohl ein Komma oder sonstwas vergessen.
Was deine Frage anbelangt, verstehe ich dein Problem nicht so recht, über das “Daten”-Fenster einer normalen overpass-Abfrage hat Du doch alle Key-Values und dementsprechend kannst Du deine out:csv-Zeile nach Lust und Laune erweitern…
Ich würde halt gern einen Link aus der ::id generieren …
@mmd, danke, aber, ich kriege damit zwar Links hin, aber auch nur Links, s. http://overpass-turbo.eu/s/Htu
Alles andere scheint mir unter den Tisch zu fallen, mein Ziel ist aber eigentlich ein Link innerhalb anderer Spalten, also hier vor/bei ::id http://overpass-turbo.eu/s/Htr
Letztendlich kann die Verwendung von ::type dann auch als Fehlerprüfung gesehen werden, falls mal ein Objekt dabei ist, daß nicht explizit (in deinem Beispiel) als node erfasst wäre…
Das, was ich in dem Zusammenhang gelernt habe: immer overpass den Objekttyp (node, way relation) ermitteln lassen…
…und schaden würde die Verwendung für dein Beispiel sicher auch nicht…
[out:csv(cnt_nd,cnt_wy,cnt_rel,key,value)];
{{geocodeArea:Brandenburg}}->.searchArea;
(
way["boundary"="protected_area"]["protect_class"="4"]["name"](area.searchArea);
relation["boundary"="protected_area"]["protect_class"="4"]["name"](area.searchArea);
);
for->.i (keys())
{
for.i->.j(t[i.val])
{
make stat cnt_nd=count(nodes),cnt_wy=j.count(ways),cnt_rel=j.count(relations),key=i.val,value=j.val;
out;
}
}
und wenn das zu unübersichtlich ist die Zusammenfassung per Key durch
[out:csv(cnt_nd,cnt_wy,cnt_rel,key,value)];
{{geocodeArea:Brandenburg}}->.searchArea;
(
way["boundary"="protected_area"]["protect_class"="4"]["name"](area.searchArea);
relation["boundary"="protected_area"]["protect_class"="4"]["name"](area.searchArea);
);
for(keys())
{
make stat cnt_nd=count(nodes),cnt_wy=count(ways),cnt_rel=count(relations),key=_.val,value=set("{"+t[_.val]+"}");
out;
}
Der jeweils untere For-Block passt hinter so ziemlich jede Abfrage anstelle des out. Das ist auch der Grund, Nodes mitzuzählen, obwohl deren Anzahl in diesem Fall immer 0 ist.