Turbo-Overpass: Hotels einer Kette mit eigenem Icon darstellen

Moin!

ich habe eine Abfrage nach Hotel und Motel erstellt und möchte für eine bestimmte Kette ein eigenes Icon zuweisen.

Das habe ich in http://overpass-turbo.eu/s/ics gemacht - wird http://overpass-turbo.eu/s/icu

In dem mitgegebenen Ausschnitt gibt es zwei Stück.

Kann mir einer sagen, was ich falsch gemacht habe?

Gruß Jan

weiß nicht genau was du meinst, aber das ibis icon geht nicht http://www.tappenbeck.net/osm/maps/icons/i_reg.png (404)

Moin!

oh, da war ein Fehler im Upload.

Jetzt berichtigt: http://overpass-turbo.eu/s/icy

Es wird aber jetzt ein “falsche” Hotel markiert und die gesuchten fehlen immer noch !

Gruß Jan

Da ist immer noch ein i_reg statt i_red. Wenn ich dann noch den Match für Ibis unter den für Hotel schiebe klappt alles.

Hi !
danke für die Hinweise.

Hier der richtige Link: http://overpass-turbo.eu/s/icM

Gruß Jan

das kommt dann von so uneindeutigen Variablen/Dateinamen :wink:

Moin!

magst ja recht haben - aber warum wird dann bei http://overpass-turbo.eu/s/id0 auch

http://www.openstreetmap.org/way/148261202
http://www.openstreetmap.org/node/553020896

mit dem roten SonderIcon gekennzeichnet?

Hat mein Ausdruck da noch einen Fehler?

Gruß Jan

Weil dein regulärer Ausdruck /ibis*./ lautet, was bedeutet, dass zunächst ein “ibi” vorkommen muss, dann beliebig viele inklusive 0 “s” (wegen “s*”) und schließlich noch ein beliebiges Zeichen (.) - wird im Falle von “IBIS” zu s, in den anderen Fällen jeweils auf den Buchstaben abgebildet, der nach der “ibi”-Zeichenfolge im jeweiligen Namen kommt.

Es reicht übrigens /ibis/ als regulärer Ausdruck aus. Denn es werden automatisch alle Matches genommen, die das irgendwo enthalten. Man muss sich also nicht darum kümmern, dass der Name-String noch länger sein könnte.

==> du hast einen Zeichendreher. Du meinst vmtl.

ibis.*

, aber (siehe Kontinentalverschieber) das .* ist auch unnötig.

und zum Tagging: ist das nicht ein Fall für brand=* oder operator=* ?

Moin!

DANKE erst einmal und werde ich morgen einbauen.

Kö nie man nicht noch Grosskleinschreibung ignorieren?

Gruß Jan

Die Groß- und Kleinschreibung wird doch beim Prüfen bereits ignoriert. /ibis/ trifft also auch “IBIS” oder “iBiS”. Umgekehrt geht es leider nicht, man kann also nicht case-sensitive matchen, weil Overpass Turbo intern automatisch für jeden regulären Ausdruck case-insensitve für das Matching setzt, ohne dass man das überschreiben kann.

Und mit /ibis/i ignoriert er Groß- und Kleinschreibung. Ich fände es allerdings schlauer, wenn ignorieren der Default wäre.

Ignorieren ist leider der Standardwert (es wird intern immer eine RegExp mit “i” als Flag erzeugt). Das lässt sich dadurch nicht aufheben und deshalb kann man nicht auf exakte Groß- und Kleinschreibung prüfen.

Darüber hinaus würdest du mit “/ibis/i” bei Overpass Turbo sogar komplett Pech haben, denn RegExp-Flags akzeptiert er nicht als Eingabe, sondern ignoriert dann den gesamten Ausdruck. Leider ist das Parsing und die Umsetzung von MapCSS in Overpass Turbo ziemlich gefrickelt, so dass das teilweise nur mit Abstrichen funktioniert.

Also
name~/ibis/i in Braunschweig findet das Hotel (name=Ibis Budget) in der Saarbrücker Straße, während
name~/ibis/ in Braunschweig es nicht findet.
=>
ohne i : Klein-/Großschreibung wird beachtet
mit i : Klein-/Großschreibung wird ignoriert

Ich bin da auch nicht zufällig drauf gestoßen, sondern habe es in Wiki am Ende des Abschnittes “Tag Searches” gefunden.

Oder habe ich etwas prinzipielles falsch verstanden?

Wir reden hier über zwei verschiedene Dinge: Es geht hier nicht darum, innerhalb der eigentliche Abfrage Tags auf reguläre Ausdrücke zu prüfen (das sind deine Beispiele). Sondern es geht hier darum, nach der eigentlichen Abfrage bei der Darstellung verschiedene Objekte auf der Ergebniskarte verschieden darzustellen. Dazu kann man zusätzlich eine Style-Beschreibung in Form von MapCSS hinzufügen, an Hand der dann im Beispiel von Benutzer Lübeck einzelnen Hotels verschiedene Icons auf der Karte zugeordnet werden. Auch dafür kann man reguläre Ausdrücke verwenden - dabei gelten aber die Beschränkungen bei der Auswertung von MapCSS durch Overpass Turbo.

Danke für die Erläuterung.

Moin!

ich muss meine Abfrage nochmal erweitern und hänge das an dieses Posting an. Vorerst habe ich die Icons im Style wieder entfernt.

Mein Problem ist - warum wird das “M… One” (sorry für die Schleichwerbung) in Wiesbaden nicht gefunden - obwohl oben rechts im Abfragebereich.

http://overpass-turbo.eu/s/ikT

Kann mir einer weiterhelfen?

Geht das vielleicht auch noch kompakter und einfacher zu schreiben als das was ich jetzt für zwei Ketten gemacht habe?

Gruß Jan

Die XML Variante finde ich einigermaßen gruselig wortreich, daher mal alternativ in Overpass QL und mit case-insensitive. Damit entfällt die umständliche Angabe von Groß/Kleinbuchstabe ([Mm][Oo]…) auch:


[bbox:{{bbox}}];
(
  node  ["tourism"="hotel"]["name"~"^ibis",i];
  way   ["tourism"="hotel"]["name"~"^ibis",i];
  node  ["tourism"="motel"]["name"~"^ibis",i];
  way   ["tourism"="motel"]["name"~"^ibis",i];
  node  ["tourism"="hotel"]["name"~"^motel one",i];
  way   ["tourism"="hotel"]["name"~"^motel one",i];
  node  ["tourism"="motel"]["name"~"^motel one",i];
  way   ["tourism"="motel"]["name"~"^motel one",i];
);
out meta center;

noch kompakter:


[bbox:{{bbox}}];
(
  node ["tourism"~"^(hotel|motel)$"]["name"~"^(ibis|motel one)",i];
  way  ["tourism"~"^(hotel|motel)$"]["name"~"^(ibis|motel one)",i];
);
out meta center;

<has-kv k="name" regv="^[Mm][Oo][Tt][Ee][Ll] [Oo]Nn][Ee]"/>

Da fehlt mindestens ein “[” vor dem “Nn”

Moin!

danke erst einmal - das von mmd kann ich aber nicht in die Turbo Overpass übernehmen oder?

Gruß Jan