Bahnprojekt

Unterstützen

Im Fahrzeitrechner soll das gesamte Streckennetz von DB Netz berücksichtigt werden.
Dazu benötige ich Hilfe.

Eingabe
Ausgabe
Quellen
Pseudocode


Eingabe

Verbindungssuche

Start, Ziel und Zwischenhalte als Text oder Auswahl auf Karte

Ankunfts-/Abfahrtstafel

Auswahl eines Links zu

Bahnhofslink

Auswahl eines Links zu

Angaben zum Zug

km/h-Faktor bedeutet mit viel Prozent der Streckenhöchstgeschwindigkeit gerechnet werden soll. Der km/h-Faktor soll für zwei Züge angegeben werden. Die restlichen Angaben werden vom anderen Zug übernommen.

Angaben zur Strecke

Wenn möglich, Auswahl, ob

angezeigt werden sollen.


Ausgabe

Verbindungssuche

Anzeige der möglichen Verbindungen inklusive durchfahrener Betriebsstellen (als Tabelle und/oder auf einer Karte)

Ankunfts-/Abfahrtafel

Bei Stationen Link zur ausgewählten Ankunfts-/Abfahrtafel

Bahnhofslink

Bei Stationen Link zu bahnhof.de oder Karte;
bei sonstigen Betriebsstellen Link zu Karte

Angaben zum Zug

Fahrzeitberechnung anhand der Angaben zum Zug.
Anzeige wann welche Betriebsstelle erreicht wird.

Angaben zur Strecke

Anzeige der ausgewählte Angaben zur Strecke


Mögliche Quellen

Karten

Schienenverkehrsnetz gemäß INSPIRE der DB Netz AG
Geoinformationen zu Strecken des Schienenverkehrsnetzes
Geoinformationen zu Kilometern des Schienenverkehrsnetzes
Geoinformationen zu den Betriebsstellen des Schienenverkehrsnetzes
Open Railway Map
BRouter

Betriebsstellen

Betriebsstellenverzeichnis (DS 100)
Betriebsstellen-API
Stationsdaten
StaDa - Stationsdaten (API)
Stationsdaten (RNI)


Pseudocode

// Angaben von der Eingabe

// Verbindungssuche
$start = Start aus der Eingabe;
$ziel = Ziel aus der Eingabe;
$zwischenhalteins = Zwischenhalt 1 aus der Eingabe;
$zwischenhaltzwei = Zwischenhalt 2 aus der Eingabe;
$elektrifiziert = Elektrifizierte Strecken aus der Eingabe;

// Ankunfts-/Abfahrtstafel
$tafel = Ankunfts-/Abfahrtstafel aus der Eingabe;
// Link zu marudor.de: marudor.de/[Bahnhof] oder [DS100]
// Link zu dbf.finalrewind.org: https://dbf.finalrewind.org/[Bahnhof] oder [IBNR] oder [DS100]
// Link zu bahn.de: https://reiseauskunft.bahn.de/bin/bhftafel.exe/dn?rt=1&start=1&input=[Bahnhof]

// Bahnhofslink
$bahnhofslink = Bahnhofslink aus der Eingabe;
// Link zu bahnhof.de: https://www.bahnhof.de/service/search/bahnhof-de/3464932?query=[Bahnhof]
// Link zu Open Street Map: https://www.openstreetmap.org/search?query=[Bahnhof] oder [Betriebsstelle]
// Link zu Google Maps: http://maps.google.de/maps?f=q&hl=de&q=[Bahnhof] oder [Betriebsstelle]

// Angaben zum Zug
$zughoechstgeschwindigkeit = Höchstgeschwindigkeit aus der Eingabe;
$zugbeschleunigung = Beschleunigung aus der Eingabe;
$bremsverzoegerung = Bremsverzögerung aus der Eingabe;
$kmhfaktor = Prozent der Streckenhöchstgeschwindigkeit aus der Eingabe;
$kmhfaktorzugzwei = Prozent der Streckenhöchstgeschwindigkeit aus der Eingabe;

// Angaben zur Strecke
$anzeigestreckennummer = Streckennummer aus der Eingabe;
$anzeigestreckenhoechstgeschwindigkeit = Streckenhöchstgeschwindigkeit aus der Eingabe;
$anzeigestreckenkm = Strecken-Kilometer aus der Eingabe;

// Ausgabe

Ausgabe auf einer Karte
?

// Ausgabe in Tabelle

Tabellenanfang
Spalte ab/an
Spalte Betriebsstelle
Spalte Uhrzeit Zug 1
Spalte Uhrzeit Zug 2
// Streckennummer anzeigen?
if ($anzeigestreckennummer == "ja")
{
Spalte Streckennummer;
}
// Streckenhöchstgeschwindigkeit anzeigen?
if ($anzeigestreckenhoechstgeschwindigkeit == "ja")
{
Spalte Streckenhöchstgeschwindigkeit;
}
// Strecken-Kilometer anzeigen?
if ($anzeigestreckenkm == "ja")
{
Spalte Strecken-Kilometer;
}

// Start in Tabelle anzeigen

$tafel + $start;
$start;
$uhrzeit;
// Streckennummer anzeigen?
if ($anzeigestreckennummer == "ja")
{
Streckennummer;
}
// Streckenhöchstgeschwindigkeit anzeigen?
if ($anzeigestreckenhoechstgeschwindigkeit == "ja")
{
Streckenhöchstgeschwindigkeit;
}
// Strecken-Kilometer anzeigen?
if ($anzeigestreckenkm == "ja")
{
Strecken-Kilometer;
}

// Verbindungssuche
???

// While-Schleife
while (Betriebstellen auf der Strecke aus der Verbindungssuche)
{

// Angaben von der Strecke

// Aktuelle Betriebsstelle
$aktuellebetriebsstelle = Betriebsstelle;
// Prüfe, ob aktuelle Betriebsstelle ein Bahnhof ist
???

// Streckennummer
$streckennummer = Streckennummer;

// Strecken-Kilometer
$streckenkm = Strecken-Kilometer;

// km/h-Vergleich
$kmhvergleich = Vergleich aktueller Streckenhöchstgeschwindigkeit mit der von dem Abschnitt davor;

// Entfernung
$entfernung = Länge des aktuellen Streckenabschnitts;

// Streckenhöchstgeschwindigkeit des aktuellen Abschnitts speichern
$streckengeschwindigkeit = Streckenhöchstgeschwindigkeit;

// Zug 1

// Höchstgeschwindigkeit vom Zug 1 im aktuellen Abschnitt
$zugeinsgeschwindigkeitaktuell = $streckengeschwindigkeit * $kmhfaktor;

// Prüfe Geschwindigkeit des Zuges 1
if ($zughoechstgeschwindigkeit > $zugeinsgeschwindigkeitaktuell)
{
$zugeinsgeschwindigkeit = $zugeinsgeschwindigkeitaktuell;
}
else
{
$zugeinsgeschwindigkeit = $zughoechstgeschwindigkeit;
}

// Zug 2

// Höchstgeschwindigkeit vom Zug 2 im aktuellen Abschnitt
$zugzweigeschwindigkeitaktuell = $streckengeschwindigkeit * $kmhfaktorzugzwei;

// Prüfe Geschwindigkeit des Zuges 2
if ($zughoechstgeschwindigkeit > $zugzweigeschwindigkeitaktuell)
{
$zugzweigeschwindigkeit = $zugzweigeschwindigkeitaktuell;
}
else
{
$zugzweigeschwindigkeit = $zughoechstgeschwindigkeit;
}

// Beginn Fahrzeitberechnung

// Entfernung gleich 0?
if ($entfernung == 0)
{
$zugeinszeit == 0;
$zugzweizeit == 0;
}

// Aktuelle Geschwindigkeit größer als von der Zeile davor?
if ($kmhvergleich == "mehr")
{
// Wenn aktuelle Geschwindigkeit größer als von der Zeile davor

// Zug 1

// Phase 1: Beschleunigung
$zugeinsbeschleunigungszeit = $zugeinsgeschwindigkeit /(3.6 * $zugbeschleunigung);
$zugeinsbeschleunigungszeit = round ($zugeinsbeschleunigungszeit;0);
$zugeinsbeschleunigungsweg = (($zugeinsgeschwindigkeit/3.6)*($zugeinsgeschwindigkeit/3.6))/1000;

// Phase 2: Restweg
$zugeinsrestweg = $entfernung - $zugeinsbeschleunigungsweg;
$zugeinsrestwegzeit = $zugeinsrestweg / ($zugeinsgeschwindigkeit/3.6);
$zugeinsrestwegzeit = round ($zugeinsrestwegzeit;0);
$zugeinszeit = $zugeinsbeschleunigungszeit + $zugeinsrestwegzeit;

// Zug 2

// Phase 1: Beschleunigung
$zugzweibeschleunigungszeit = $zugzweigeschwindigkeit /(3.6 * $zugbeschleunigung);
$zugzweibeschleunigungszeit = round ($zugzweibeschleunigungszeit;0);
$zugzweibeschleunigungsweg = (($zugzweigeschwindigkeit/3.6)*($zugzweigeschwindigkeit/3.6))/1000;

// Phase 2: Restweg
$zugzweirestweg = $entfernung - $zugzweibeschleunigungsweg;
$zugzweirestwegzeit = $zugzweirestweg / ($zugzweigeschwindigkeit/3.6);
$zugzweirestwegzeit = round ($zugzweirestwegzeit;0);
$zugzweizeit = $zugzweibeschleunigungszeit + $zugzweirestwegzeit;

}

// Aktuelle Geschwindigkeit kleiner als von der Zeile davor?
if ($kmhvergleich == "weniger")
{
// Wenn aktuelle Geschwindigkeit kleiner als von der Zeile davor

// Zug 1

// Phase 1: Bremsen
$zugeinsbremszeit = $zugeinsgeschwindigkeit/(3.6 * $bremsverzoegerung);
$zugeinsbremszeit = round($zugeinsbremszeit,0);
$zugeinsbremsweg = (($zugeinsgeschwindigkeit/3.6)*($zugeinsgeschwindigkeit/3.6)/(2 * $bremsverzoegerung))/1000;

// Phase 2: Restweg
$zugeinsrestweg = $entfernung - $zugeinsbremsweg;
$zugeinsrestwegzeit = $zugeinsrestwegzug/($zugeinsgeschwindigkeitzug/3.6);
$zugeinsrestwegzeit = round ($zugeinsrestwegzeit,0);
$zugeinszeit = $zugeinsbremszeit + $zugeinsrestwegzeit;

// Zug 2

// Phase 1: Bremsen
$zugzweibremszeit = $zugzweigeschwindigkeit/(3.6 * $bremsverzoegerung);
$zugzweibremszeit = round($zugzweibremszeit,0);
$zugzweibremsweg = (($zugzweigeschwindigkeit/3.6)*($zugzweigeschwindigkeit/3.6)/(2 * $bremsverzoegerung))/1000;

// Phase 2: Restweg
$zugzweirestweg = $entfernung - $zugzweibremsweg;
$zugzweirestwegzeit = $zugzweirestwegzug/($zugzweigeschwindigkeitzug/3.6);
$zugzweirestwegzeit = round ($zugzweirestwegzeit,0);
$zugzweizeit = $zugzweibremszeit + $zugzweirestwegzeit;

}

// Gleiche Geschwindigkeit
if ($kmhvergleich == "gleich")
{

// Zug 1

$zugeinszeit = ($entfernung / $zugeinsgeschwindigkeit) * 60 * 60;
$zugeinszeit = round ($zugeinszeit,0);

// Zug 2

$zugzweizeit = ($entfernung / $zugzweigeschwindigkeit) * 60 * 60;
$zugzweizeit = round ($zugzweizeit,0);

}

// Fahrzeit

// Zug 1

$zugeinsaddierezeit = $zugeinsgesamtzeit ."+" . $zugeinszeit . " seconds";
$zugeinsgesamtzeit = date('H:i:s', strtotime($zugeinsaddierezeit, strtotime($uhrzeit)));
$zugeinszeitausgabe = $zugeinsgesamtzeit;

// Zug 2

$zugzweiaddierezeit = $zugzweigesamtzeit ."+" . $zugzweizeit . " seconds";
$zugzweigesamtzeit = date('H:i:s', strtotime($zugzweiaddierezeit, strtotime($uhrzeit)));
$zugzweizeitausgabe = $zugzweigesamtzeit;

// Ende Fahrzeitberechnung

// Ausgabe

if ($aktuellebetriebsstelle = Bahnhof)
{
$tafel + $aktuellebetriebsstelle;
}
else
{
// leere Spalte;
}

// Spalte Betriebsstelle: Aktuelle Betriebsstelle ist Bahnhof
if ($aktuellebetriebsstelle = Bahnhof)
{
$bahnhofslink + $aktuellebetriebsstelle;
}

// Spalte Betriebsstelle: Aktuelle Betriebsstelle kein Bahnhof und Bahnhofslink nicht bahnhof.de
if ($aktuellebetriebsstelle != Bahnhof AND $bahnhofslink != bahnhof.de)
{
$bahnhofslink + $aktuellebetriebsstelle;
}

// Spalte Zeit Zug 1
$zugeinszeitausgabe;

// Spalte Zeit Zug 2
$zugzweizeitausgabe;

// Streckennummer anzeigen?
if ($anzeigestreckennummer == "ja")
{
$streckennummer;
}

// Streckenhöchstgeschwindigkeit anzeigen?
if ($anzeigestreckenhoechstgeschwindigkeit == "ja")
{
$streckengeschwindigkeit;
}

// Strecken-Kilometer anzeigen?
if ($anzeigestreckenkm == "ja")
{
$streckenkm;
}

// Ende While-Schleife
}

// Ende Tabelle
Tabellenende


nach oben