Next: bbd | Previous: http://bbbike.sourceforge.net/index |  | [Index]

# bbbike

- NAME
- SYNOPSIS
- BESCHREIBUNG
  - AUTOMATISCHE SUCHE
  - MANUELLE ROUTENERSTELLUNG
- INFORMATIONSLEISTE
- ICONS
  - KARTENELEMENTE
  - NAVIGATION
  - ROUTEN
  - DATEIOPERATIONEN
  - WEITERE ICONS
- OPTIONEN
- ANFORDERUNGEN
- INSTALLATION
  - Allgemein
  - fvwm2
- INTERNA
- BUGS
- LIMITATIONS
- TODO
- KOMPATIBILITÄT
- ANERKENNUNG
- AUTOR
- PREREQUISITES
- COREQUISITES
- SEE ALSO

## NAME

bbbike - Informationssystem für Radfahrer in Berlin und Brandenburg

## SYNOPSIS

      bbbike [options]

## BESCHREIBUNG

BBBike ist ein Informationssystem für Radfahrer in Berlin und Brandenburg. Mit dem Programm können Routen, optimiert für Radfahrer, automatisch gesucht oder manuell erstellt werden. Bei der automatischen Suche wird die kürzeste Strecke zwischen zwei angegebenen Punkten gesucht. Bei der manuellen Routenerstellung können abschnittsweise Zwischenpunkte eingegeben werden und zum Schluss die Gesamtlänge abgelesen werden.

Eine einfache WWW-Version kann man unter der Adresse http://www.bbbike.de finden.

Wenn eine Verbindung zum Internet existiert, kann BBBike die aktuellen Wetterdaten von der FU Berlin (Dahlem) bzw. vom DWD Berlin (Tempelhof) für die Windstärke und -richtung auswerten. Diese Daten können bei der Berechnung der Fahrzeit und Leistung verwendet werden.

Ein Teil von BBBike ist das perl-Modul BikePower. Mit diesem Modul kann (wie beim ursprünglichen bike_power-Programm von Ken Roberts - roberts@cs.columbia.edu ) anhand von Daten wie Gefälle, Wind, Rollwiderstand der Reifen, Luftwiderstand, Masse von Rad und Fahrer die Leistung ermittelt werden.

BBBike liefert unter anderem die Antwort auf folgende Fragen:

- Wie lang ist die Strecke von A nach B?
- Wie schnell komme ich von A nach B, wenn ich durchschnittlich 15 km/h schnell fahre?
- Wie lange brauche ich von A nach B, wenn ich mit 100 Watt Leistung fahre, mit Berücksichtigung des aktuellen Windes und von Steigungen auf der Strecke?
- Auf welchen Straßen fahre ich, wenn ich von A nach B kommen will?
- Wo habe ich Gegenwind- und Rückenwindstrecken?
- Wo gibt es Steigungen und Gefälle?
- Kann ich Hauptstraßen und/oder Kopfsteinpflasterstrecken auf meiner Strecke vermeiden?

### AUTOMATISCHE SUCHE

Start- und Zielpunkt einer Route setzt man, indem man mit der linken Maustaste auf eine Straße klickt. Nach dem Setzen des Zielpunktes berechnet das Programm die kürzeste Route und zeigt sie an. Danach kann die Route verlängert werden. Soll eine neue Route (mit neuem Start- und Zielpunkt) berechnet werden, kann die alte mit der rechten Maustaste oder mit Klick auf das Icon Route zurücksetzen gelöscht werden. Mit der mittleren Maustaste oder mit der Backspace-Taste kann jeweils der letzte Punkt der Route gelöscht werden. Mit der Delete-Taste (Entf) kann die Route bis zum letzten Via-Punkt gelöscht werden.

Wenn Winddaten existieren (automatisch aus dem WWW geholt oder manuell eingegeben), werden die Rückenwindstrecken grün und die Gegenwindstrecken rot dargestellt.

### MANUELLE ROUTENERSTELLUNG

Die manuelle Routenerstellung wird zum Beispiel bei der Erstellung einer Tourplanung verwendet, bei der nicht das Suchen einer kürzesten Strecke im Vordergrund steht. Sie funktioniert prinzipiell wie die automatische Suche, nur wird der Benutzer mehr Punkte eingeben, um die Route festzulegen. Mit Klick auf Alt-Button1 oder Shift-Button1 (Klick auf die linke Maustaste und gleichzeitiges Drücken der Alt- oder Shift-Taste) kann ein beliebiger Punkt gekennzeichnet werden (also ein Punkt, der nicht auf einer Straße liegt).

## INFORMATIONSLEISTE

Im oberen Bereich des Fensters befindet sich die Informationsleiste von BBBike.

Ort/Bahnhof
  Anzeige des Ortes bzw. der Haltestelle unter dem Mauscursor. Die Angabe ist nur gültig, wenn sie in schwarzer Schrift (und nicht in grauer) erscheint. Mit einem Klick wird die Ort-Auswahl angezeigt.
Straße/Strecke
  Anzeige der Straße bzw. Bahnlinie unter dem Mauscursor. Auch hier ist die Angabe nur bei schwarzer Schrift gültig. Mit einem Klick wird die Straßen-Auswahl angezeigt.
km
  Länge der aktuellen Route in Kilometern. Mit der rechten Taste kann zwischen der Angabe in Kilometern und Metern umgeschaltet werden.
%
  Angabe, wieviel % über der Ideallinie (Luftlinie) die aktuelle Route liegt. Bei offensichtlichen Rundfahrten bleibt die Angabe leer.
km/h
  Fahrzeit bei dieser durchschnittlichen Geschwindigkeit. Mit Klick auf das km/h-Feld kann eine andere Geschwindigkeit eingegeben werden. Mit Klick auf die Fahrzeit wird das Alarm-Fenster geöffnet. Mit der rechten Maustaste kann die jeweilige Geschwindigkeit als "Referenzgeschwindigkeit" ausgewählt werden. Mit dem Ampel-Icon kann das Einbeziehen von Ampeln in die Fahrzeit ein-/ausgeschaltet werden.
W
  Fahrzeit bei dieser durchschnittlichen Leistung, abhängig von der Windgeschwindigkeit und von Steigungen. Die Berechnung wird mit dem Modul BikePower durchgeführt. Mit Klick auf das W-Feld kann eine andere Leistung (in Watt) eingegeben werden. Mit Klick auf die Fahrzeit wird das Alarm-Fenster geöffnet. Mit der rechten Maustaste kann die jeweilige Leistung als "Referenzleistung" (intern wird diese auf eine Geschwindigkeit umberechnet) ausgewählt werden. Mit dem Ampel-Icon kann das Einbeziehen von Ampeln in die Fahrzeit ein-/ausgeschaltet werden.
Datum der Winddaten
  Falls aktuelle Winddaten vorhanden sind, stehen in diesem Feld das jeweilige Datum und die Uhrzeit. Bei einem Mausklick wird versucht, die aktuellen Daten über das WWW oder über eine lokale Datenbank zu holen. Mit der rechten Maustaste erscheint ein Menü mit folgenden Punkten:
  Wetterstation
    Hier kann ausgewählt werden, welche der Quellen im Internet (Meteorologisches Institut der FU oder Deutscher Wetterdienst) verwendet werden soll. Mit "aktuellste" werden alle Quellen nach den aktuellsten Angaben überprüft.
  Quelle
    Hier kann angegeben werden, ob die Wetterdaten über das Internet direkt gezogen werden oder ob ein evtl. vorhandener lokaler Cache bzw eine lokale Datenbank vorgezogen wird.
  Auswahl aus Datenbank
    Falls eine lokale Datenbank vorhanden ist, können hiermit Wetterdaten zu einem bestimmten Tag ausgewählt werden.
  Wind ignorieren
    Normalerweise wird - falls Winddaten vorhanden sind - die Route anhand der Windrichtung gefärbt: Rückenwindabschnitte sind grün, Gegenwindabschnitte rot und Seitenwindabschnitte von hellgrün bis orange.

    Falls der Menüpunkt "Wind ignorieren" angeklickt ist, wird die Windgeschwindigkeit und -richtung bei der Route und bei der Zeitberechnung ignoriert. Die Route wird dann in einer einzelnen Farbe (blau) gezeichnet.

  Aktualisierung
    Hiermit kann das Zeichnen der Gegenwind- und Rückenwindstrecken der Route aktualisiert werden.
  automatische Aktualisierung
    Beim Ändern der Wetterstation bzw. der Quelle werden automatisch die neuen Wetterdaten geholt.
  automatische Routenaktualisierung
    Beim Ändern von Wetterdaten werden automatisch die Gegenwind- und Rückenwindstrecken der Route aktualisiert.
Winddaten
  Hier wird, falls vorhanden, die aktuelle Windrichtung und die aktuelle Windgeschwindigkeit in m/s angezeigt. Mit einem Klick wird ein Fenster zur manuellen Eingabe der Windrichtung und -geschwindigkeit geöffnet. Anmerkung: Zwar kann die maximale Windgeschwindigkeit eingegeben werden, das Programm verwendet aber nur die mittlere Windgeschwindigkeit für die Zeitberechnungen.
Temp
  Anzeige der aktuellen Temperatur. Die Temperatur wird sogar in die Leistungsberechnung einbezogen, die Auswirkungen darauf sind aber nur minimal.

## ICONS

Unter manchen Icons befindet sich ein kleiner Pfeil, mit dem ein zugehöriges Popup-Menü aufgeklappt werden kann. Das Menü kann auch mit Klick auf die rechte Maus-Taste, während sich der Maus-Cursor über dem Icon befindet, aufgerufen werden.

Hier folgt die Beschreibung der Icons von links nach rechts.

### KARTENELEMENTE

Die erste Gruppe kontrolliert, welche Elemente auf der Kartenfläche dargestellt werden sollen. In allen Menüs dieser Icons kann mit oben, normal und unten angegeben werden, ob die Elemente über oder unter allen anderen Elementen gezeichnet werden sollen oder ob die normale Reihenfolge wiederhergestellt werden soll (die normale Reihenfolge lautet von unten nach oben: Flächen, Gewässer, Inseln, Grenzen, U-Bahnen, Regionalbahnen, S-Bahnen, Straßen, Landstraßen, Orte). Daneben besitzt jedes Menü einen Schalter zum Ein- und Ausschalten des Elements und einen Eintrag zum Auswählen einer bestimmten Straße oder eines bestimmten Ortes über eine Listbox.

Straßen-Symbol

  Schaltet das Zeichnen von Straßen in Berlin ein oder aus (Tastatur: `s`).

  Menü: Neben den Standardeinträgen sind noch folgende Einträge vorhanden:

  Auswahl aus ...
    In diesem Untermenü kann eine Straße aus alternativen Verzeichnissen ausgewählt werden:
    Komplette Straßenliste
      In der Straßen-Datenbank von BBBike sind nur ca. 2300 Straßen erfasst. Straßen, die hier nicht vorhanden sind, können in der umfangreicheren PLZ-Datenbank ausgewählt werden. Allerdings wird bei der Auswahl einer nicht vorhandenen Straße nur der Postleitzahlbereich angezeigt.
    Telefonbuch-Datenbank (Straße)
      Wenn eine Telefonbuch-CD-ROM 1998/99 oder 1999/2000 für Berlin vorhanden ist, kann diese Datenbank verwendet werden. Hier kann jede Straße mit Hausnummer angegeben werden; die Position wird recht exakt angzeigt.
    Telefonbuch-Datenbank (Name)
      Mit diesem Formular kann nach Namen im Telefonbuch-Verzeichnis gesucht werden. Es muss mindestens der Nachname angegeben werden. Mit dem Schalter Exakt kann eingestellt werden, ob der Nachname exakt passen muss (ansonsten wird bei der Suche von "Wall" auch "Wallburg" etc. angezeigt). Nachdem mit Suchen die Ergebnisliste erstellt wurde, können mit << und >> weitere passende Datensätze eingesehen werden. Mit Alle werden alle passenden Datensätze auf der Karte markiert. Wenn ein `dial`-Programm vorhanden ist, erscheint noch ein Button Wählen zum Wählen der Telefonnummer.
  Untermenü Straßenkategorien
    In diesem Untermenü kann das Zeichnen von Hauptstraßen, Nebenstraßen und für Kfz gesperrte Straßen ein- und ausgeschaltet werden.
  Höhenpunkte
    Höhenpunkte werden in die Karte eingezeichnet.
  Radwege
    Radwege werden gezeichnet. Benutzungspflichtige Radwege sind dunkelblau, freiwillig zu nutzende Radwege blau, Radstreifen grün und Busspuren orange. Für jede Richtung, in die ein Radweg existiert, wird auf der jeweiligen Straßenseite ein Radweg gezeichnet, auch wenn es sich eigentlich um einen Zwei-Richtungs-Radweg auf der falschen Straßenseite handelt.
  Untermenü Radwegekategorien
    In diesem Untermenü kann das Zeichnen von einigen Radwegekategorien ein- und ausgeschaltet werden.
  Einbahn-/gesperrte Straßen
    Kennzeichnung von Einbahnstraßen (blaue Pfeile, die in die Straßenrichtung zeigen), gesperrten Straßen (rote Kreuze) sowie Punkten, an denen das Fahrrad getragen werden muss (drei waagerechte Striche). Temporäre Sperrungen wegen Bauarbeiten werden mit einem Baustellen-Symbol gekennzeichnet.
  Fähren
    Zeichnen von Fähren. Um die Fähren auch in der Suche mit einzubeziehen, muss im Menü von Route suchen der Eintrag Fähren verwenden aktiviert sein.
  Ampeln
    Ampeln werden in die Karte eingezeichnet. Bei der Auswahl einer Route wird die Anzahl der durchgefahrenen Ampeln mit einer ungefähren Verzögerungszeit (15 Sekunden pro Ampel) im Feld rechts von den Icons angezeigt.

    Reine Fußgängerampeln sind in der Datenbasis nur erfasst, wenn sie die Fahrt wesentlich verzögern würden (hohe Fußgängerfrequenz oder stark befahrene Querstraße direkt vor oder hinter der Ampeln). Beschrankte Bahnübergänge sind ebenfalls unter den Ampeln zu finden.

  Outline zeichnen
    Die Straßen werden mit Umrandung gezeichnet.
  Straßennamen
    Die Straßen werden mit Straßennamen gezeichnet. Ist wesentlich langsamer, besonders wenn Font rotation eingeschaltet ist.
  Straßenqualität
    Die Qualität des Straßenbelags wird gezeichnet. Die Kategorisierung siegt wie folgt aus:
    dunkelgrün
      Sehr guter Belag (meist Asphalt). Da die meisten Straßen einen guten Belag haben, wurde auf eine Erfassung dieser Kategorie meist verzichtet.
    hellgrün
      Guter Belag, z.B. gutes Kopfsteinpflaster oder etwas schlechterer Asphalt.
    orange
      Mäßiger Belag, z.B. die meisten Kopfsteinpflasterstraßen.
    rot
      Schlechter Belag (schlechtes Kopfsteinpflaster, unbefestigte Wege).
  Qualitätskategorien
    Hiermit kann das Zeichnen der Qualitätskategorien eingeschränkt werden.
  Sonstige Behinderungen
    Zeichnen von sonstigen Behinderungen (z.B. Fußgängerverkehr).
Landstraßen-Symbol

  Schaltet das Zeichnen von Landstraßen in Berlins Umgebung ein oder aus (Tastatur: `l`).

  Menü: Neben den Standardeinträgen sind noch folgende Einträge vorhanden:

  Outline zeichnen
    Gleiche Funktion wie beim Straßen-Symbol.
  Landstraßen jwd zeichnen
    Zeichnet auch Landstraßen außerhalb Brandenburgs.
  Straßenqualität
    Gleiche Funktion wie beim Straßen-Symbol.
  Sonstige Behinderungen
    Gleiche Funktion wie beim Straßen-Symbol.
Ort-Symbol

  Schaltet das Zeichnen von Orten in Brandenburg ein oder aus (Tastatur: `o`).

  Menü: Neben den Standardeinträgen sind noch folgende Einträge vorhanden:

  Ortsnamen
    Anzeige von Ortsnamen ermöglichen oder unterbinden.
  Kategorie
    In diesem Untermenü kann das Zeichnen von kleineren Orten unterdrückt werden. Beispielorte für die Kategorisierung:

        	6	Berlin
        	5	Potsdam, Brandenburg
        	4	Werder, Kyritz
        	3	Ketzin, Lindow
        	2	Caputh, Göttin
        	1	Krummensee
        	0	Ortsteile wie Wilhelmsdorf, Döthen,
        		Petzow

    Mit "Alle" werden alle Orte gezeichnet. Mit "Auto" werden die Orte abhängig von der Zoom-Stufe gezeichnet.

  Schriftgröße
    Untermenü zum Einstellen einer anderen Schriftgröße für die Anzeige der Ortsnamen. Der Bereich geht von "klein" bis "sehr groß".
  Überlappungen vermeiden
    Hier wird mit einem sehr einfachen Algorithmus versucht, die Ortsbeschriftungen so zu setzen, dass sie sich nicht einander überlappen. Per Voreinstellung ist diese Option ausgeschaltet, weil das Zeichnen der Orte dadurch erheblich verlangsamt wird. Sinnvoll ist diese Option, wenn z.B. die Karte als Bilddatei abgespeichert werden soll.
U-Bahn-Symbol

  Schaltet das Zeichnen von U-Bahnlinien ein oder aus (Tastatur: `u`).

  Menü: Zusätzlich zum Ein-/Ausschalten und Auswählen der U-Bahnlinien können auch U-Bahnhöfe ein-/ausgeschaltet und ausgewählt werden.

  Wenn der Punkt U-Bhf-Namen angeklickt wird, werden die jeweiligen Namen zum U-Bahnhof auf der Karte eingezeichnet. Mit Überlappungen vermeiden wird versucht, die Namen so zu setzen, dass sie sich nicht einander überlappen. Siehe auch die Bemerkung zu Überlappungen vermeiden im Menüpunkt Ort-Symbol.

  Mit VBB-Zone A, VBB-Zone B und in Bau kann das U-Bahn-Netz zusätzlich auf die jeweilige Zone eingeschränkt werden.

S-Bahn-Symbol

  Schaltet das Zeichnen von S-Bahnlinien ein oder aus (Tastatur: `b`).

  Menü: Wie beim U-Bahn-Symbol.

RB-Symbol

  Schaltet das Zeichnen von Regionalbahnlinien ein oder aus (Tastatur: `r`).

  Menü: Wie beim U-Bahn-Symbol.

Gewässer-Symbol

  Schaltet das Zeichnen von Flüssen, Kanälen und Seen ein oder aus (Tastatur: `w`).

  Menü: Neben den Standardeinträgen sind noch folgende Einträge vorhanden:

  Outline zeichnen
    Wie beim gleichnamigen Eintrag beim Straßen-Symbol.
  Namen der Gewässer
    Schaltet das Zeichnen der Gewässernamen ein oder aus.
  Gewässer im Umland zeichnen
    Schaltet das Zeichnen der Gewässer im Umland von Berlin ein oder aus.
  Gewässer in der Stadt zeichnen
    Schaltet das Zeichnen der Gewässer in Berlin ein oder aus.
Flächen-Symbol

  Schaltet das Zeichnen von sonstigen Flächen (Parks, Wälder, Flughäfen) ein oder aus (Tastatur: `f`).

  Menü: Neben den Standardeinträgen sind noch folgende Einträge vorhanden:

  PLZ-Gebiete
    Schaltet das Zeichnen der Berliner Postleitzahlgrenzen ein oder aus. Die PLZ-Datenbank ist noch im Aufbau.
  PLZ-Gebiet auswählen
    Zeigt eine Listbox zum Auswählen einer Berliner Postleitzahl an.
  Grenzen von Berlin
    Schaltet das Zeichnen der Berliner Stadtgrenze ein oder aus.
Kneipen-Symbol

  Schaltet das Zeichnen von Kneipen ein oder aus. Im Menü gibt es die weiteren Punkte:

  Kneipen
    Zeichnet genau wie die Schaltfläche Kneipen in Berlin.
  Kneipe auswählen
    Zeigt eine Listbox zum Auswählen einer Kneipe an.
  Restaturants
    Zeichnet Restaurants in Berlin.
  Restaurant auswählen
    Zeigt eine Listbox zum Auswählen eines Restaurants an.
  Kinos
    Zeichnet Kinos in Berlin.
  Kino auswählen
    Zeigt eine Listbox zum Auswählen eines Kinos an.
  Persönliche Orte
    Zeigt eine Listbox mit persönlich eingetragenen Orten ein. Die Punkte müssen im `bbd`-Format in der Datei `$HOME/.bbbike/personal.bbd` vorhanden sein.
  Sehenswürdigkeiten
    Schaltet das Zeichnen von Sehenswürdigkeiten und anderen markanten Gebäuden in Berlin und Brandenburg ein oder aus.
  Sehenswürdigkeit auswählen
    Zeigt eine Listbox zum Auswählen einer Sehenswürdigkeit an.
  Obst
    Zeichnet Stellen mit öffentlich zugänglichen Obstbäumen.

### NAVIGATION

In der nächsten Gruppe sind die Navigations-Icons:

Vergrößern-Symbol (+)
  Es wird ein kleinerer Ausschnitt angezeigt (mehr Details). Tastatur: `+`.
Verkleinern-Symbol (-)
  Es wird ein größerer Ausschnitt angezeigt (weniger Details). Tastatur: `-`.
Maßstab-Feld
  Dieses Feld zeigt den aktuellen Maßstab, bezogen auf den Bildschirm, an. Die Zahl stimmt nur, wenn die DPI-Zahl des X-Servers korrekt eingetragen wurde (beim X-Server von XFree86 kann die DPI-Zahl mit der Option -dpi verändert werden). Mit Klick auf das Feld kann ein anderer Maßstab angegeben werden und so der Kartenausschnit vergrößert oder verkleinert werden.
Übersichtskarten-Symbol

  Mit diesem Symbol kann die Übersichtskarte von Berlin und Brandenburg ein- und ausgeschaltet werden. In der Übersichtskarte wird der aktuelle Ausschnitt durch ein schwarzes Rechteck gekennzeichnet. Durch Verschieben dieses Rechtecks wird auch der aktuelle Ausschnitt verschoben.

Windrosen-Symbol

  Mit dem Windrosen-Symbol kann man die Karte in die vier Himmelsrichtungen scrollen. Mit der linken Maustaste sind dabei die Schritte kleiner, mit der mittleren größer. Wenn man länger auf die Mitte der Windrose klickt (ca. 2 Sekunden), wird wieder zurück auf die Mitte zentriert. Scrollen kann man auch mit den Scrollbars oder mit den Tasten Pos1 (links), Ende (rechts), Bild nach oben und Bild nach unten (jeweils immer seitenweise) bzw. mit den Cursortasten (feinere Abstufung).

### ROUTEN

Die folgenden Icons kontrollieren die Suche von Routen:

Route suchen

  Mit diesem Schalter kann man den Suchmodus ein- oder ausschalten. Normalerweise ist dieser Schalter nicht aktiviert und es ist immer der Suchmodus eingeschaltet (kann mit der Kommandozeilen-Option -advanced geändert werden).

  Menü:

  Route löschen
    Die aktuelle Route wird gelöscht. Gleiche Funktion wie ein Klick auf die rechte Maustaste oder Drücken auf `Shift-Backspace`.

    Der letzte Punkt der Route wird mit der Backspace-Taste gelöscht.

  Route wiederherstellen (Undo)
    Die zuletzt gelöschte Route wird wiederhergestellt.
  Route aktualisieren
    Die Route wird in Bezug auf Wind und Leistung aktualisiert (sollte nicht notwendig sein).
  gesperrte Straßen beachten
    Wenn dieser Schalter eingeschaltet ist, werden gesperrte Straßen und Einbahnstraßen nicht in die Suche einbezogen.
  Tragen vermeiden
    Stellen, an denen das Rad getragen werden muss, werden nicht in die Suche einbezogen.
  Fähren verwenden
    Fähren werden bei der Suche berücksichtigt.
  Steigungen berechnen
    Höhenangaben werden eingelesen und bei der Berechnung der Leistung werden die Höhenangaben für Steigungen und Gefälle verwendet.
  Ampel-Optimierung
    Bei der Suche einer Route wird für jede Ampel 25m, 50m oder 100m auf die entsprechende Strecke aufgeschlagen (nur für den Suchalgorithmus). Abhängig von der Geschwindigkeit bekommt man für die Verzögerungszeit pro Ampel folgende Tabelle:

    | 15km/h | 20km/h | 25km/h
    --- | --- | --- | ---
    25m | 6s | 5s | 4s
    50m | 12s | 9s | 7s
    100m | 24s | 18s | 14s

    Zu lesen ist die Tabelle wie folgt: wenn man mit 25km/h unterwegs ist und als Aufschlag 100m gewählt hat, würde dies einer Verzögerung von durchschnittlich 14s pro Ampel entsprechen.
  Steigungen/Gefälle zeigen
    Auf der Route liegende Gefälle oder Steigungen über 1% werden angezeigt.
  Startflagge
    Schaltet das Zeichnen einer Startflagge am Routenanfangspunkt ein oder aus.
  Zielflagge
    Schaltet das Zeichnen einer Zielflagge am Routenendpunkt ein oder aus.
Beschreibung der aktuellen Route

  Es wird eine Routenbeschreibung in der folgenden Form angezeigt:

  Länge | Gesamt | Richtung | Straße
  --- | --- | --- | ---
  nach 0.15 km | (0.2 km) |  | Franklinstr.
  nach 0.03 km | (0.2 km) |  | Marchstr.
  nach 0.48 km | (0.7 km) | rechts (80°) auf den | Ernst-Reuter-Platz
  nach 0.28 km | (0.9 km) | halbrechts (30°) in die | Hardenbergstr.
  nach 0.09 km | (1.0 km) | angekommen! |

  Diese Beschreibung kann in eine Datei geschrieben, ausgedruckt oder als Mail verschickt werden.

  Routenbeschreibung in den Palm laden

  Folgendes gilt nur für Unix-ähnliche Betriebssysteme.

  In `$PATH` muss sich mindestens eins der folgenden Programme befinden: `iSiloBSD`, `iSiloLinux` oder `pilot_makedoc`.

  Die Sourcen zu `pilot_makedoc` bekommt man z.B. bei

  - ftp://ftp.forth.org/pub/PalmOS/
  - ftp://ftp.cs.tu-berlin.de/pub/palmtops/pilot/
  - ftp://ftp.cso.uiuc.edu/pub/systems/PalmOS/

  `iSilo` ist ein anderes Format, das einen speziellen Palm-Viewer braucht, der allerdings Hypertextfähig ist. Die Binaries für die Umwandlung findet man unter ftp://ftp.iSilo.com/pub/. Hinweise zum PalmViewer befinden sich auf der Homepage von iSilo.

  Die Übertragung erfolgt automatisch, wenn `pilot-xfer` installiert ist, welches man auf folgenden FTP-Servern bekommt:

  - ftp://ryeham.ee.ryerson.ca/pub/PalmOS
  - ftp://ftp.forth.org/pub/PalmOS/ryerson/
Route zurücksetzen

  Mit Klick auf dieses Icon wird die aktuelle Route gelöscht.

Rückweg-Symbol

  Start- und Zielpunkt der aktuellen Route werden vertauscht.

Koordinaten-Symbol

  Dieses Menü ist normalerweise nicht aktiviert und wird nur zum Editieren der Koordinatendateien benötigt.

Info-Symbol

  Hiermit kann im Informationsmodus umgeschaltet werden. Beim Klick auf Kartenelemente wird jeweils ein Informationsfenster geöffnet. Diese Funktion kann nur intern verwendet werden.

Salesman-Symbol

  In diesem Modus kann die kürzeste Rundreise berechnet werden. Dazu klickt man erst einmal in diesen Modus und wählt alle gewünschten Stationen der Rundreise an. Der erste und letzte Punkt werden fest als Start- und Zielpunkt markiert; alle anderen Punkte werden in ihrer Reihenfolge frei gewählt. Wenn man alle Stationen ausgewählt hat, muss man noch einmal auf das Salesman-Symbol klicken, um die Berechnung zu starten. Es wird darauf hingewiesen, dass bei einer großen Anzahl von Stationen (mehr als acht) die Berechnung sehr lange dauert (der geneigte Leser kann sich die Problematik in der Literatur zum Thema "Problem des Handlungsreisenden" bzw. "Traveling salesman problem" aneignen). Wenn die Berechnung zu lange dauern würde, kann sie mit der Esc-Taste abgebrochen werden (wenn die Berechnung bereits mehr als zu 50% durchgeführt wurde, bekommt man dann noch ein Ergebnis, auch wenn es nicht das optimalste ist).

### DATEIOPERATIONEN

Öffnen-Symbol

  Hiermit kann eine bereits gespeicherte Route wiedergeladen werden. Eine Liste der zuletzt geladenen Routen kann man mit Klick auf die rechte Maustaste erhalten.

  Zusätzlich zum bbbike-Format kann auch eine Track-Datei von GPS-Navigationsgeräten eingeladen werden. Die Datei muss aus Zeilen im folgenden Format bestehen:

        TRK N52 29.072278 E13 15.879650 1998/06/21-08:47:20 1

Speichern-Symbol

  Hiermit kann die aktuelle Route gespeichert werden.

  Menü:

  Mit den Menüpunkten kann man den aktuellen Ausschnitt der Karte als Bilddatei im Postscript-, GIF-, JPEG- oder PPM-Format speichern speichern. GIF-Dateien sind in der Regel am kleinsten. Postscript-Dateien sind vektororientiert und können somit beliebig ohne Qualitätsverluste vergrößert werden. Das Erzeugen von JPEG- und PPM-Dateien ist normalerweise nicht empfehlenswert.

  Folgende Programme müssen für die verschiedenen Formate installiert sein:

                   |Postscript|  GIF  |  JPEG  |  PPM  |
        -----------+----------+-------+--------+-------+
        Ghostscript|    -     |   x   |    x   |   x   |
        pnmrotate  |    -     |   o   |    o   |   o   |
        ppmtogif   |    -     |   x   |    -   |   -   |
        cjpeg      |    -     |   -   |    x   |   -   |

  (x = erforderlich, o = optional, - = nicht erforderlich)

  Da der Postscript-Treiber, der für jede Konvertierung aufgerufen wird, die Schriften sehr klein darstellt, sollte im Orte-Menü der Punkt Sehr große Schrift gesetzt sein. Bessere Ergebnisse erhält man, wenn man die Option -usexwd (xwd als Screengrabber im Sonstiges-Teil des Optionseditors) einschaltet oder direkt mit einem Screengrabber (z.B. xwd oder xv) arbeitet.

Drucken-Symbol

  Ausdruck des angezeigten Kartenausschnitts. Der Ausdruck wird nicht direkt vorgenommen, sondern es wird eine Postscript-Datei erstellt und ein Postscript-Viewer (z.B. gv oder ghostview) aufgerufen, aus dem heraus gedruckt werden kann. Ist kein Postscript-Viewer vorhanden, wird in eine temporäre Datei geschrieben.

  Menü:

  Farbe, Graustufen, Schwarz-Weiß
    Diese Schalter kontrollieren die Farbausgabe des Drucks.
  Landscape, Portrait
    Diese Schalter geben an, ob im Landscape- oder im Portrait-Modus gedruckt werden soll. Im Portait-Modus erscheint die Karte verzerrt.
  auf A4 skalieren
    Wenn dieser Schalter aktiviert ist, wird die Karte so vergrößert, dass ein A4-Blatt vollkommen ausgefüllt ist.
  Legende
    Eine Legende mit Nordpfeil wird mit ausgedruckt.
  Legende rechts statt links
    Die Position der Legende wird geändert.

### WEITERE ICONS

Fahrrad-Symbol (Bikepower)

  Aufruf des Bikepower-Moduls, z.B. zum Eintragen der persönlichen und Fahrrad-Daten. Siehe BikePower.

Options-Symbol (O)
  Falls Tk::Getopt installiert ist, kann hiermit der Options-Editor aufgerufen werden.

  Menü:

  Ausgabe sofort aktualisieren
    Einige Kommandos wie Outline zeichnen oder Straßennamen werden nicht sofort ausgeführt, sondern beim nochmaligen Anwählen des jeweiligen Icons. Um die sofortige Aktualisierung zu erzwingen, kann dieser Schalter gesetzt werden.
  Netz sofort aktualisieren
    Hiermit wird die interne Darstellung des Straßennetzes aktualisiert.
  Alles aktualisieren
    Alle ausstehenden Kommandos werden ausgeführt.
  gedrehte Zeichensätze
    Beim Zeichnen von Straßen- und Gewässernamen werden gedrehte Zeichensätze verwendet. Das Zeichnen wird dadurch verlangsamt, außerdem wird der X-Server zusätzlich belastet.

    Gedrehte Zeichensätze können nicht gedruckt werden.

  Landscape
    Die Karte wird im "Landscape"-Modus angezeigt.
  Portrait
    Die Karte wird im "Portrait"-Modus angezeigt.
  Canvas balloon
    Einschalten eines Balloons (Tooltip-Hilfe) für den Kartenbereich. Im Untermenü kann zwischen kein (kein Balloon), nur Route (Balloon wird nur über einer Route angezeigt) und überall (Balloon wird über allen Kartenelementen angezeigt) ausgewählt werden.
  Farben ändern
    Mit diesem Menüpunkt können die Farben von bbbike geändert werden. Die Änderungen sind nicht permanent.
  Schriftart ändern
    Mit diesem Menüpunkt kann die Schriftart geändert werden. Die Änderung ist nicht permanent.
  Ständige Markierung
    Wenn dieser Punkt eingeschaltet ist, bleibt die Markierung nach einer Auswahl stehen, ansonsten blinkt die Markierung einige Male und wird dann gelöscht.
  Markierung löschen
    Falls Ständige Markierung eingeschaltet ist, kann eine Markierung mit diesem Menüpunkt gelöscht werden.
  Status nach STDERR
    Statusmeldungen werden nicht in der Statuszeile angezeigt, sondern nach stderr umgelenkt.
  Wortreich (verbose)
    Es werden zusätzliche Meldungen nach stderr ausgegeben.
Lautsprecher-Symbol

  Ein-/Ausschalten des zusätzlichen Mausklicks.

Hilfe-Symbol (?)
  Anzeige der Online-Dokumentation (über Tk::Pod oder einen WWW-Browser).

  Menü:

  Legende
    Hiermit wird die Legende ein- und ausgeschaltet. In der Legende werden nur die gerade angezeigten Kartenelemente erklärt. Tastatur: `F1`.
  Maushilfe
    Ein Fenster mit den wichtigsten Mausbefehlen wird angezeigt.
  Kontexthilfe
    Schaltet die Kontexthilfe ein.
  Netscape bbbike.html
    Zeigt die BBBike-Dokumentation in Netscape an.
  Über...
    Zeigt die Version von BBBike, perl und Tk an.
  Busy-Zeiger zurücksetzen
    Es kann vorkommen, dass nach einem Fehler der Busy-Zeiger (Uhr oder Sandglas) nicht zurückgesetzt wurde. Dies kann hiermit nachgeholt werden.
Kontexthilfe-Symbol
  Mit der Kontexthilfe kann die Hilfe für einen Button direkt angefordert werden.
Ende-Symbol
  Hiermit wird BBBike beendet. Temporäre Dateien werden gelöscht und die Liste der zuletzt geöffnet Routen-Dateien in `~/.bbbike/last` gespeichert. Tastatur: `q` oder `Ctrl-C`.

## OPTIONEN

Folgende Kommandozeilenoptionen sind definiert:

        Usage: ./bbbike [options] --[no]str --[no]landstr --[no]sbahn
    	--[no]sbahnhof --[no]ubahn --[no]ubahnhof --[no]rbahn --[no]rbahnhof
    	--[no]wasser --[no]wasserumland --[no]wasserstadt --[no]faehre
    	--[no]flaeche --[no]ort --[no]hs --[no]pp --outline --[no]ampel
    	--lsamaybe --[no]plothoehe --[no]showgrade --[no]strname --[no]ortname
    	--ortkategorie --[no]wassername --rbahnnetz --usbahnnetz
    	--faraway --fast --turbo --lowmem --[no]diplom --[no]mldbm --center
    	--centerc --edit --[no]qualitaetoptimierung --[no]qualitaetwerte
    	--[no]kategorieoptimierung --[no]kategoriewerte --[no]sperre
    	--[no]nichttragen --[no]ampeloptimierung --beschleunigung --[no]wind
    	--[no]bikepwr --resetpower --power --resetspeed --speed --[no]www
    	--[no]wwwmap --[no]wwwcache --cachedir --[no]wwwslow --proxy
    	--[no]fontrot --fontfamily --fixedfontfamily --fontheight --fontweight
    	--[no]balloon --[no]cballoon --cballoonwait --[no]contexthelp
    	--[no]smoothscroll --[no]followmouse --[no]dialog --mapcolor
    	--geometry --visual --scale --[no]overviewwasser --[no]flat
    	--[no]transient --[no]autoscroll --autoscrollspeed --[no]audio
    	--audiotype --coordout --printcmd --[no]gvreuse --[no]server
    	--[no]autosave --[no]stderr --[no]advanced --[no]public -v --version
    	-h

(Auswahl aus den Optionen:)

--center strasse
  Beim Starten wird auf die angegebene Straße zentriert. Beispiel: `--center Dudenstr`
--centerc koord
  Beim Starten wird auf die angegebenen Koordinaten (Format "x,y") zentriert.
--proxy httpproxy
  Angabe eines Proxies für WWW-Verbindungen im Format "http://hostname:port/". Beispiel: `http://www.cs.tu-berlin.de:80/`
routefile
  Beim Starten wird die Routendatei geladen und angezeigt.

## ANFORDERUNGEN

Für das Zeichnen der realen Karten sind folgende Programme aus dem pbmplus- bzw. netpbm-Paket notwendig:

- giftoppm
- pnmscale
- djpeg (aus libjpeg)

Eine komplette Liste der optionalen perl-Module findet man in Bundle::BBBike.

## INSTALLATION

### Allgemein

Die Installationsbeschreibung befindet sich in der Datei README bzw. README.html.

### fvwm2

Um Icons mit dem fvwm2 darstellen zu können, sollte in .fvwm2rc oder .fvwmrc folgende Zeile eingefügt werden:

     Style "Bbbike*"        MiniIcon srtbike_mini.xpm

Die Datei srtbike_mini.xpm sollte in ein Verzeichnis eingefügt werden, wo sich die sonstigen fvwm-Icons befindet (siehe Direktive PixmapPath).

## INTERNA

Verwendete Tags:

Kreuzungen:
  'pp', Koordinate (x,y), undef, pp-$abk
Strecken:
  $abk, Name, $abk-$category, $abk-$index
Strecken (Outline):
  $abk-out, $abk-$category-out
Flächen:
  $abk, Name
Flächen (Outline):
  $abk-out
Haltestellen:
  'p', Hafas-Index
besondere Punkte (Bahnhöfe etc.)
  $abk-[fb]g, Name

  $abk-[fb]g, Koordinate (x,y)

Ampeln
  $abk-fg, Koordinate (x,y), Kategorie
Markierung Punkt:
  'show', 'showp'
Markierung Strecke:
  'show', 'shows'
Ort
  'o', Name
Ort (Bezeichnung)
  'O'
Route, Routenstartpunkt
  'route', route-$nr
Karte
  'map'

## BUGS

Zu viele...

- Entfernungen von manuell erzeugten Strecken werden bei der Wegbeschreibung nicht berücksichtigt, wenn eine Neuberechnung oder Rückweg angewählt wurde. Bei einer Neuberechnung bleibt die Routenbeschreibung immer leer.
- Suche: Das Anwählen eines Punktes innerhalb einer gesperrten Straße ist fälschlicherweise erlaubt.
- Falsche Streckenführung, wenn für das gleiche Streckenstück zweimal der Punkt mit nearest_line_points ausgewählt wurde. Problematisch, wenn ich irgendwann bei den Landstraßen auf lange Streckenstücke (Kilometer werden nur zwischen Kreuzungen und nicht mehr zwischen Kurvenpunkten vorberechnet) umsteigen werde.
- optionadd...*search hat auch Auswirkungen auf den Menüpunkt in Tk::Pod ... wie kann das begrenzt werden? Vielleicht MainWindow statt Toplevel benutzen?
- Kontextsensitive Hilfe auf "km/h" findet beim Tk-POD-Ersatz nicht den richtigen Abschnitt.
- Beim Anzeigen einer Routenbeschreibung, die Landstraßen enthält, wird nichts ausgegeben, wenn Landstraßen nicht gezeichnet sind. => in nearest_points evtl. Landstraßen bei Bedarf nachladen (wie feststellen???).
- Vias verschieben etc.: wenn eine Via-Flagge sich unterhalb eines anderen Symbol befindet, kann es nicht angeklickt werden
- Vias verschieben etc.: Start- und Zielflagge koennen (entgegen den Behauptungen im Menue) noch nicht verschoben etc. werden
- Ab und zu, besonders beim Wechseln zwischen Kartenmodi, reagiert bbbike beim Setzen eines Startpunktes nicht. Aushilfe: einmal "Route löschen" auswählen, danach geht es wieder.

## LIMITATIONS

- Beim Reinzoomen werden die Strecken und Punkte sehr ungenau gezeichnet. Dies könnte behoben werden, wenn alle Punkte beim Zoomen neu gezeichnet werden, aber das würde das Zoomen *sehr* verlangsamen.
- Der Canvas-Postscript-Treiber kann mit rotierten Fonts nichts anfangen.

## TODO

- BikePower: Profile laden/speichern, evtl. auch direkt aus bbbike sichtbar. Erst einmal das Problem mit dem Komma (Linux, Solaris mit LANG gesetzt) lösen.
- Dynamisches Zeichnen (weniger/mehr) von Kartenelementen anhand der Vergrößerung (wird teilweise schon gemacht, z.B. bei get_symbol oder Orte/Kategorien=Auto).
- In Routenbeschreibungen Zeilen wie "Straße A", "...", "Straße A" zu einer Zeile zusammenfassen.
- Bessere Routenbeschreibung für Landstraßen. In der Datenbank "X - Y" nach "(A) - X - V - Y - (B)" ändern, wobei X und Y Start- und Zielort der Strecke ist, (A) und (B) die globale Richtung (größere Städte vor und nachher) und V ein Via-Ort ist. Die geklammerten Orte und V sind optional.

  Möglichst Orte in die Routenbeschreibung aufnehmen. Vielleicht mit nearest_... arbeiten.

- Update über das Internet: gzip/zip-Unterstützung, oder, noch besser, rsync-Unterstützung. Wie richtet man einen rsync-Server ein?
- Telefonbuch-Datenbank (Name): Die Suche ist suboptimal. Bei der Suche von häufigen Nachnamen (Müller, Schulze) wird das Ergebnis begrenzt (200 Namen) und kann mit "Weiter" fortgesetzt werden.
- B2/B3 auf Speed/Power-Labels dokumentieren --- generelles Widget wie Mouse-Info bei xfig?
- evtl. ein Composite-Item fuer canvas erstellen und zwar fuer punkte mit zugehoerigem label. so bleiben die labels im korrekten abstand neben dem punkt
- CGI: Grafik zeichnen: Option (Straßennamen) einführen, mit der eine Imagemap für die Route erstellt wird. Würde Sinn machen, wenn alle Browser onmouseover über Imagemaps handhaben würden.
- Optimierung: bei Landstraßen reine Kurvenpunkte bei der Netzberechnung ignorieren => ist mit make_wide_net bereits implementiert, wird aber nicht verwendet...
- oben/normal/unten: Reihenfolge: RB oder S, dann RB-Bhf oder S-Bhf, und nicht RB, RB-Bhf, S, S-Bhf wie bislang
- Vias werden gesondert dargestellt.
- unlimited Undo?
- Optionen -auchumland und -nurberlin: setzen einige Variablen wie wasserumland, landstr, orte etc.
- search_route: multiple Start/Ziel (Checkbutton)
- Mehr benutzerfreundliche Optionen für die Suche: kürzeste Strecke, schnellste Strecke (in Abhängigkeit von Wind, Steigung/Gefälle, Straßenoberfläche etc.),
- Weiterer Suchmodus: Start- und Ziel bleiben fest, Via kann beliebig verändert werden. Und: Ausgabe von alternativen Routen.
- GUI-build aus package main in eigene Funktionen verlagern
- einheitliche Schalter für das interne Caching von Daten (z.B. ob beim Anklicken von "Ort" die Datei immer neu eingelesen werden soll)
- Portrait/Landscape-Umschaltung: alle Canvas-Daten aktualisieren. Route wird z.Zt. nicht gedreht (evtl. auf @coords verzichten und nur @realcoords verwenden).
- Vernünftige Options-Eingabe in der GUI. Zwischen Startup-Optionen (Zeichnen der Straßen/Punkte) und aktuellen Optionen unterscheiden.
- Kategorisierung der Landstraßen? Gibt es Untersuchungen zur Verkehrsdichte? Vielleicht zweigleisig fahren: Straßenbelag, Verkehrsdichte, offizielle Einstufung (Bundesstraße ...) (ups, ist dreigleisig geworden...)
- choose_ort, S- und U-Bahnen: neben dem Bahnhof die zugehörige(n) Linien anzeigen
- Option: alle Ortschaften entlang einer Route zeigen (evtl. auch die Nähe einstellbar, default 100m)
- Im Umland ist es wahrscheinlich sinnvoller, eine Routenbeschreibung anhand von Punkten (Ortschaften) anstatt Strecken (Straßen) zu machen. Optional eins oder beides zusammen.
- Ab und zu Pfeile zeichnen, damit die Routenführung eindeutig wird (wenn eine Strecke zweimal durchfahren wird).
- Option -centerc auch interaktiv zugänglich machen (ist schon, aber nur mit grauenvollem Interface).
- Das Erzeugen von GIF-Bildern benötigt netpbm, von JPEG-Bildern die JPEG-Distribution und alle brauchen ghostscript. Eine bessere Methode wäre WinPhoto (wenn es korrekt funktionieren würde).
- Suchen nach Alternativen. Es ist schwierig zu entscheiden, wann eine Alternative wirklich eine Alternative darstellt (z.B. ist es kein großer Unterschied, ob man nur rechts oder links um einen Block herum fährt).
- Bei Tix sind Eingabe-Widgets und Listboxen in einem helleren Farbton. Auch hier umsetzen. Wie wendet Tix die Schemes auf die alten Widgets an?
- Evtl: Canvas und Übersichtskarte: Maus ziehen zum Einstellen eines Ausschnitts
- Rückkehr aus dem edit-Modus in den Suchmodus: Cursor wieder umstellen, Start/Zielflagge aktivieren.
- Straßennamen: Labels wie in richtigen Stadtplänen anordnen, also z.B. "Yorckstr.": am Anfang der Straße "Yorck-", am Ende der Straße "str.". Dadurch werden die Namen hoffentlich lesbarer sein. => Ist schon implementiert, aber langsam...
- Da das Zeichnen von Straßennamen so lange dauert: mit Hints arbeiten (z.B. für einige oft verwendete Zoomstufen Koordinaten vorberechnen).
- Beim Vergrößern könnte man ab einer bestimmten Stufe auch die Größe der Straßen/Ortslabel auch mitvergrößern.
- Optional mehr Informationen in der Routenbeschreibung, z.B. Steigungen, Sehenswürdigkeiten in der Nähe, U/S-Bahnstationen ... Kommentare sind schon drinnen.
- Alle in "strassen" vorkommende Straßen sollten auch in "Berlin.coords.data" stehen. Ansonsten gibt es derart PÜrobleme, daß zwar beim CGI in der Liste "Alle Straßen anzeigen" z.B. "Hallesches Tor" angezeigt wird, diese Straße als Eingabe aber nicht akzeptiert wird. Sprich: die Datei data/add_str sollte auf Aktualität überprüft werden und dann möglichst alle fehlende Straßen nach Berlin.coords.data übertragen werden.

  Hatte ich schonmal: [in add_str sollten möglichst KEINE "richtigen" Straßen stehen --- nur Sachen wie Brücken, Tunnel, "Alexanderplatz [zur Grunerstr.]" etc. ansonsten werden sie in bbbike.cgi nicht erkannt, obwohl sie existieren!]

- Server-Mode und Client-Programm: austesten, insbesondere mit KDE, und dann alle Starts auf bbbikeclient umschreiben. Gucken, wie man sowas mit Win32 machen könnte. Server-Beispielcode aus "Mastering Perl/Tk" verwenden.
- CGI-Bilder antialiased erstellen. Ich habe schon was gemacht, ist aber noch nicht optimal. (Was habe ich gemacht? Wie kann man das mit GD machen???)
- In BBBikeDraw.pm nach AREA suchen: Probleme mit den verschiedenen Netscape-Versionen.
- Implementierung der interaktiven Eingabe für einige Straßenlabels, die dann bei "Straßennamen" in bbbike und immer in den vorgefertigten bbbike.cgi-Bildern und konditional in den dynamischen gesetzt werden.
- install.pl: Falls Tk nicht installiert ist und PPM vorhanden ist, mit PPM nachinstallieren. Bei Bedarf eine Reihe weiterer Module nachinstallieren (siehe Bundle::BBBike). Das Installieren mittels Bundle::BBBike funktioniert ab CPAN 1.60 nicht mehr.
- FreeBSD-Port anpassen, so daß install.pl verwendet wird. PLIST von install.pl abhängig machen. -kdeinstall in Abhängigkeit von HAVE_KDE angeben.
- Rotierte Fonts: vielleicht ein Freetype-Modul schreiben, dafür eine Tk::Canvas-Erweiterung und diese in BBBike verwenden? --- Es gibt bereits libgdtf. Dieses zu einem Perl-Modul machen und wenigstens für die statischen CGI-Karten verwenden.
- Neuimplementation der Streckensuche. Dabei soll zwischen Streckenaufwänden und Knotenpunktaufwänden unterschieden werden. Aufwände werden entweder in Längen, in Zeit oder in einem Punktesystem (Kombination aus Zeit, Komfort, Sicherheit etc.) angegeben. Streckenaufwände berechnen sich aus: Länge der Strecke, Gegenwind, Steigungen, Dynamowiderstand, Straßenqualite<auml>t der Strecke, sonstige Hindernisse auf der Strecke, Verkehrsdichte (Staus, Berufsverkehr), Radwege, Maximalgeschwindigkeiten. Knotenpunktaufwänden berechnen sich aus: durchschnittliche oder wahre Ampelwartezeit mit Zeit für die Beschleunigung, durchschnittlicher Zeitverlust an Rechts-vor-links-Kreuzungen und an vorfahrtsgewährenden Kreuzungen (abknickende Vorfahrtsstraßen beachten), Zeitverlust für Abbiegevorgänge (rechts, links), erschwertes Abbiegen (Bordsteinkanten überwinden). Qualitätsbewertungen: Straßenqualität, niedrige Leistungsaufwände (Wind, Steigungen), Nebenstraßen, Parks. Sicherheitsbewertungen: Nebenstraßen vor Hauptstraßen bevorzugen, Radwege ja/nein. In (C) und Perl implementieren.

      Analyse eines Streckenabschnitts:

       * Feststellen der LE<auml>nge

       * Feststellen der Windrichtung und -geschwindigkeit

       * Feststellen der Steigung

       * Verluste durch StraE<szlig>enqualitE<auml>t

       * Korrigieren auf Maximalgeschwindigkeit (max. Trittfrequenz)

       * anhand der aktuellen Leistungswert Zeit berechnen

      Analyse einer Kreuzung:

       * Feststellen, ob es um einen Abbiegevorgang handelt und ggfs. Zeit
         fE<uuml>r den Abbiegevorgang abziegen

       * Feststellen, ob eine Ampel vorhanden ist, und eine
         durchschnittliche Zeit abziehen.

       * Feststellen, ob die Vorfahrt beachtet werden muE<szlig>

- cgi-Version: Linux+Netscape: Probleme mit Cookies (Einstellungen) => noch immer?
- wenn GD nicht installiert ist, sollte die gif-Datei gelöscht werden und
  eine Fehlermeldung ausgegeben werden (?)
- Vergrößerung der Schrift beim Zoomen
- Speichern von Grafiken: Extension erzwingen (?), Überschreiben testen und verhindern
- evtl. mit fork eine Warteschleife implementieren. Wenn es nicht mit Tk (threads!) geht, dann vielleicht mit X11::Protocol oder mit xterm?
- Kurzhilfe: kann man feststellen, ob man eine 2/3-Tastenmaus hat?
- Vielleicht Windchill-Temperatur zusätzlich anzeigen.
- Optimierung: Beim Ausschalten von Outline oder Straßennamen muß nicht alles neu gezeichnet werden.
- Meta-Choose-Dialog, das alle Choose-Dialoge vereinigt. Vielleicht Tk::SmartListbox verwenden?
- wettermeldung2 mit fork/spawn/threads aufrufen
- Neue Version von wettermeldung2 schreiben, die SYNOP-Information verwendet.
- Wenn während eines WWW-Fetches die Verbindung gekappt wird, hängt BBBike vollkommen. Gesehen bei Win32. Vielleicht mit Timeouts arbeiten (kann das LWP?) und häppchenweise holen. Oder noch besser: fileevent verwenden! ... LWPng kann Event-Handling. Leider ist das Event-Handling noch inkompatibel mit Tk. Auch für wettermeldung2 mit LWPng arbeiten. => Vielleicht das hochgelobte POE verwenden.
- Für das Drucken von Text: evtl. auch Netscape und print-Methode verwenden (?). Für Unix könnte man eine start netscape, netscape remote openFile/print-Kombination verwenden. Bei Windows? Netscape könnte man auch zum Mailabschicken verwenden, über mailto. Evtl. ein Modul für Netscape schreiben, daß die ganzen remote-Kommandos verwendet. Hier eine Liste:

  %s: usage: OpenURL(url [ , new-window|window-name ] ) %s: usage: OpenFile(file) %s: usage: print([filename]) %s: usage: SaveAS(file, output-data-type) %s: usage: SaveAS(file, [output-data-type]) %s: usage: mailto(address ...) %s: usage: find(string) %s: usage: addBookmark(url, title) %s: usage: htmlHelp(map-file, id, search-text)

  Mit Xprt für X11 experimentieren (doc lesen).

- Ein LightWeight-Modul (CanvasMap) schreiben. Vielleicht irgendwann alles auf dieses Modul umschreiben.
- PerlPlusPlugin ausprobieren und BBBike dafür portieren. Sachen, die mir dafür einfallen: Ich brauche ein open(), das über LWP funktioniert (vielleicht mit LWPng?). Ich brauche ein hyperuse und hyperrequire. Z.B.

          @HYPERINC = qw("http://user.cs.tu-berlin.de/~eserte",
                         "file://tmp");
          hyperuse BBBikeEdit;
          hyperrequire Strassen;

  Irgendwo habe ich so etwas schon implementiert gesehen ... suchen!

- Bei einem Resize muß auch das Progress-Canvas angepasst werden.
- BBBikeContext.pm schreiben: gibt alles aus, was ich so brauche: $os, Strassen-Objekte, Crossings, Netze etc. Caching bei Belieben einstellen, evtl. mit Ties arbeiten, die sich selbst umwandeln oder durchgängig mit Methoden. AutoLoading verwenden.
- Folgende Radwege in der Landsberger Chaussee können nicht dargestellt werden, weil sich die Straße in landstrassen-orig und nicht in strassen-orig befindet.

  14389,5916 14348,5906 radweg radweg 14545,5953 14389,5916 radweg radweg 14844,6029 14545,5953 radweg pflicht 15283,6150 14844,6029 radweg pflicht

- Speicheroptimierung.

      Folgende Symbole kommen im Dump von Devel::Symdump vor und
      bedürfen Klärung (warum, woher, benötigt?):

          * English::*
          * DB::args
          * Tk::Pretty::*
          * re::*
          * DirHandle::*

      Ein minimales System kann auf Folgendes verzichten:

          * Fahrinfo::*
          * BikePower::*
          * Devel::Peek::*
          * EasySound::*
          * Karte::Berlinmap1997::*
          * Karte::Berlinmap1999::*
          * wettermeldung2::*
          * BSD::Resource::*
          * Hyper::*
          * Plugin::*

      Evtl. auch:

          * Tk::DragDrop::*
          * Tk::CanvasBalloon::*
          * Tk::ContextHelp::*
          * Tk::Dialog::* (nach STDERR umlenken, wenn nur OK-Button erscheint)
          * Tk::ErrorDialog::* (Default: nach STDERR umlenken)
          * Tk::FireButton::*
          * Tk::SRTProgress::*
          * Tk::UnderlineAll::*

- 3D-Darstellung von Berlin (z.B. vier versetzte Flächen, die oberste in der Hintergrundfarbe und die anderen in der Schattenfarbe).
- bbbike.cgi: Eine "Neu"-Subroutine, die jeweils die neuen Features der Version anzeigt. Vielleicht auch eine "Neu"-History, die automatisch aus den alten Einträgen oder aus dem RCS-Log aufgebaut wird?
- Cgiinfo in cgi2.t funktioniert leider nicht, weil openURL als zweiten Parameter nur true oder false zuläßt. Workaround: Schreiben eines Multiplexers, der per Javascript neue Fenster öffnet.
- Soll ich mit Scopes arbeiten? Scopes wären: Berlin, Brandenburg, jwd und würden sich auf Straßen, Orte und Gewässer beziehen.
- Kann ich mapserv irgendwie einsetzen?
- Bike+Ride integrieren. Das würde in eine unterbrochene Route resultieren, deren Fahrzeiten addiert würden. Zusätzlich käme noch eine abgeschätzte Zeit für die Benutzung des Verkehrsmittels (Fahrzeit + Zusteigzeit + Umsteigezeiten). Eine Verbindung zu Fahrinfo wäre genial.
- Aufteilung des Routen-Menüs. In das zweite Menü kommen alle Punkte, die die Ausgabe beeinflussen: Ausschnitt anpassen, Steigungen zeigen, Streckenprofil, Start/Zielflagge, Routenfarbe (+ Einfärbung Wind/Leistung/Qualität/etc.), Kalorienverbrauch
- Berechnen des Straßennetzes: Ausblenden des Canvas nicht notwendig
- GfxConvert evtl. mit Tk-Photo-Funktionen definieren, wenn die externen Programme nicht verfügbar sind. Am besten wäre natürlich noch immer ein NetPBM-Modul.

  Photo-Zooming: -zoom x -subsample y == -zoom x/y oder umgekehrt

- Radwegekategorien erweitern: RW(kategorie)(qualitaetskategorie). Also heißt dann z.B. RW00: Radweg mit sehr guter Qualität und RW13: benutzungspflichtiger Radweg mit sehr schlechter Qualität. Bei den restlichen Kategorien kann man sich die Erweiterung sparen, da dort die Qualitätskategorie der Straße gilt. Default-Qualitätskategorie für Radwege sei 1 (gute Qualität).
- ShAddRecentDoc geht unter Win98 nicht?
- Drag'n'drop und open's sollten vielleicht etwas mit .lnk-Dateien unter Win* anfangen können...
- outline_text bei draw_text_intelligent verwenden
- Beim intelligenten Zeichen von Ortsnamen bietet sich ein Scanline-Vorgang von rechts nach links an. Somit vermeidet man Sachen wie Slubice * * Frankfurt

  Schwierig, wenn gleichzeitig das Ergebnis aus sortbycat beachtet werden soll (Multipass? Langsam!)

- Bei der Ausgabe der Straßennamen an der Route sollte ein aehnlich intelligentes Verfahren angewendet werden. Vielleicht kann bei Routen, die von W nach O verlaufen, die Strassennamen erstmal links vom Punkt eingezeichnet werden und umgekehrt.
- Bei -usbahnnetz sollte folgendes gehen: Routenbeschreibung mit Bahnhöfen statt Strecken (davon kann auch die Routenbeschreibung auf dem flachen Land profitieren!) ... Und noch schöner: eine Kombination von U/S-Bahn und Straßennetz (für Fußwege bzw. Bike+Ride).
- Optional eine kürzere Beschreibung. Diese würde nur folgendes enthalten: Straßen und Abbiegevorgänge. Wenn man auf einer Straße nicht abbiegen muss, dann werden verschiedene Straßennamen in einer Liste zusammengefasst.

  Zusätzlich noch eine Druckausgabe. Auch beim CGI. Wann wird die Ausgabe endlich vereinheitlicht?

- bei Windows (oder allgemein: bei ClickToFocus) ist es unangenehm, dass neue Fenster den Focus klauen. Allerdings ist es ohne Maus eher angenehm, dass neue Fenster den Focus bekommen. Wie soll man also verfahren?
- Pilot.pm installieren, BBBikePalm dafür erweitern
- user editing: negative/positive präferenzen mit b2/b3 lange druecken setzen
- bugfix: optmenu in optimierungseinstellungen korrigieren (Fehler beim Tk Widget)
- lange hänger bei vielen Canvas-Elementen ueberpruefen
- MDI-Interface entwickeln mit:
  * map-widget
  * start/zieleingabe
  * einfaches opt-einstellungs-fenster
  * routenbeschreibung Siehe Tk::WindowManager => entwickle ich nicht mehr weiter, dafür gibt es aber ein neues Tk::MDI-Widget
- Andreas' Labeling-Algorithmus verwenden
- CDROM-Probleme:

       - tk:underlineall.pm warnings in 111,114,157,178
       - win, print: fehlermeldung nicht auf stdout zeigen. start_cmd wird ohne progexe gestartet, wenn der ps-viewer gestartet weden soll. dito beim browser
       - tk::getopt: pane verwenden. ab 800.015 eh standard
       - optionen besser gruppieren. z.b. audio irgendwo unterbringen
       zwei Reihen mit Notebook?
       - "outline" -> umrandungen
       sonstige anglizismen herausnehmen
       - Bei Win98 geht anscheinend perlglob nicht-> Probleme mit Ncopy
       - unix/kde-installation: statt symlink von /usr/local/bin besser shell-skript mit richtigem perl-path erstellen. wenn /usr/local/bin nicht im PATH, dann evtl. /usr/bin nehmen. wie macht es autoconf bei KDE? kann ich was von autoconf verwenden?
       Env-loesung ist auch OK
       - menuepunkt fuer taste x
       - layereditor hat bei win95 einen absturz verursacht, und zwar beim local drag (NT mit 800.015 selbst compiliert auch? nur bei followmouse?)
       - winddaten eingeben als menuepunkt
       - eigenes popup mit popover nicht fuer win32 verwenden - da ist eh clicktofocus aktiv. Bei KDE auch? Gibt's ne property, die die wm -einstellung anzeigt?
       - set ziel vom str-dialog setzt anscheinend das via-array nicht
       - shift-click vom start aus geht nicht
       - besseres cdrom.pl schreiben. Sowas wie cons, nur fuer das kopieren. Oder mkisofs beibringen, das er die richtigen sachen ohne kopieren erzeugt

- BBBike - Externalization, towards to v3.0

       Allgemein: Aenderungen nur durchfuehren, wenn sie entweder trivial und unaufwendig sind oder zwingend fuer die anstehenden Portierungen sind.

       - data: neue Verzeichnishierarchie
       Vorschlag: city "_" iso-country-abbrev. Beispiel: berlin_de, muenchen_de, san_francisco_us
       - oder: derzeitige datadir-praxis beibehalten: z.b. data_berlin_de
       - in den Geography-Modulen: Iconleiste (welche Buttons sind ueberhaupt definiert? Welche zugehoerigen Menues?)
       - Iconleiste wird stadtspezifisch erzeugt (e.g. Gibt es U-/S-Bahnen?)
       - Iconbilder werden stadt/landtpezifisch benannt. Beispiel: ubahn.gif => ubahn_de.gif
       - Umland ja/nein. 3-stufig (mit jwd?), "Haltestelle" oder "Haltestelle/Ort"?
       - Aufgeben des manuellen LandstraE<szlig>enzeichnens (und jwd etc.)
       - generell: vielleicht ein gesondertes sub symbolframe fE<uuml>r jeden Ort?
       - oder: XML-Beschreibungsdatei fE<uuml>r die Properties?
       - automatisches Erstellen der Properties in Geography.pm anhand der existierenden data-Dateien
       - Ampeln sind vielleicht nicht E<uuml>berall erfasst
       - winddaten kE<ouml>nnen vielleicht nicht E<uuml>berall E<uuml>ber das web geholt werden
       - StraE<szlig>en: nicht alle Daten sind E<uuml>berall erfasst (Kategorien, Radwege, QualitE<auml>t, ...)
       - StraE<szlig>enauswahl: PLZ-Liste, CDROM?
       - etc. So gut wie alle daten kE<ouml>nnen vorhanden sein oder nicht
       - transpose-Funktion ist ortabhE<auml>ngig, BBBikeTranspose als Verteiler
       - map-button sollte berlin-spezialitE<auml>t bleiben
       - check-skript: sind alle benE<ouml>tigten Variablen definiert (in den Geography-Modulen)
       - einige devel-skripte sind auch ortabhE<auml>ngig
       - vielleicht Erstellung eines devel-Verzeichnisses mit nE<ouml>tigen skripten aus miscsrc und vielleicht misc. Insbesondere kritische Sachen wie den eplus-Roboter herausnehmen
       - verkleinerung fE<uuml>r overview-mode sollte einstellbar sein
       - anhand von $0 erkennen, welcher Ort verwendet eerden soll. Gut fE<uuml>r CDROM-Installationen
       - edit vs. normal mode: bei anderen stE<auml>dten keinen unterschied machen (transpose entsprechend setzen) oder gps-koordinaten im edit-mode verwenden
       - CGI: imagedir ortsunabhE<auml>ngig machen
       - caches ortsunabhE<auml>ngig machen

       * evtl. Programm zum Suchen von Überschneidungen schreiben (mit
         Ausnahmedatei für Brücken)

- Bookmarks in choose_ort und möglichkeit, per dnd neue bookmarks zu definieren, um als straßenauswahl dienen zu können
- weiter:

       - bei Http.pm vielleicht IO::Select::can_read/write verwenden
       - bbbike.cgi: Installation auf rapidsite testen => automatisierten Test a la wap_test schreiben, gleiche Features erkennen und verallgemeinern
       - BBBike: feinere Aufteilung der Gegenwind- etc. Strecken (fließend von rot bis grün)
       - BBBike: "Window intelligent positionieren" implementieren

       - BrowserInfo.pm: von Roxen's SUPPORT lernen:
       SUPPORTS: font tables cookies javascript backgrounds backgrounds autogunzip netscape_javascript tablecolor ssl frames mailto forms images pull push java imagealign gifinline pjpeginline fontcolor some_html3 jpeginline

       - bbbike/c: neues pmake funktioniert unter Suse nicht =>
       gmake benutzen? grrr...

       - Verwendung von Tk::App::Reloader. Scheint allgemein zu funktionieren.

-       Aus der Radzeit 3/2001, Seite 8-9:
        Radwege: Verbundsteine kontra Asphalt
        [...]
        Der Energieverbrauch beim Rad fahren (durchschnittliche
        Geschwindigkeit 15 km/h) auf Asphalt in StraE<szlig>enqualitE<auml>t
        betrE<auml>gt ca. 1000 Joule und auf Kopfsteinpflaster ca. 2200
        Joule jeweils pro 100 Meter. Bei asphaltierten Radwegen mit
        schlechter LE<auml>ngsebenheit liegt dieser Wert zwischen 1200 bis
        1400 Joule, bei neu gebauten Radwegen mit gefasten Verbundsteinen
        bei ca. 1400 Joule und bei wassergebundenen Decken zwischen 1600 und
        2000 Joule pro 100 Meter. Da der Einsatzbereich des Fahhrades als
        Verkehrsmittel umgekehrt proportional zum Quadrat des
        Energieverbrauchs ist, ist dieser bei Radverkehrsanlagen in guter
        StraE<szlig>enqualitE<auml>t rund doppelt so groE<szlig> wie bei
        Radwegen mit Betonverbundsteinen und etwa viermal so groE<szlig> wie
        bei wassergebundenen Radwegen. Quelle: UPI-bericht Nr. 41, 3. erw.
        Auflage August 1999 E<quot>Entwicklung und potentiale des
        Fahrrad-VerkehrsE<quot> Seiten 18 bis 20

-       Verkehrs-/Umweltverwaltung wegen Emissionen:
        ReulenbE<auml>cker
        IX D2
        Tel: 9025 2391
        Raum 8.020
        BrE<uuml>ckenstr. Mitte

-      - Farbeditor: background setzen sollte vielleicht Canvas-bg ignorieren bzw. eigener Auswahlpunkt für Canvas-bg. Vielleicht *alle* Farben änderbar machen --- aber dann muss man die Änderungen auch abspeichern können (schwer, unwichtig)

       - Straßennamen: zeichnen on demand? besserer Algorithmus? TIP mit -angle ausprobieren? (schwer)

       - intelligenterer Markieralgorithmus: nicht Zentrieren, sondern nur verschieben, falls: durch andere Fenster verdeckt (nur eigene Toplevels beachten) oder weniger als 10% (5%) oder .... Pixel vom Rand oder einem anderen Toplevel entfernt. In diesem Fall den Ausschnitt auch nur minimal verschieben, bis sichtbar (schwer)

       - Idee von effizienten Loop/Callback-Mechanismus: ein callback kann entweder alleine aufgerufen werden (mit nötiger Initialisation + Cleanup) oder in eine beliebige Loop eingebettet werden (Inline, Initialisation + Cleanup außerhalb der Loop). Beliebig viele Callbacks können kombiniert werden (Stacking). Verwendung von B::Deparse? (sehr schwer, API und Ausführung erst einmal ausdenken)

       - Bug: beim Umschalten von einem anderen Mode in den Suchmode muss zuerst einmal ein Reset ausgeführt werden, bevor Start gesetzt werden kann (mittel)

       - Start/Ziel verschiebbar machen (mittel)

       - Start/Ziel löschbar machen (mittel)

       - Optimierung bei vias löschen/verschieben/einfügen: nur geändertes Stück berechnen (delete=strecke vor-nach; move=beide strecken vor/nach; insert: neue zwei strecken) (mittel-schwer, nur, wenn ich das via-feature häufiger nutze)

       - bbbike.cgi: kommentar-spalte: bei münchen schiebestrecken ausweisen, evtl. auch radwege. in berlin vielleicht alles mögliche ausgeben --- ausprobieren

## KOMPATIBILITÄT

BBBike wird zur Zeit unter FreeBSD 4.6 mit perl 5.00503/5.6.1/5.8.0 und der neuesten Perl/Tk-Version (z.Zt. 800.024) entwickelt.

Testläufe wurden und werden von Zeit zu Zeit auf Windows 95/98, Windows NT 4.0, Solaris/Sparc 7 und Linux gefahren. Dabei werden meistens auch die aktuellen Stable-Versionen von Perl und Tk verwendet.

Es wird versucht, auch zu den älteren Versionen perl 5.00404 und Tk 402.004 kompatibel zu bleiben. Dabei bleiben aber einige Features (z.B. der Splash-Screen, vernünftiges Zeichensatzhandling und einige Keybindings) auf der Strecke. Die Grundfunktionalität ist aber vorhanden.

Freiwillige zur Portierung von Perl/Tk auf die Macintosh-Plattform werden gesucht :-)

## ANERKENNUNG

TBD

## AUTOR

Slaven Rezic - slaven@rezic.de

## PREREQUISITES

Tk.

## COREQUISITES

Tk::FireButton, Tk::Pod, LWP::UserAgent, Mail::Send and others.

## SEE ALSO

BikePower(3), Tk(3), perl(1).

[Top]