Highway und route in bbox herunterladen nach Export in JOSM

Mein Ziel ist, dass ich mit overpass alle Wege in einem Gebiet herunterlade. Weiter, falls diese einer Relation angehören, die Relationen mitgeladen wird.

Mein Versuch

[out:json][timeout:25];
// gather results
nwr["route"="bicycle"]["highway"]({{bbox}});
// print results
out geom;

bringt eine leere Suche.

Die andere Variante

[out:json][timeout:25];
// gather results
(
  nwr["route"="bicycle"]({{bbox}});
  nwr["highway"]({{bbox}});
);
// print results
out geom;

liefert zum Beispiel bei overpass turbo highways über halb Hessen mit, wenn ich diese nach JOSM exportiere. Auf der Website werden nur die Wege in der Box heruntergeladen.

Was muss ich ändern?

Versuche es hiermit:

[out:json][timeout:25];
// gather results
nwr["route"="bicycle"]({{bbox}});
nwr["highway"](r)({{bbox}});
// print results
out geom;

Um es genauer zu erklären, was vorhin falsch lief: Beim ersteren werden alle Elemente geladen, die highway=* und zugleich route=bicycle sind, was allerdings leer sein soll, denn highway=* wird schließlich nur für Wege und route=* nur für Relation verwendet; beim Zweiten hingegen wird wiederum eine Union verwendet d.h. es werden alle Elemente, die route=bicycle oder highway=*, geladen, ganz egal ob sie zusammengehören oder nicht.

Meine Antwort wiederum macht folgendes: Lade zuerst alle Elemente aus der B-Box, die route=bicycle sind, dannach lade alle highway=*-Elemente die zum einen in der genannten B-Box liegen und davon alle, die in den geladenen Relationen liegen (das ist das (r), welche Mitglieder einer Relation hat). Mehr Informationen befinden sich bei Recurse im Wiki.

Danke. Aber das löst nicht das Problem. Unter der URL https://overpass-turbo.eu passiert das Gewünschte. Verwende ich aber die Syntax in JOSM, werden gnadenlos alle Wege der Relation heruntergeladen und nicht nur des Ladegebietes.

Also in JOSM passiert etwas anderes als unter https://overpass-turbo.eu.

Das Problem hierbei ist weniger die eigentliche Abfrage sondern was davon ausgegeben wird. Gelöst wird dies dabei mit (._;>;); vor dem out, welches dafür sorgt, dass die Knoten der Linien geladen.

Ein Problem gibt es allerdings noch: Die Abfrage gibt momentan nur die Wege zurück, nicht aber die dazu gehörigen Routen, ohne dass alle Wege der geladenen Relationen mitgeladen werden. Ich habe es selber versucht, dies zu lösen, kam dabei nicht auf eine funktionierende Abfrage.

Edit: Die Frage ist zwar schon beantworted aber dennoch schadet es nicht zur Vollständigkeit: Nach etwas experimentieren habe ich nun Herausgefunden, wie man beide Relationen miteinander Vereint und nur die Knoten der Wege hinzufügt:

rel["route"="bicycle"]({{bbox}}) -> .r;    // Speichert alle Relationen in .r
way["highway"](r.r)({{bbox}}) -> .w;       // Speichert alle Wege der Relation .r in .w

(.w; .w>; .r;);                            // Vereinigt .w, Kinder von .w und .r

out;

Ergänzend: In JOSM willst Du normalerweise vollständige OSM Daten laden, nicht JSON, also eher sowas:
[out:xml][timeout:90][bbox:{{bbox}}];
(

);
(._;>;);
out meta;