x

Overpass - alle Etap-Hotels finden


  1. Overpass - alle Etap-Hotels finden · Lübeck (Gast) · 24.08.2021 07:05 · [flux]

    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


    • Re: Overpass - alle Etap-Hotels finden · the-asca (Gast) · 24.08.2021 08:20 · [flux]

      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


    • Re: Overpass - alle Etap-Hotels finden · mmd (Gast) · 24.08.2021 08:34 · [flux]

      the-asca wrote:

      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.


    • Re: Overpass - alle Etap-Hotels finden · the-asca (Gast) · 24.08.2021 09:40 · [flux]

      mmd wrote:

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

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

      mmd wrote:

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

      • 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.


    • Re: Overpass - alle Etap-Hotels finden · mmd (Gast) · 24.08.2021 16:30 · [flux]

      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"]({{bbox}});
      nwr._["name"~"^(ibis|etap)", i];
      out geom center;


    • Re: Overpass - alle Etap-Hotels finden · mmd (Gast) · 29.08.2021 11:08 · [flux]

      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