Overpass - alle Etap-Hotels finden

Moin!

für eine längere Reise möchte ich alle IBIS-Budget Hotels (ehemals ETAP) finden.

Schon mit

{{key1=tourism}}
{{value1=hotel}}

 <osm-script output="json">
  <union>
    <query type="node">
      <has-kv k="{{key1}}" v="{{value1}}"/>
      <has-kv k="name" v="IBIS Budget"/>
      <bbox-query {{bbox}}/>
    </query>
    
   </union>
   <print geometry="center"/>
</osm-script>

komme ich irgendwie nicht weiter, weil die Namen bekanntlich auch immer unterschiedlch geschrieben werden in der DB.

Mögliche Beispiele wären

  • ETAP
  • Etap
  • IBIS-Budget
  • IBIS-BUDGET

Hat einer eine Idee, wie man das am besten umsetzen könnte?

Gruß Jan

Mit Regex kannst halt auch case-insensitive suchen (also Groß-/Kleinschreibung missachtend):


[out:json][timeout:300];
(
  nwr["tourism"="hotel"]["name"~"^(ibis|etap)", i]({{bbox}});
  nwr["brand"="Ibis"]({{bbox}});
  nwr["operator"="Accor"]({{bbox}});
);
out geom center;


Zudem mal noch ergänzt alles was brand=Ibis oder operator=Accor hat. In dem Beispiel muss es also entweder eines davon haben oder halt tourism=hotel sein und mit “ibis” oder “etap” im Namen beginnen.

Wenn du es als XML-osm-script haben willst, kannst es hier konvertieren: http://overpass-api.de/convert_form.html

Keine gute Idee. Dieses Script kennt die overpass turbo Erweiterung {{bbox}} nicht und verwandelt die Query in eine globale Query ohne irgendwelche Einschränkungen!

Besser: overpass turbo → Export → Abfrage → Nach Overpass-XML konvertieren

Noch besser: Overpass XML am besten gedanklich streichen und stattdessen nur noch die QL Variante nutzen.

Ey ich hatte das genau unter Export auch gesucht, weil ich im Kopf hatte, dass es da irgendwo war, aber war einfach dabei blind :expressionless:

zustimm

Wo du grad da bist, irgendwie kommt mir overpass-api.de heute extrem langsam bezüglich der Regex vor. Also Regex ist nie flott, klar, aber das performt heute irgendwie extrem schlecht nach meinem Gefühl. Müsste [“tourism”=“hotel”] nicht eh erstmal schon die Ergebnismenge extrem einschränken? Fühlt sich so an als würde Overpass erst [“name”~“^(ibis|etap)”, i] über alles in der bbox machen und dann schauen ob’s ein Hotel ist. Deshalb auch das hohe Timeout.

Ich denke, da kommen ein paar Sachen zusammen. Wenn die bbox zu groß wird, erfolgt irgendwann der Übergang zu den Tags auf globaler Ebene, was im Fall von “name” mit den fast 85 Mio. Objekten etwas länger dauert. Dazu Instanzen, die CPU-mässig eher bei 100% sind.

Man kann den "name-Teil natürlich auch separat abfragen, was etwas flotter ist. Den großen Durchbruch bringt das natürlich nicht.

[out:json][timeout:300];
nwr"tourism"=“hotel”;
nwr._[“name”~“^(ibis|etap)”, i];
out geom center;

Was ich noch erwähnen wollte: mit dem richtigen Backend lässt sich so eine Query natürlich auch global ausführen, ohne dass das allzu lange dauert: https://overpass-turbo.eu/s/1aIb