## HOWTO - Daten in BBBike editieren

### Slaven Rezić

`<slaven@rezic.de>`

Copyright © 2005, 2006 Slaven Rezić

2009-04-04

## 1. Voraussetzungen

### 1.1. Zeit

Das Editieren der BBBike-Daten erfordert Zeit. Um "nur mal schnell" die Berliner oder Brandenburger Daten zu ergänzen, kann eine der unten aufgeführten Alternativen zum Editieren oder die Anweisung zum schnelle Editieren verwendet werden.

### 1.2. Betriebssystem

Zum Editieren ist ein POSIX-kompatibles System, also Linux oder Unix, empfehlenswert. Das Programm git wird für die Versionskontrolle verwendet und muss ggfs. nachinstalliert werden.

Bei Windows könnte es helfen, wenn cygwin installiert ist (die Basis-Installation von cygwin zusammen mit git dürfte ausreichen). Die Umgebungsvariable `PATH` sollte um den bin-Pfad von cygwin ergänzt werden (üblicherweise `C:\cygwin\bin`), falls das nicht automatisch bei der cygwin-Installation gemacht wird. Zusätzlich wird für die Versionskontrolle git benötigt. Die Windows-Version von git kann man hier downloaden.

### 1.3. git

Ein git-Clone von BBBike ist notwendig, um die neuesten Daten sowie die aktuellsten Entwicklungstools zu erhalten. Eine Anleitung für das Durchführen eines git-Clone befindet sich unter Entwicklung im README. Windows-Benutzer sollten das Verzeichnis mit dem git-Clone an die Stelle des originalen BBBike-Programmverzeichnisses verschieben, also üblicherweise `C:\Programme\BBBike\bbbike\`.

## 2. BBBike starten

BBBike sollte mit der Option `-advanced` gestartet werden entweder in der Kommandozeile angeben oder in den Option unter "Advanced" den Knopf "advanced" anklicken. Nach dem Ändern der Option ist ein Neustart erforderlich. Mit der Option `-advanced` erhält man u.a. neue Menüs, die bei der Datenerfassung helfen.

## 3. Editiermodus

Einschalten des EDIT-Modus durch Klick auf den EDIT-Button unten rechts. Die Layer werden neu geladen und es werden zusätzlich die Kreuzungs- und Kurvenpunkte angezeigt.

Alternativ kann der EDIT-Modus beim Starten von BBBike mit der Option `-edit` eingeschaltet werden. Nützlich ist auch die Option `-edittools`, womit einige Editierhilfen automatisch geöffnet werden.

## 4. Straßen-Editor

Mit Klick auf das Menü Bearbeiten → Straßen-Editor wird ein Fenster mit einigen Editieroption geöffnet.

### 4.1. Neue Straßen hinzufügen

Durch Klicken auf die Karte kann ein Straßenzug zusammengestellt werden. Für nicht bestehende Punkte muss man gleichzeitig die Shift-Taste gedrückt halten. Bei bereits bestehenden Punkten (also Kreuzungspunkten) darf die Shift-Taste nicht verwendet werden. Kreuzt eine neue Straße eine bestehende Straße, ohne dass bereits ein Kreuzungspunkt existiert, muss zuerst ein neuer Kurvenpunkt im bestehenden Straßenzug erzeugt werden (siehe Punkt einfügen). Falls es sich bei der Kreuzung um eine Brücke handelt, darf kein gemeinsamer Punkt erzeugt werden. Stattdessen sollte ein informeller Eintrag in der Datei `brunnels` erzeugt werden.

Nachdem die neue Straße zusammengestellt wurde, muss sie per Add new to: zu einer Datei, normalerweise `strassen` (in Berlin), `landstrassen` (im näheren Umland von Berlin) oder `landstrassen2` (im entfernteren Umland von Berlin und außerhalb von Brandenburg) hinzugefügt werden. Im nachfolgenden Dialog wird der Straßenname und die Kategorie eingetragen, die Koordinaten des Straßenzugs sind bereits eingetragen.

#### 4.1.1. Regeln bei Straßennamen

In Berlin (`strassen`) werden nur "offizielle" Straßennamen verwendet. Offizielle Straßennamen sind in der Datei `Berlin.coords.data` aufgelistet.

Es kann aber durchaus sein, dass in dieser Datei Straßen fehlen. In diesem Fall muss die Straße mit Bezirks-/Ortsteilsname (nicht die neuen Superbezirksnamen verwenden!), Postleitzahl und einem exemplarischen Punkt eingetragen werden. "...straße" wird immer als "...str." abgekürzt. Straßen, die durch mehrere Ortsteile und/oder Postleitzahlgebiete führen, müssen dementsprechend viele Einträge erhalten.

Wenn eine Straße in mehreren Bezirken vorhanden ist, muß der Bezirk im Klammern dahinter stehen. Beispiele:

        Methfesselstr.
        Kurfürstenstr. (Schöneberg)
        Heerstr. (Spandau, Charlottenburg)

Wenn es sich innerhalb Berlins um eine "inoffizielle" Straße handelt, muss die Straße in Klammern gesetzt werden. Das können Wege in Parks sein oder namenslose Verbindungen. Beispiele:

        (Parkweg im Volkspark Friedrichshain)
        (zur Eisenbahnbrücke)

Bei Verbindungsbezeichnungen sollte ein Bindestrich verwendet werden und die beiden Punkte in der richtigen Reihenfolge (genau wie der Straßenzug erzeugt wurde) angegeben werden. Beispiel:

        (Bahndamm - Elsenstr.)

Ob die richtige Reihenfolge gewählt wurde, kann später beim Routing überprüft werden. Je nach Richtung sollte in der Routenliste

        (Elsenstr. -) Bahndamm
        (Bahndamm -) Elsenstr.

erscheinen.

In den Landstraßendateien (`landstrassen` und `landstrassen2`) sollten die Straßennamen möglichst so gewählt werden, dass sie in der Realität bestehenden Wegweisern entsprechen. Ist das nicht bekannt, nimmt man die benachbarten Orte. Eine Straßennummerierung wird vorangestellt oder in Klammern angefügt. Zurzeit werden nur Bundesstraßen bei der Straßennummerierung verwendet. Beispiele:

        B1: Potsdam - Brandenburg
        Müncheberg - Prötzel (B168)
        Prenzlau - Penkun
                ^ ^ Hier muss immer ein Leerzeichen stehen!
        Strausberg-Nord - Altlandsberg
                  ^ Bei zusammengesetzten Ortsnamen darf kein
                    Leerzeichen stehen!

Nach dem Einfügen der Straße ist diese nicht sofort sichtbar, sondern die Straße muss mit Reload neu geladen werden.

### Warnung

Manchmal funktioniert Reload nicht, dann muss der Layer aus- und wieder eingeschaltet werden.

### Tipp

Um das Laden zu beschleunigen kann im Menü Bearbeiten → Lazy drawing verwendet werden.

### Warnung

Lazy drawing führt zu einem Speicherleck, der zu einem stetigen Speicherzuwachs in BBBike führt.

### 4.2. Attribute zu einer Straße hinzufügen

Nach dem Reload ist die neue Straße sichtbar. Man kann sich wieder den Straßenzug zusammenklicken (den ganzen Teil oder nur einen Teil davon) und diesen Straßenzug mit Add to new zu einer Attributdatei hinzufügen. Hier muss darauf geachtet werden, dass alle Punkte auf bestehenden Kurvenpunkten liegen (Shift-Maustaste ist hier verboten) und dass kein Punkt vergessen oder doppelte angeklickt wurden.[1]

Mögliche Attribute sind Fahrbahnqualität (`qualitaet_s` für Berliner, `qualitaet_l` für Nicht-Berliner Straßen), sonstige Beeinträchtigungen (`handicap_s` für Berliner, `handicap_l` für Nicht-Berliner Straßen), Radwege (`radwege` für Berlin, `comments_cyclepath` außerhalb Berlins) usw. Eine Liste der Attributierungsdateien befindet sich in der Dokumentation zum bbd-Format. Hier sind auch die verwendeten Kategorien beschrieben.

### 4.3. Die orig-Dateien konvertieren

Die im Edit-Modus bearbeiteten Dateien sind die Dateien im Verzeichnis `data` mit der Endung `-orig`. BBBike im Normalmodus verwendet die Dateien ohne die Endung `-orig`. Die Konvertierung wird vom `Makefile` im Verzeichnis `data` vorgenommen. Das `Makefile` funktioniert nur mit einem modernen BSD-make. Alle Nicht-BSD-Systeme (auch Linux) benötigen dieses make, dass bei Sourceforge als pmake im Quellcode erhältlich ist. Debian-Benutzer können das Kommando bmake (seit Debian/jessie) (alternativ, falls verfügbar, freebsd-make oder fmake oder pmake). Ein Windows-Binary existiert noch nicht.

Mit make im `data`-Verzeichnis wird eine Konvertierung vorgenommen und, wichtiger, eine Reihe von Konsistenzchecks durchgeführt. So müssen beispielsweise alle Straßen in `strassen` auch in `Berlin.coords.data` aufgeführt sein (siehe auch oben), `Berlin.coords.data` muss sortiert sein, alle Ampeln müssen sich auf Kurvenpunkten existieren, alle Attributedaten müssen auf bestehenden Straßenzügen liegen usw.

### 4.4. Punkt hinzufügen

Im Straßen-Editor gibt es zwei Möglichkeiten zum Einfügen eines Punktes in eine bestehende Seite.

Mit Insert point kann mit einem einfachen Mausklick auf eine Straße an dieser Stelle ein Punkt ausgewählt werden. Danach erscheint ein Dialog, wo man das Einfügen bestätigt, unter Umständen per Checkbox nur für bestimmte Layer. Nach dem Bestätigen kann per Reload der neue Punkt sichtbar gemacht werden. Achtung! Beim Bestätigen sollte man den angezeigten Straßennamen überprüfen. Stimmt dieser nicht überein, so muss das Hinzufügen des Punktes abgebrochen werden, und der Straßen-Layer aus- und wieder eingeschaltet werden (bekannter Bug in BBBike). Insert point ist ein Modus, der ein- und ausgeschaltet werden muss.

Mit Insert multiple points können mehrere Punkte zwischen zwei benachbarten Kurvenpunkten eingefügt werden. Dazu klickt man zuerst den ersten Kurvenpunkt an (ohne Shift), dann die einzufügenden Punkte (mit Shift) und schließlich den zweiten Kurvenpunkt an. Jetzt wählt man Insert multiple points aus. Ein Dialog erscheint, wo man das Einfügen bestätigen muss und kann dann auf Reload drücken. Der bei der ersten Methode erwähnte Bug tritt hier nicht auf.

### 4.5. Punkt verschieben

Mit Move points kann ein Punkt verschoben werden. Das wird man z.B. machen, wenn man anhand eines GPS-Tracks feststellt, dass eine Straße verschoben ist. Zum Verschieben klickt man zuerst den zu verschiebenden Punkt an (ohne Shift) und dann das Ziel (mit oder ohne Shift, je nachdem, ob das Ziel ein existierender Kurvenpunkt ist), und schließlich Move points. Der Dialog mit den betreffenden Layern wird angezeigt und kann bestätigt werden. Achtung: einige Punkte sollten nur bei genauer vorheriger Überprüfung verschoben werden. Dazu zählen Endpunkte (im Dialog mit "endpoint" markiert), Höhenpunkte, Ampeln u.ä.

### 4.6. Linie verschieben

Eine bestehende Linie zwischen zwei Punkten kann verschoben werden. Man benutzt diese Funktion anstelle von Move point, wenn einer der Punkte bereits für eine andere Straße an der richtigen Stelle steht. Arbeitsweise: die beiden benachbarten Punkte der zu verschiebenden Strecke mit Klick markieren (ohne Shift), wobei der zweite Punkt der zu verschiebende ist. Dann wird der Zielpunkt mit Klick ausgewählt (meistens mit Shift). Move line auswählen, Dialog bestätigen und evtl. ein Reload durchführen.

### 4.7. Punkt suchen

Mit Grep point kann nachgeschaut werden, in welchen Layern ein Punkt vorkommt. Die Vorgehensweise ist: Punkt per Klick markieren und dann auf Grep point klicken.

### 4.8. Linie suchen

Mit Grep line kann nachgeschaut werden, in welchen Layern eine Linie mit zwei benachbarten Punkten vorkommt. Die Vorgehensweise ist: zwei Punkte per Klick markieren und dann auf Grep line klicken.

### 4.9. Punkt löschen

Dieser Punkt muss noch mehr als "Einen Punkt bewegen" mit Vorsicht behandelt werden. Auch hier gilt, dass Höhenpunkte und Ampeln normalerweise nicht gelöscht werden sollen. Bei Strecken muss darauf geachtet werden, dass mindestens zwei Punkte in der Strecke übrig bleiben.

### 4.10. Koordinatenliste anzeigen

Eine Koordinatenliste (kann auch aus einem einzelnen Punkt bestehen) markieren und mit "Copy" im jeweiligen Programm auswählen (Unix-Benutzer müssen in der Regel nur markieren). In BBBike den Menüpunkt Bearbeiten → Linienkoordinaten anzeigen auswählen. Nach Klick auf dem Button wird der Kartenausschnitt verschoben und die Punkte der Koordinatenliste blinken auf. Mit der Option Ständige Markierungen bleibt die Markierung ständig bestehen, ansonsten verschwindet sie nach wenigen Sekunden.

## 5. Veröffentlichen der Ergänzungen

Bei der Verwendung des Straßen-Editors wird eine Logdatei in `data/datachange.log` geschrieben. Diese Datei sollte an den Maintainer der BBBike-Stammdaten geschickt werden. In der Datei ist auch jeweils ein Zeitstempel pro Tag enthalten; es reicht aus, wenn nur die neuesten Änderungen abgeschickt werden. Zugleich sollte ein diff geschickt werden. Dieses wird mit `git diff -u data > data.patch` aus dem ausgecheckten BBBike-Verzeichnis heraus gemacht. Die diff-Datei namens `data.patch` sollte dann ebenfalls an den Maintainer geschickt werden.

## 6. Nach dem Veröffentlichen

Es ist empfehlenswert, das Verzeichnis `data` nach dem Veröffentlichen umzubenennen (oder zu löschen) und das alte Verzeichnis mit `git checkout -- data` wiederherzustellen. Der Grund sind mögliche Konflikte, die auftreten können, nachdem der Maintainer die editierten Daten in das Haupt-git-Repository eingepflegt hat.

## 7. Erfassen anhand eines GPS-Tracks

GPS-Tracks können entweder als zusätzlicher Straßen-Layer oder (bevorzugt für Tracks im gpsman-Format) über den Menüpunkt Kartenebenen → Zusätzliche Kartenebenen → Gpsman-Daten zeichnen dargestellt werden. Im letzteren Fall sollten sich die GPS-Tracks im Verzeichnis `bbbike/misc/gps_data/` im Dateinamenformat `YYYYMMDD.trk` für Tracks und `YYYYMMDD.wpt` für Waypoints befinden.

Straßen müssen manuell eingetragen werden (siehe Neue Straßen hinzufügen). Man darf GPS-Tracks nicht 100%ig trauen, da bei schlechten Sichtverhältnissen zu den Satelliten (Straßenschluchten, im Wald) oder Reflexionen von Hochhäusern verfälschte Punkte auftreten können.

Bei dargestellten Gpsman-Tracks wird die jeweilige Geschwindigkeit farblich kodiert (der Farbverlauf kann vor dem Zeichnen nach Belieben eingestellt werden). Das kann helfen, um z.B. schlechte Wegabschnitte nachträglich zu identifizieren. Genauer ist es meist, wenn man zusätzlich zum Track auch die zugehörigen Waypoints zeichnen lässt. Während der Radtouren setzt man dann an "interessanten" Stellen, z.B. bei Qualitätsänderungen (Asphalt - Kopfsteinpflaster) einen Waypoint.

Steigungen können nur bei GPS-Geräten mit barometrischen Höhenmesser einigermaßen zuverlässig bestimmt werden. Obwohl GPS-Geräte absolute Höhenangaben erzeugen, sollten diese nicht verwendet werden, weil dazu die Geräte höhenkalibriert sein müssen. Stattdessen kann man die relative Höhenänderung in eine Prozentangabe übersetzen und in die Datei `comments_mount` eintragen.

## 8. Ein Exkurs über die verwendeten Layer und Attribute

Grundsätzlich ist die Lektüre der Dokumentation des bbd-Formats (leider nur englisch) empfehlenswert.

### 8.1. Plätze

Plätze, die einen eigenständigen Straßenzug beschreiben, sollten in `strassen` eingetragen werden. Plätze, die nur mit einem Punkt beschrieben werden, sollten in `plaetze` eingetragen werden. Plätze, die sich auf einem bestehenden Straßenzug befinden, sollten ebenso nach `plaetze`. Wenn ein Platz in `plaetze` eingetragen wurde, dann müssen sich alle Punkte des Platzes auf einer bestehenden Straße befinden.

### 8.2. Qualität

Fahrbahnbeschaffenheit wie Asphalt, Kopfsteinpflaster, Waldweg usw. Kombinationen sind im Beschreibungsteil möglich, z.B. "schlechtes Kopfsteinpflaster mit Sandbanketten" oder "schlechte sandige Straße, Ausweichen auf Gehweg möglich". In der Regel sollte man die schlechtere Kategorie für solchen Fälle wählen.

Dateinamen: `qualitaet_s` und `qualitaet_l`

### 8.3. sonstige Beeinträchtigungen

Manchmal auch als "sonstige Behinderungen" oder "handicap" bezeichnet. Hier kommt alles herein, was, salopp gesprochen, nicht rüttelt, aber dennoch zu einer langsameren Fahrweise zwingt. Beispiele wären Fußgängerzonen, Parkwege mit vielen Fußgängern, enge und kurvenreiche Wege, aber auch Wege mit Bordsteinen (letzteres könnte in Zukunft anders gelöst werden). Notorisch zugestaute Straßen (z.B. die Friedrichstraße in Berlin-Mitte) könnten theoretisch hier auch aufgeführt werden.

Temporäre Beeinträchtigungen werden mit einer `temporary`-Direktive versehen und können noch den Zusatz `::inwork` erhalten (Beispiel `q4::inwork`). Der Beschreibungstext sollte zudem das Datum der Aufhebung im Format YYYY-MM-DD enthalten, so dass das Postprocessing rechtzeitig das Ablaufen anzeigen kann.

Dateinamen: `handicap_s` und `handicap_l`

### 8.4. Radwege

In Berlin wird versucht, genau zu kategorisieren, siehe auch die entsprechende Dokumentation in der `bbd`-Dokumentation. Ob ein Radweg benutzungspflichtig ist, ändert sich in Berlin häufig und man merkt sich dieses Merkmal beim Vorbeifahren schlecht, so dass eine Fehlkategorisierung mit `RW1` statt `RW2` verziehen wird. Der Unterschied zwischen Suggestivstreifen und Radspur ist nicht immer klar ersichtlich. Bei Busspuren gibt es noch keine Kategorisierung nach den Geltungszeiten, diese könnte im Beschreibungsfeld stehen (das ist in den bisherigen Daten noch nicht der Fall).

In der Berliner Umgebung wird nur mit `RW` kategorisiert und möglichst immer das Beschreibungsfeld gefüllt.

Die Qualität des Radwegs kann nur im Beschreibungsfeld als beschreibender Text eingetragen werden.

Dateinamen: `radwege` und `comments_cyclepath`

### 8.5. Grüne Wege

Wege, die durch Parks und Wälder oder an Gewässern entlang führen. Es gibt zwei Stufen, `green1` und `green2`. `green1` wird vergeben, wenn sich der Weg im überwiegend städtischen Gebiet befindet (z.B. Uferstraßen) oder es sich um eine größere Straße in einem Park handelt (z.B. John-Foster-Dulles-Allee). Die Kanaluferstraßen am Landwehrkanal würden eigentlich `green1`-konform sein, aber die Straßen sind dort so sehr befahren, dass sie keine "green"-Kategorisierung erhalten haben.

Im Beschreibungsfeld steht meistens der Typ wie "Uferstraße" oder "Parkweg durch den Tiergarten".

In Vorbereitung ist die Datei `comments_scenic` wo landschaftlich besonders schöne Strecken im Umland oder sonstige schöne Straßen in der Stadt beschrieben werden können.

Dateiname: `green`

### 8.6. Unbeleuchtete Straßen

Hier werden nachts unbeleuchtete Straßen eingetragen. Bei Grenzfällen, z.B. Ausschalten der Beleuchtung zu einer bestimmten Uhrzeit, kann diese im Beschreibungsfeld aufgeführt werden.

Dateiname: `nolighting`

### 8.7. Ampeln

Neben Ampeln (hochdeutsch: LSA) kann man auch Bahnübergänge und Zugbrücken unterbringen. Bei Bahnübergängen (Kategorie `B`) kann man im Beschreibungsfeld die ungefähre Anzahl von Zügen pro Stunde angeben.

Bei Zugbrücken (Kategorie `Zbr`) können im Beschreibungsfeld die Sperrzeiten angegeben werden, falls welche existieren (z.B. gesehen bei der B110 zwischen Anklam und Usedom).

Bei Ampeln wird zwischen normalen Ampeln (Kategorie `X`, Achtung: kann sich in Zukunft ändern) und reinen Fußgängerampeln (Kategorie `F`) unterschieden. Ampeln sind nur in Berlin und Oranienburg erfasst.

Mehrfachampeln werden meistens nur einfach erfasst, aber theoretisch könnte man das Beschreibungsfeld mit einer Erklärung ergänzen.

Dateiname: `ampeln`

### 8.8. Steigungen

Drei Möglichkeiten gibt es zur Erfassung von Steigungen:

- Angabe von Höhenpunkten. In diesem Fall wird ein Eintrag in der Datei `mount` automatisch vom Postprocessing erzeugt.

- Angabe einer informellen Steigung ohne Prozentangabe. Dies geschieht in der Datei `comments_mount`. Mann lann Attribute wie "steil", "stark", "flach", "lang", "wellig", "kurz" im Beschreibungsfeld unterbringen.

- Angabe der Steigung in Prozent. Quelle für die Prozentzahl könnte ein Steigungsschild an der Straße oder relative Höhenangaben eines barometrischen Höhenmessers sein. In diesem Fall muss im Beschreibungsfeld "Steigung n%" stehen.

Gefälle werden niemals angegeben, sondern ergeben sich implizit aus der Steigung.

Dateinamen: `hoehe`, `comments_mount`, `mount`

### 8.9. Straßenbahnen

Wenn zwischen Straßenbahngleisen und parkenden Autos oder Bordsteinkante wenig Platz ist, sollte ein Eintrag in dieser Datei geschaffen werden. Faustregel wäre: ein Fahrrad mit Anhänger sollte gebührenden Abstand zu parkendes Autos halten können und sicher von einer Straßenbahn überholt werden. Nur in Berlin erfasst.

Dateiname: `comments_tram`

### 8.10. Ausgeschilderte Radrouten

Beispiele für ausgeschilderte Radrouten sind der europäische Radfernweg R1, die neuen Radialrouten in Berlin (z.B. RR10), Berlin-Usedom, Mauerradweg. Oft sind Abschnitte zwar als Radroute angedacht, aber (noch) nicht ausgeschildert. Es wäre gut, wenn diese Abschnitte entsprechend markiert werden. Manche Nummerierungen werden doppelt vergeben, so gibt es eine R1 auch in der Bernauer Umgebung. In diesem Fall wird der "unbedeutendere" Weg genauer gekennzeichnet. Für einige wichtige Radrouten gibt es vorreservierte Buchstabenkürzel, z.B. "BU" für Berlin-Usedom. Diese sind in der Programmdatei `Geography/Berlin_DE.pm` fest verdrahtet.

Dateiname: `comments_route`

### 8.11. Kommentare für Streckenführungen

Manchmal sind Streckenführungen in der Realität nicht einfach zu finden. Dazu werden in dieser Datei erleichternde Erklärungen geschrieben. Beispiele wären "Ausgeschildert als ..." oder "An der Kreuzung .../... die Straßenseite wechseln" oder "Am einsamen Haus links abbiegen". Es gibt Punktkommentare (für einen Punkt immer gültig, egal in welche Richtung man fährt) und Streckenkommentare (gültig, falls man den kompletten Streckenteil fährt; wahlweise auch in der Form, die nur für eine Richtung gültig ist).

Dateiname: `comments_path`

### 8.12. Kommentare zu Fährverbindungen

Fährzeiten und Preise der Fähren, möglichst mit dem Stand der letzten Aktualisierung.

Dateiname: `comments_ferry`

### 8.13. Sonstige Kommentare

Alle Kommentare, die nicht in eine der anderen Dateien passen, kommen hier herein.

Dateiname: `comments_misc`

### 8.14. Gesperrte Straßen

Darunter fallen folgende Typen:

- Einbahnstraßen, die auch für Radfahrer gelten (Kategorie `1`

- Einbahnstraßen, die in der Praxis von Radfahrern ignoriert werden können `1s`

- Für Radfahrer vollkommen gesperrte Straßen (z.B. Kfz-Straßen wie die B96a in Altglienicke, aber siehe auch hier; Kategorie `2`)

- Stellen, an denen getragen werden muss (Kategorie `0:n`, wobei `n` für die Zeit in Sekunden steht, die dabei verloren geht - hier wähle ich großzügige Zeiten, meistens nicht unter 30 Sekunden. Zeiten über einer Minute werden ebenfalls in Sekunden angegeben z.B. `0:60`)

- Drängelgitter und Ähnliches (Kategorie `BNP:n`, auch hier steht `n` für die verlorene Zeit)

- Eine gesperrte Wegführung (z.B. nicht mögliches Abbiegen oder Überqueren einer Straße) (Kategorie `3`). Wenn beispielsweise nur rechts abbiegen erlaubt ist, müssen alle anderen Wegführungen (z.B. geradeaus und links) als gesperrt markiert werden, und das sowohl für Hin- und Rückrichtung. Wenn eine Abbiegebeschränkung durch eine Einbahnstraße verursacht wird, dann ist eine weitere Markierung in diesem Fall nicht notwendig.

  Die gesperrte Wegführung wird typischerweise mit drei Punkten gekennzeichnet, wobei der mittlere Punkt der Punkt mit der Einschränkung ist.

- Die Spezialkategorie `3nocross`, mit der ein Straßenzug, der nicht überquert werden kann (z.B. wegen einer Straßenbahntrasse, wegen eines nicht passierbaren Mittelstreifens oder wegen sehr (!) starken Kfz-Verkehrs), gekennzeichnet wird. Im Postprocessing werden die `3nocross`-Kategorien in mehrere Strecken mit der Kategorie `3` umgewandelt.

  Beispiele findet man in den BBBike-Daten im Raum Prenzlauer Berg. In BBBike werden die `3nocross`-Strecken mit gestrichelten orangen Linien markiert und sind nur im Editiermodus sichtbar.

Gesperrte Straßen für Autofahrer können in der Datei `gesperrt_car` eingetragen werden.

Temporär gesperrte Strecken sollten mit einer Direktive `temporary` versehen werden und unter Umständen in der Kategorie den Zusatz `:inwork` (Achtung: hier nur ein Doppelpunkt, aber das kann sich ändern!) erhalten (siehe auch die Ausführung zu temporären Einträgen in handicap).

Dateinamen: `gesperrt`, `gesperrt_car`

### 8.15. Brunnels

Brunnels ist die Zusammenfassung von Brücken und Tunnels. In Zukunft werden auf BBBike-gezeichneten Karten brunnels auch als solche gemalt. Zurzeit können die brunnels-Daten verwendet werden, um bei der Erkennung von nicht eingetragenen Kreuzungen beizutragen (Programm `miscsrc/check_crossings`).

Dateiname: `brunnels`

### 8.16. Vorfahrtstraßen

Diese Datensätze bestehen aus Koordinaten für einen Straßenzug, der Vorfahrt am mittleren Punkt besitzt. Dieser Layer kann in BBBike gezeichnet werden, wird aber (noch) nicht weiter verwendet. Deshalb können Einträge in diesem Layer auch weggelassen werden. Geplant ist es, diese Information in BBBike bei der Routensuche zu verwenden (zusätzliche Penalties) oder zusätzlich Hinweise in der Routenliste anzuzeigen, zum Beispiel bei abknickenden Vorfahrtsstraßen.

Es gibt implizite Regeln für die Vorfahrt. Wenn eine dieser Regeln erfüllt ist, braucht man keinen Datensatz für die Vorfahrt anlegen:

- Bei Ampeln braucht man keine Vorfahrtsregelung zu markieren.

- Höhergeordnete Straßen haben Vorfahrt vor niedrigeren Straßen, also H hat Vorfahrt vor N und HH vor H etc.

- Spielstraßen (verkehrsberuhigte Straßen) haben nie Vorfahrt vor Nicht-Spielstraßen.

- Alle anderen Kreuzungen werden als Rechts-vor-Links-Kreuzungen angenommen.

Dateiname: `vorfahrt`

### 8.17. Autobahnen

Autobahnen und Kraftfahrzeugstraßen können zu Informationszwecken in diesem Layer aufgeführt werden. Strikt gesehen müssen die Strecken nicht so gezeichnet sein, dass sie routingfähig sind.

Dateiname: `strassen_bab`

### 8.18. Sehenswürdigkeiten und wichtige Gebäude

Die Datensätze in dieser Datei bekommen die Kategorie `SW`, oft mit vielen anderen Zusätzen. Falls es sich nur um einen Punkt handelt, ist es einfach nur `SW`, ansonsten `F:SW`.

Wenn zu der Sehenswürdigkeit ein Bild existiert, dann sollte das Bild in das Unterverzeichnis `sehenswuerdigkeit_img` abgelegt werden. Als Dateiformat sollte man möglichst ein von Perl/Tk nativ unterstütztes wie xpm oder gif wählen (neuere Perl/Tk-Versionen können auch jpg und png verarbeiten, aber darauf möchte ich mich erst einmal nicht verlassen). Die Bilder sollten relativ klein sein, höchstens 50 Pixel in Breite und Höhe, und aus Grautönen bestehen und einen Alpha- bzw. Transparenzkanal besitzen. Das Bild wird per `IMG`-Kategorie gekennzeichnet (Beispiel siehe unten).

Es gibt einige vordefinierten Bilder wie `church.gif` (für Kirchen), `monument.gif` (für Denkmäler), `airport.gif` (für Flughäfen), `hospital.gif` (für Krankenhäuser) und `touristinfo.gif` (für Touristenbüros).

Falls man eine flächige Sehenswürdigkeit ohne Symbolbild, also weder Stern noch ein anderes Bild, darstellen möchte, kann man das vordefinierte leere Bild `px_1t.gif` verwenden.

Beispiele:

        IMG:sehenswuerdigkeit_img/brandenburger_tor.gif|ANCHOR:s
        (ein Bild, wobei sich die definierte Koordinate südlich vom Bild
        befindet: ANCHOR:s wie south)

        F:SW|IMG:church.gif
        (eine Kirche, wobei gleichzeitig eine Kirchensignatur sowie eine
        rote Fläche angezeigt wird)

        F:SW
        (eine allgemeine flächige Sehenswürdigkeit, hier wird ein
        Stern als Signatur angezeigt)

        F:SW|IMG:px_1t.gif
        (eine allgemeine flächige Sehenswürdigkeit, hier wird nur die rote
        Fläche gezeichnet und kein weiteres Symbol)

        IMG:sehenswuerdigkeit_img/reichstag.gif
        (ein Bild ohne Fläche und ohne Anchor-Information, hier wird
        einfach nur zentriert)

In Zukunft werden die Standardbilder (church.gif) durch Kategorien ersetzt werden.

Dateiname: `sehenswuerdigkeit`

### 8.19. Fragezeichen

Bei der Erfassung der Kartendaten kommt es häufiger vor, dass ein bestimmter Aspekt (z.B. die Strassenqualität oder eine Abbiegesituation) unklar bleibt. Der Autor kann dies kommentieren, indem er alle Strecken und Punkte einträgt, bei denen er sich nicht sicher ist. Bei den Einträgen gibt es zwei Arten: öffentliche und nicht-öffentliche. Öffentliche Fragezeichen-Datensätze sind wie folgt sichtbar:

- Sie werden Benutzern des Web-Interfaces von BBBike in der Routenliste präsentiert, wenn sie die Option "Unbekannte Strecke mit einbeziehen" auswählen.

- Benutzer der MapServer-Interfaces und des Perl/Tk-Interfaces sehen diese Daten, wenn sie den Fragezeichen-Layer einschalten.

Nicht-öffentliche Datensätze sind z.B. im Edit-Modus sichtbar oder beim Blick in die Datenquellen.

Einträge für die erzeugte Datei `fragezeichen` werden aus verschiedenen Quellen zusammengetragen: aus der Originaldatei `fragezeichen-orig` (aber auch nicht alle!) sowie aus mit `add_fragezeichen`-Direktiven versehenen Datensätzen. Die Regeln sehen wie folgt aus:

- Alle Einträge in `fragezeichen-orig`, die in Sections

              #: ignore vvv
              ...
              #: ignore ^^^

  stehen, werden nicht in die öffentliche `fragezeichen`-Datei übernommen.

- Die Direktive

              #: add_fragezeichen: ...

  in einer beliebigen Datendatei (`*-orig`) übernimmt den nachfolgenden Eintrag in die `fragezeichen`-Datei. Diese sind aber im Edit-Modus nicht sichtbar, da sie nicht auch in die Datei `fragezeichen-orig` übernommen werden.

- Die Direktive

              #: XXX: ...

  ist ein nicht-öffentlicher Kommentar, der aber nirgends visualisiert wird (das wird sich in Zukunft ändern!)

- Alle Einträge in `fragezeichen-orig`, die die Direktive

              #: XXX ...

  haben, besitzen demnach zwei Kommentare: einen öffentlichen (den Namen im Datensatz) und den nicht-öffentlichen (der Text hinter der `XXX`-Direktive).

Da alle Fragezeicheneinträge in der Datei `fragezeichen` im Webinterface angezeigt werden können, sollte der Text allgemein verständlich sein. Insbesondere geht die Information darüber verloren, in welcher Datei sich eine `add_fragezeichen`-Direktive befand (befindet sie sich z.B. in `qualitaet_s-orig`, dann sollte im Text auch klar werden, dass es sich um eine Frage nach der Qualität handelt). Auch geht ein Teil des geographische Kontexts verloren: in der Routenbeschreibung wird nicht ersichtlich, um welche Teilstrecke es geht. In diesem Fall sollten die von-nach-Kreuzungen möglichst mit angegeben werden.

### 8.20. Temporäre Sperrungen

Für Baustellen und Veranstaltungen, die Sperrungen oder Beeinträchtigungen zur Folge haben und nur kurz- oder mittelfristig (typischerweise höchstens ein Jahr) dauern, können Einträge in der Datei `temp_blockings/bbbike-temp-blockings.pl` vorgenommen werden. Entweder manuell, oder (empfohlen) über das Interface für "Temporäre Sperrungen".

Die Vorgehensweise sieht so aus:

- Es ist nicht unbedingt notwendig, in den EDIT-Modus zu wechseln.

- Den Menüpunkt Sucheinstellungen → Benutzerdefinierte Sperrungen → Definieren aktivieren.

- Die Straßenabschnitte, in denen Sperrungen vorkommen, mit einem Mausklick markieren. Es können nur ganze Straßenabschnitte von Kreuzung zu Kreuzung (oder Kurvenpunkt) markiert werden. Mit einem nochmaligen Klick auf das Sperr-Symbol wird dieses wieder entfernt.

- Den Menüpunkt Sucheinstellungen → Benutzerdefinierte Sperrungen → Speichern für temp_blockings auswählen. Ein Dialogfenster erscheint.

- Eine natürlich-sprachliche Beschreibung für die Sperrung eintragen (z.B. betroffene Straßenzüge, Grund der Sperrung, Anfangs- und Enddatum der Sperrung etc.).

- Nach Klick auf den "Date"-Knopf versucht das Programm, Anfangs- und Enddatum aus der Beschreibung zu extrahieren und in die Felder "Start" und "Ende" einzutragen. Es werden einige Datumsschreibweisen erkannt, wie "Tag.Monat.Jahr" oder "Ende Monat Jahr". Funktioniert das nicht, müssen Anfangs- und Enddatum manuell eingetragen werden oder auf "undef" (undefiniert, offener Anfang und offenes Ende) gesetzt werden.

- Bei der Vorwarnzeit kann typischerweise die Voreinstellung von einem Tag beibehalten werden.

- Typ der Sperrung/Beeinträchtigung wählen. Wenn die Straße tatsächlich komplett gesperrt ist (z.B. wenn eine neue Brücke eingesetzt wird oder es sich um ein überlaufenes Straßenfest handelt), dann sollte "gesperrt" gewählt werden. Wenn die Sperrung nur eine Richtung betrifft, dann sollte "Einbahnstraße" gewählt werden. Die manuelle Korrektur der Richtung wird später erläutert. Falls es sich um eine Beeinträchtigung handelt, die man als Radfahrer mit Schrittgeschwindigkeit passieren kann, wird "handicap" gewählt.

- Falls auch das Überqueren der betroffenen Straßen nicht möglich ist (Beispiel: Berlin-Marathon), dann sollte der entsprechende Checkbutton ausgewählt werden.

- Falls es sich nicht um eine Baustelle handelt, sollte der entsprechende Checkbutton deselektiert werden.

- Die restlichen Einstellungen können meistens ignoriert werden. Man kann nun auf "Ok" klicken.

- Der Dialog wird geschlossen und auch die Markierungen sollten verschwinden. Wenn man jetzt auf Sucheinstellungen → Benutzerdefinierte Sperrungen → Aktive und zukünftige Sperrungen zeichnen klickt, sollten die neuen Eintragungen wieder erscheinen, diesmal mit Baustellen- oder Kalendarsymbol.

Wenn manuell Änderungen (z.B. Einbahnstraßen umdrehen) notwendig sind, muss das in der Datei `data/temp_blockings/bbbike-temp-blockings.pl` passieren. Bei der Datei handelt es sich um eine Perl-Datenstruktur, in der kleine bbd-Schnipsel vorkommen. Der zuletzt editierte Eintrag befindet sich typischerweise ganz hinten. Hier können die bbd-Daten, wie im Abschnitt Direktes Editieren beschrieben, geändert werden.

### 8.21. Sackgassen (culdesac)

In der Datei `culdesac` werden Sackgassenenden eingetragen. Es gibt zwei Kategorien: `culdesac` für echte Sackgassen für alle Verkehrsteilnehmer und `culdesac_pseudo` für Sackgassen nur für Kfz. Als Namen wählt man typischerweise "Sackgassenende", aber man kann auch davon abweichen (siehe unten).

Weiterhin gibt es typischerweise zwei Abschnitte in der `culdesac-orig`-Datei: Sackgassen, die nicht ignoriert werden und somit in die Zieldatei `culdesac` übernommen werden, sowie Sackgassen, die sich innerhalb eines `ignore`-Abschnitts befinden und nicht übernommen werden.

Sackgassen, die übernommen werden, werden zurzeit im CGI-Programm auf der Kreuzungsseite ("Genaue Kreuzung angeben") verwendet. Hier wird der Name, typischerweise "Sackgassenende", anbgezeigt. Falls sich aber eine bekannte Institution an diesem Punkt befindet, kann man den Namen der Institution zusätzlich oder ausschließlich eintragen (siehe z.B. "S-Bhf. Ostkreuz" an der Sonntagstraße).

Da Sackgasseneinträge Vorrang über Kreuzungsnamen haben, kann man "schlechte" Kreuzungsnamen damit überschreiben. Z.B. ist "Blücherplatz/Sackgassenende" wesentlich kürzer und prägnanter als das automatisch erzeugte "Blücherplatz/(Blücherplatz - Johanniterstr.)/(Blücherplatz - Zossener Str.)".

Ein weiterer Plan war, mithilfe der Sackgassendatei fehlende Straßen/Wege automatisch zu ermitteln: eine Straße muss entweder eine Fortsetzung haben oder als Sackgasse deklariert sein. Dieser automatische Check fehlt allerdings noch.

Dateiname: `culdesac`

## 9. Alternative Editiermöglichkeiten

### 9.1. Schnelles Erfassen von Daten

Es ist auch möglich, mit der Standardinstallation von BBBike (ohne git) Daten zu erfassen, die an der Daten-Maintainer geschickt werden können. Dazu muss einfach ein Straßenzug zusammengeklickt werden, indem man die Shift-Maustaste verwendet. Existierende Punkte (nur im Edit-Modus) sollten nur mit der Maustaste (ohne Shift) zusammengeklickt werden. Nach Auswählen des Menüpunktes Bearbeiten → Path to Selection (dazu muss die Option Advanced aktiviert sein) steht die Koordinatenliste als Selection zur Verfügung und kann mit "Paste" in einen Editor oder ein Mailprogramm eingefügt werden. Es ist für den Maintainer hilfreich, wenn dabei das normale BBBike-Datenformat verwendet wird, also

        Beschreibung (z.B. Straßenname) TAB Kategorie oder X Space Koordinatenliste

### 9.2. Direktes Editieren der Daten

BBBike-Daten sind reine Textdateien und können mit einem normalen Texteditor bearbeitet werden. Dabei sollte der Texteditor im Zeichensatz iso-8859-1 eingestellt sein. Der Zeichensatz Windows-1252 ist erlaubt, soweit nicht einige Zeichen im Bereich 128-160 verwendet werden (z.B. die typografischen doppelten Anführungszeichen, das Euro-Zeichen). Ausnahmen sind einige Dateien, die den Zeichensatz utf-8 verwenden (z.B. `orte-orig`, `orte2-orig`). Der Zeichensatz ist, soweit er von iso-8859-1 abweicht, am Anfang der Datei mit einer entsprechenden encoding-Direktive gekennzeichnet. Das Umschalten des Zeichensatzes sollte beim `emacs` automatisch erfolgen.

Beim Editieren mit einem Texteditor wird allerdings kein `datachange.log` erzeugt und das Zusammenführen mit den Stammdaten könnte in Handarbeit resultieren. Deshalb sollte möglichst immer der Straßen-Editor verwendet werden. Für die genauere Beschreibung des BBBike-Datenformats siehe hier.

## 10. Neue Layer auf Basis der Berliner BBBike-Daten

TBD

## 11. Eine komplett neue Datenbank aufbauen

Dazu sollte ein neues Datenverzeichnis parallel zu `data`-Verzeichnis erzeugt werden. Das Verzeichnis sollte alle Dateien aus `data` enthalten (Unterverzeichnisse können erst einmal ignoriert werden), aber alle Dateien sollten leer (d.h. 0 Bytes größ) sein (Ausnahmen: `Makefile`, `Makefile.mapfiles`, `README` - diese Dateien sollten unverändert gelassen werden).

Das neue Datenverzeichnis sollte bevorzugt einen Namen im Format `data_stadt_landeskuerzel` haben, z.B. `data_hamburg_de` (alles Kleinbuchstaben). Beim Starten von BBBike muss dieses neue Datenverzeichnis angegeben werden:

     bbbike -datadir data_hamburg_de

Achtung: da manche BBBike-Tools sich auf ein hart kodiertes `data`-Verzeichnis verlassen, könnten einige Editieroperationen fehlschlagen. Alternativ könnte man das neue Verzeichnis auch `data` nennen, aber ein git-Update würde dann zu Konflikten führen.

## 12. Alternativen

### 12.1. Formular im WWW

Ein Formular zum Eintragen von Straßendaten findet man hier.

### 12.2. Kommentare über Mapserver eintragen

Aus dem Mapserver-Interface heraus ist es möglich, Kommentare für einen bestimmten Punkt zu schreiben. Dazu den Radiobutton Details anzeigen auswählen und auf einen Punkt in der Karte klicken. Im aufpoppenden Fenster kann ein formloser Kommentar eingetragen werden.

[1] Eine weitere Möglichkeit der Punktauswahl wäre eine normale Suche (dazu in den Suchmodus gehen). Nach der Suche müssen die Punkte per Bearbeiten → Path to Selection in die X11-Selection übertragen werden. Grundsätzlich muss Suche → Straßennetz neu berechnen ausgewählt werden, wenn eine gerade neu eingefügte Straße attributiert werden soll.