OpenStreetMap

Wie gut sind die Öffnungszeiten in meinem "Revier" erfasst?

Posted by Nakaner on 14 February 2014 in German (Deutsch)

Viele Mapper sind bestrebt die nähere Umgebung um das eigene Heim, möglichst gut zu erfassen. Auch ich bin so. Doch einer Frage wollte ich auf den Grund gehen: Wie gut sind die Öffnungszeiten erfasst?

Öffnungszeiten sind etwas, was man mal so nebenbei erfassen kann. Wenn man irgendwo hin laufen oder Rad fahren möchte, kann man, ausreichend Zeit vorausgesetzt, Zwischenstops einlegen und dabei die Öffnungszeiten von Ladengeschäften und Gastronomiebetrieben erfassen.

Ich habe mich jetzt mal eine Stunde hingesetzt und mich intensiver mit der Overpass-API und den MapCSS-Fähigkeiten des Overpass-Turbo auseinander gesetzt. Möchte man für einen kleineren Bereich die Öffnungszeiten-Abdeckung grafisch darstellen, so genügt folgender Code:

<osm-script>
    <union>
        <query type="node">
            <has-kv k="shop"/>  <bbox-query {{bbox}}/>
        </query>
        <query type="way">
            <has-kv k="shop"/>  <bbox-query {{bbox}}/>
        </query>
        <query type="node">
            <has-kv k="amenity" regv="^(restaurant|pub|bar|fast_food|food_court|ice_cream|cafe)$"/>  <bbox-query {{bbox}}/>
        </query>
        <query type="way">
            <has-kv k="amenity" regv="^(restaurant|pub|bar|fast_food|food_court|ice_cream|cafe)$"/>  <bbox-query {{bbox}}/>
        </query>
        <recurse type="way-node" />
    </union>
    <print/>
</osm-script>

{{style:

    node[opening_hours!=.],way[opening_hours!=.]
        { color:red; fill-color:red }

    node[opening_hours],way[opening_hours]
        { color:blue; fill-color:blue; }

}}

Beispiel-Abfrage aus Karlsruhe

Hat ein POI Öffnungszeiten, ist er blau, andernfalls rot. Ob die Öffnungszeiten-Syntax eingehalten wurde, wird nicht geprüft.

Der obere Teil der Abfrage (osm-script) fragt die Objekte von der Overpass-API ab, der untere Teil rendert sie entsprechend.

Dieser Blogpost basiert auf einem Blogpost von tyr_asd.

EDIT: Overpass-Abfrage korrigiert und Link auf korrgierte Abfrage eingefügt.

Comment from zarl on 4 December 2015 at 09:26

Hi Nakaner,

könnte man denn mit Hilfe von overpass-turbo auch das Datum des changesets abfragen, also wie alt (wann zuletzt geändert) ein node bzw. way ist, der opening_hours enthält? Nicht überall bei Geschäften, Lokalen etc. wird ja last_checked oder ähnliches eingetragen, da wäre also zum Jahreswechsel eine Abfrage super, die im Zielgebiet diejenigen nodes/ways anzeigt, deren Öffnungszeiten älter als z.B. zwei oder drei Jahre sind.

Hier habe ich zumindest mal etwas entsprechendes gefunden, was auf last_checked aufbaut.

So für den gut geplanten Winterspaziergang beim Heimaturlaub... :-)

Hide this comment

Comment from Nakaner on 4 December 2015 at 09:48

Hallo zarl,

mittlerweile verwende ich Overpass QL statt Overpass XML für meine Abfragen. Hier mal die obige Abfrage in Overpass QL:

[out:json][timeout:25];
(
  node["shop"]({{bbox}});
  way["shop"]({{bbox}});
  relation["shop"]({{bbox}});
  node[amenity~"^(restaurant|pub|bar|fast_food|food_court|ice_cream|cafe)$"]({{bbox}});
  way[amenity~"^(restaurant|pub|bar|fast_food|food_court|ice_cream|cafe)$"]({{bbox}});
  relation[amenity~"^(restaurant|pub|bar|fast_food|food_court|ice_cream|cafe)$"]({{bbox}});
);
out body;
>;
out skel qt;
{{style:
    node[opening_hours!=.],way[opening_hours!=.]
        { color:red; fill-color:red }

    node[opening_hours],way[opening_hours]
        { color:blue; fill-color:blue; }
}}

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

Wenn du noch das Datum der letzten Änderung abfragen willst, musst du vor dem ({{bbox}}) noch ein (changed:"2012-09-14T07:00:00Z") einfügen. Siehe dazu auch die Doku im Wiki.

Hide this comment

Leave a comment

Parsed with Markdown

  • Headings

    # Heading
    ## Subheading

  • Unordered list

    * First item
    * Second item

  • Ordered list

    1. First item
    2. Second item

  • Link

    [Text](URL)
  • Image

    ![Alt text](URL)

Login to leave a comment