opening_hours,
service_times,
collection_times.
Manche Objekte der realen Welt haben auch eine Zeitkomponente:
- Geschäfte und Einrichtungen sind nur zu bestimmten Zeiten geöffnet,
- Fähren fahren nur zu bestimmten Zeiten,
- Straßen sind des Nachts geschwindigkeitsbegrenzt,
- Briefkästen werden zu bestimmten Zeiten geleert,
- Busse fahren zu bestimmten Zeiten ab.
In der Datenbank von OpenStreetMap werden solche Öffnungszeichen unter den Schlüsseln
,
opening_hours
und service_times
eingetragen. Das Wiki enthält unter collection_times
eine informelle Beschreibung der erlaubten Werte und ihrer Bedeutung.
Sie können eine
Textdatei mit 15.000 Beispielwerten
herunterladen.
opening_hours
Ich habe aus dieser Beschreibung eine
formale Spezifikation
erstellt (alte Versionen
Dez. 2010
und
Jan. 2011)
und diese
in JavaScript implementiert.
Sie können das Auswerten ohne Aufwand ausprobieren und sich so mit den Möglichkeiten vertraut
machen:
Auf drei Karten werden die bereits vergebenen Werte angezeigt und insbesonders auf Fehler überprüft:
- Karte: opening_hours (nur Fehler, nur Ways, nur Relations, nur offen)
- Karte: collection_times (nur Fehler, nur Ways, nur Relations, mit Termin heute, mit Terminen in dieser Woche)
- Karte: service_times (nur Fehler, nur Ways, nur Relations, mit Termin heute, mit Terminen in dieser Woche)
Achtung: der Server liefert eine limitierte Zahl von Ergebnissen, gefiltert wird aber nach der Limitierung im Browser. Deshalb ist es leider auch bei Fehler-Filterung erforderlich, in die Karte hinein zu zoomen.
Ich habe OSM-Objekte in DE, die Öffungszeiten haben (oder haben sollten), zum Herunterladen bereitgestellt:
- Objekte mit Regionalzuordung bis Admin-Level 8;
- Regionalstatistik für Admin-Level 2 bis 8;
- Objekte mit Regionalzuordung bis Admin-Level 12;
- Regionalstatistik für Admin-Level 2 bis 12.
Diese Listen wurden täglich aktualisiert.
Änderungen und Erweiterungen
Auf der Karte werden Objekte mit fehlerhaften Werten rot markiert. Ich habe eine große Zahl davon korrigiert und mir dabei einen Überblick darüber verschafft, welche Informationen die Nutzer in diesem Feld hinterlegen und wie. Daraus habe ich einige Erweiterungen abgeleitet:
- Kooperative Angaben
-
Sehr oft wurden zusätzliche Öffnungszeiten so codiert, dass sie als ausschließliche Öffnungszeiten interpretiert wurden: beim Wert
ist Mittwochs nur nachmittags geöffnet.Mo-Fr 08:00-12:00; We 14:00-18:00
Ich lasse die Wiederholung auch mit
,
zu und interpretiere das Komma alsund außerdem
:
drückt das aus, was der Eingebende gemeint hat.Mo-Fr 08:00-12:00, We 14:00-18:00
- Zeitangabe obligatorisch
-
In der Originalspezifikation stand
fürMo-Fr
Montags bis Freitags ganztägig
. Das ist aber nur in den seltensten Fällen gemeint. Deshalb haben wir die Zeitangaben obligatorisch gemacht:
ist nicht mehr erlaubt und mussMo-Fr
geschrieben werden.Mo-Fr 0:00-24:00
- Tageswraps
-
In der Realität tauchen häufig Zeitangaben wie
auf, die sich über zwei Tage erstrecken. Ich habe diese22:00-03:00
Tageswraps
implementiert. - Kalenderzeiträume
-
Kalenderzeiträume müssen mit einem
:
abgeschlossen werden. Dies verhindert nur schwer aufzulösende Mehrdeutigkeiten. - Informelle Angaben
-
Öffnungszeiten können von Bedingungen abhängen, die nicht automatisch auswertbar sind.
Nehmen wir
Montags bis Freitags 12 bis 18 Uhr, bei schlechtem Wetter nur bis 14 Uhr
bei einem Schwimmbad. Zur Darstellung solcher Angaben habe ich nebenoffen
undgeschlossen
einen dritten Statusunbekannt
eingeführt, der mit einem Kommentar versehen werden muss.
Außerdem können informelle Tagesangaben wiewährend der Spargelsaison
dargestellt werden. - Fehlertoleranz
-
Einige Fehler sind sehr häufig: nicht englisch abgekürzt geschriebene Wochentage und
Monatsname, fehlende Kommata, Uhrzeiten mit
.
statt:
. Diese Fehler korrigiere ich und werte den Ausdruck aus, liefere aber das Ergebnis zusammen mit einer Fehlermeldung. Die Auswerteroutine kann also gleichzeitigoffen
undAusdruck fehlerhaft
melden. In meinen Karten wird das durch zweifarbige Ringe abgebildet.
Offene Punkte
- Holidays (
PH
undSH
) -
Ferien und Urlaubszeiten sind regional unterschiedlich geregelt. Ich brauche
Zusatzinformationen, um die passenden Regeln zu bestimmen, zum Beispiel in der Form
SH(de.nrw)
für die Schulferien in Nordrhein-Westfalen. Zur Zeit setze ich fürPH
die deutschen gesetzlichen Feiertage ein, und SchulferienSH
gibt es keine. - Helligkeitsbezogene Zeitangaben (
sunrise
undsunset
) -
Diese Zeiten lassen sich aus Datum und Positionsangabe berechnen.
Ich war aber zu faul, die
Regeln
nach JavaScript zu portieren. Das wird nachgeholt, sobald ich einmal hinreichend große
Langeweile habe – oder wenn jemand danach fragt. Zur Zeit setze ich
06:00
bzw.18:00
ein. - Dokumentation
- Ich habe eine Erklärung in halbwegs verständlicher Sprache begonnen, bitte aber darum, dass jemand diese Aufgabe übernimmt. Ich stecke zu tief in den Interna der Auswertung und kann nicht mehr unvoreingenommen die Sicht des Nutzers einnehmen.