x

Re: Overpass Abfrage (Hauptschlüssel ohne zwei Unterschlüssel)


Geschrieben von Graf Westerholt (Gast) am 02. Mai 2017 08:40:42: [flux]

Als Antwort auf: Overpass Abfrage (Hauptschlüssel ohne zwei Unterschlüssel) geschrieben von AB-inf-x-chg-AB (Gast) am 01. Mai 2017 12:10:

AB-inf-x-chg-AB wrote:

amenity=restaurant␣and␣opening_hours!=*␣and␣cuisine!=*

Das wird so ausgewertet, dass alle Anforderungen erfüllt sein müssen. Ich nenne diesen Fall mal einfacher

A␣und␣B␣und␣C

Es werden ja alle POI gefiltert, nach amenity=restaurant. Ist ein POI mit amenity=restaurant getaggt, wäre für diesen POI diese Aussage wahr. Man kann wahr auch mit 1 darstellen, entsprechend falsch mit 0. Für einen POI ohne amenity=restaurant, also z.B. amenity=cafe, wäre die Aussage falsch, amenity=restaurant trifft ja nicht zu.

Damit bei Overpass-Turbo etwas angezeigt wird, muss die Formel A und B und C zu 1 ausgewertet werden können, also A=1, B=1, C=1. Sie sind durch und verbunden, also A muss wahr sein, B muss wahr sein und C muss wahr sein. Bei einem POI, der mit amenity=restaurant und cuisine=* getaggt ist, trifft Formel C nicht zu, da die Anforderung ist, dass cuisine nicht gesetzt ist. Mit gesetzter cuisine=* wird die Aussage cuisine!=* zu 0 ausgewertet, da sie nicht zutrifft. Da C=0 ist, wird der ganze Ausdruck 0, egal was A und B sind.

Beispiel-POI:
amenity=restaurant := 1
cuisine=asia := 0
Dann ist der ganze Ausdruck 0 und der POI wird nicht angezeigt.

amenity=restaurant := 1
opening_hours=Mo-Su,PH 10:00-22:00 := 0
Dann ist der ganze Ausdruck 0 und der POI wird nicht angezeigt.

Die Reihenfolge von A, B und C ist hier egal, C und A und B bzw. B und C und A sind dazu äquivalent.

Bei

amenity=restaurant␣and␣(opening_hours!=*␣or␣cuisine!=*)

ist der Unterschied, dass man or verwendet, also A und (B or C). B or C wird dann wahr, wenn eine der beiden Aussagen wahr ist. Also wenn man statt B und C Werte (0 oder 1) verwendet, ist 0 or 0 = 0 und alle anderen Fälle 1. Das heißt, wenn entweder opening_hours oder cuisine nicht gesetzt ist, wird A oder B wahr. Wenn dann noch amenity=restaurant gesetzt ist, wird die ganze Aussage wahr.

Beispiel-POI:
amenity=restaurant := 1
cuisine=asia := 0
Da opening_hours nicht gesetzt ist, wird die Teilformel (B oder C) wahr, und dann ist A und 1 wahr. Entsprechend mit opening_hours.

https://de.wikibooks.org./wiki/Einführung_in_die_Logik:_Aussagenlogik