You are not logged in.

#1 2021-02-21 12:04:03

MichaelFS
Member
Registered: 2011-04-16
Posts: 72

Overpass: Alle aus Abfrage 1, ohne die aus Abfrage 2

Hallo,

zwei funktionierende Overpass-Abfragen sollen kombiniert werden, so dass alle aus 1, jedoch nicht die aus Abfrage 2 geliefert werden; leider verstehe ich die Syntax aus der Beispielsammlung nicht.

Abfrage 1:
[out:csv(::id,::type,::lat,::lon,emergency,name,network)];
area(1234567890)->.searchArea;
(
  nwr[~"check"~"."](area.searchArea);
);
out meta center;

Abfrage 2: 
[out:csv(::id,::type,::lat,::lon,emergency,name,network)];
area(1234567890)->.searchArea;
(
nwr ["network"="Münchner Verkehrs- und Tarifverbund"](area.searchArea);
nwr ["network"="Deutsche Bahn;Münchner Verkehrs- und Tarifverbund"](area.searchArea);
);

Kann mir bitte jemand zeigen, wie die "Subtraktion" funktioniert?
Danke, Michael

Offline

#2 2021-02-21 12:26:21

mueschel
Member
Registered: 2012-06-11
Posts: 1,095
Website

Re: Overpass: Alle aus Abfrage 1, ohne die aus Abfrage 2

Eigentlich ganz simpel, beide Abfragen in ein Set speichern, dann die Sets voneinander abziehen.

[out:csv(::id,::type,::lat,::lon,emergency,name,network)];
area[name="Hadern"]->.searchArea;
(
  nwr[~"check"~"."](area.searchArea);
)->.Abfrage1;



(
nwr ["network"="Münchner Verkehrs- und Tarifverbund"](area.searchArea);
nwr ["network"="Deutsche Bahn;Münchner Verkehrs- und Tarifverbund"](area.searchArea);
)->.Abfrage2;

(.Abfrage1; - .Abfrage2;);

out meta center;

Wenn das Beispiel deine tatsächliche Abfrage ist, kannst du das aber auch einfacher ausdrücken:

[out:csv(::id,::type,::lat,::lon,emergency,name,network)];
area[name="Hadern"]->.searchArea;
(
  nwr
     [~"check"~"."]
     ["network"!~"Münchner Verkehrs- und Tarifverbund"]
     (area.searchArea);
);
out meta center;

Hier wird direkt auf das Nicht-Vorhandensein des Network-Tags gefiltert und zusätzlich die beiden verschiedenen Network-Werte in einem regulären Ausdruck zusammengefasst (mit wahrscheinlich der selben Menge an Treffern, auch wenn der Ausdruck nicht völlig identisch ist).

Last edited by mueschel (2021-02-21 12:34:00)

Offline

#3 2021-02-21 13:06:08

MichaelFS
Member
Registered: 2011-04-16
Posts: 72

Re: Overpass: Alle aus Abfrage 1, ohne die aus Abfrage 2

Vielen Dank, so schön ausgeschrieben habe ich jetzt die Subtraktion erkannt. Funktioniert perfekt.

Danke auch für das "einfachere" Muster, das merke ich mir für "später". Im Moment bin ich froh, die erste Variante lesen, verstehen zu können und für meine komplexere Anwendung umsetzen zu können.

Offline

Board footer

Powered by FluxBB