Overpass turbo Frage

Ich möchte eine Abfrage mit overpass turbo erstellen die nach einem bestimmten cuisine Wert sucht, nun ist es natürlich so das unter cuisine häufig mehrere Werte eingetragen sind. Wie bringe ich overpass turbo dazu nur nach meinem gewünschten Wert zu suchen obwohl weitere Werte angegeben sind?

~ 

statt

=

verwenden?

also “cuisine”~“Suchwert”

Perfect Danke :folded_hands:

1 Like

… und dabei bitte beachten, dass “Suchwert” hier keinen einfachen String sondern ein Muster (pattern) im Sinne eines regulären Ausdrucks bedeutet. Dabei bekommen Sonderzeichen z.B. ( . + * ] [ ? | ) etc. eine spezielle Funktion, die man für erweiterte Suchen nützen kann:

Zum Beispiel sucht "cousine"~"Anna|Berta" nach beiden Schwestern :wink:
und "operator"~"Salzl(ä|ae)nder" findet sowohl Salzländer als auch Salzlaender.

2 Likes

@stephan_t danke für die Ergänzungen, so fit bin ich dann auch nicht mit overpass turbo. Kannte nur das ~ weil ich das selber öfters verwende.

Ich meine es gab auch etwas, um die Suche auf exakt das Suchwort einzugrenzen. Also wenn ich nach pizza suche und wirklich nur pizza haben will und keine pizzaburger oder pizzabroetchen (mir fiel grad kein besseres Beispiel ein).

Edit diverse Tippfehler

Use “^pizza$”

1 Like

Das funktioniert nicht, wenn der Eintrag “spaghetti;pizza;lasagne” lautet, aber genau das wurde ja gesucht.

Das ist äquivalent zur Ausgangsfrage “cuisine”=“Suchwert”
Nehmen wir mal als Beispiel: Wir möchten alles was "checkpoint"~"cycling" enthält, aber ohne recycling:

nwr({{bbox}})["checkpoint"~"(^|;)cycling($|;)"];

Damit erwischen wir:
checkpoint = hiking;cycling;recreation
checkpoint = cycling;hiking
checkpoint = hiking;cycling
und
checkpoint = cycling

3 Likes

Es gibt dafür als Feature:

["cuisine"](if:lrs_in("pizza",t["cuisine"]))

Das sucht nach allen Vorkommen mit Key cuisine, bei denen der Wert pizza ein Eintrag in der Liste semikolongetrennter Werte in t["cuisine"] ist. Dokumentation

4 Likes