map ICE train numbers to names where possible

This commit is contained in:
Daniel Friesel 2020-01-04 18:48:46 +01:00
parent a9a7fa4492
commit 62b68b5010
2 changed files with 248 additions and 1 deletions

View file

@ -274,6 +274,247 @@ sub startup {
}
);
# https://de.wikipedia.org/wiki/Liste_nach_Gemeinden_und_Regionen_benannter_IC/ICE-Fahrzeuge#Namensgebung_ICE-Triebz%C3%BCge_nach_Gemeinden
# via https://github.com/marudor/BahnhofsAbfahrten/blob/master/src/server/Reihung/ICENaming.ts
$self->attr(
ice_name => sub {
my %id_to_name = (
4712 => 'Dillingen a.d. Donau',
4601 => 'Europa/Europe',
1183 => 'Oberursel (Taunus)',
363 => 'Weilheim i. OB',
187 => 'Mühldorf a. Inn ',
101 => 'Gießen',
331 => 'Westerland/Sylt',
357 => 'Esslingen am Neckar ',
333 => 'Goslar',
4717 => 'Paris',
102 => 'Jever ',
4604 => 'Brussel/Bruxelles',
175 => 'Nürnberg',
173 => 'Basel',
177 => 'Rendsburg',
118 => 'Gelnhausen',
320 => 'Weil am Rhein',
186 => 'Chur',
354 => 'Mittenwald',
1155 => 'Mühlhausen/Thüringen',
355 => 'Tuttlingen',
308 => 'Murnau am Staffelsee',
353 => 'Neu-Ulm',
1505 => 'Marburg/Lahn',
104 => 'Fulda',
172 => 'Aschaffenburg',
182 => 'Rüdesheim',
1174 => 'Hansestadt Warburg',
1168 => 'Ellwangen',
180 => 'Castrop-Rauxel',
1170 => 'Prenzlau',
1164 => 'Rödental',
1175 => 'Villingen-Schwenningen',
1166 => 'Bingen am Rhein',
327 => 'Siegen',
362 => 'Schwerte (Ruhr)',
1151 => 'Elsterwerda',
360 => 'Linz am Rhein',
1163 => 'Ostseebad Binz',
103 => 'Neu-Isenburg',
352 => 'Mönchengladbach',
1167 => 'Traunstein',
1169 => 'Tutzing',
1162 => 'Vaihingen an der Enz',
1157 => 'Innsbruck',
1161 => 'Andernach',
1158 => 'Falkenberg/Elster',
225 => 'Oldenburg (Oldb)',
228 => 'Altenburg',
215 => 'Bitterfeld-Wolfen',
359 => 'Leverkusen',
171 => 'Heusenstamm',
1152 => 'Travemünde',
361 => 'Celle',
160 => 'Mülheim an der Ruhr',
237 => 'Neustrelitz',
1192 => 'Linz',
1154 => 'Sonneberg',
154 => 'Flensburg',
211 => 'Uelzen',
156 => 'Heppenheim/Bergstraße ',
185 => 'Freilassing',
323 => 'Schaffhausen',
309 => 'Aalen',
188 => 'Hildesheim',
315 => 'Singen (Hohentwiel)',
358 => 'St. Ingbert',
335 => 'Konstanz',
1190 => 'Wien',
181 => 'Interlaken',
213 => 'Nauen',
1172 => 'Bamberg',
183 => 'Timmendorfer Strand',
326 => 'Neunkirchen',
324 => 'Fürth',
1153 => 'Ilmenau',
157 => 'Landshut',
1178 => 'Ostseebad Warnemünde',
1160 => 'Markt Holzkirchen',
222 => 'Eberswalde',
236 => 'Jüterbog',
4685 => 'Schwäbisch Hall',
4684 => 'Forbach-Lorraine',
1522 => 'Torgau',
1182 => 'Mainz',
1191 => 'Salzburg',
1523 => 'Hansestadt Greifswald',
1521 => 'Homburg/Saar',
1181 => 'Horb am Neckar',
1520 => 'Gotha',
1180 => 'Darmstadt',
1176 => 'Coburg',
1173 => 'Halle (Saale)',
4683 => 'Limburg an der Lahn',
314 => 'Bergisch Gladbach',
312 => 'Montabaur',
1524 => 'Hansestadt Rostock',
1184 => 'Kaiserslautern',
169 => 'Worms',
4680 => 'Würzburg',
1177 => 'Rathenow',
1156 => 'Waren (Müritz)',
351 => 'Herford',
1165 => 'Bad Oeynhausen',
4682 => 'Köln',
1171 => 'Oschatz',
210 => 'Fontanestadt Neuruppin',
167 => 'Garmisch-Partenkirchen',
106 => 'Itzehoe',
174 => 'Zürich',
107 => 'Plattling',
162 => 'Geisenheim/Rheingau',
201 => 'Rheinsberg',
117 => 'Hof',
220 => 'Meiningen',
217 => 'Bergen auf Rügen',
238 => 'Saarbrücken',
114 => 'Friedrichshafen',
113 => 'Frankenthal/Pfalz',
1111 => 'Hansestadt Wismar',
1108 => 'Berlin',
1128 => 'Reutlingen',
168 => 'Crailsheim',
230 => 'Delitzsch',
313 => 'Treuchtlingen',
1159 => 'Passau',
110 => 'Gelsenkirchen',
307 => 'Oberhausen',
1132 => 'Wittenberge',
227 => 'Ludwigslust',
205 => 'Zwickau',
108 => 'Lichtenfels',
158 => 'Gütersloh',
124 => 'Hanau',
116 => 'Pforzheim',
1117 => 'Erlangen',
224 => 'Saalfeld (Saale)',
243 => 'Bautzen/Budyšin',
1131 => 'Trier',
231 => 'Brandenburg an der Havel',
242 => 'Quedlinburg',
1125 => 'Arnstadt',
325 => 'Ravensburg',
221 => 'Lübbenau/Spreewald',
1118 => 'Plauen/Vogtland',
159 => 'Bad Oldesloe',
302 => 'Hansestadt Lübeck',
115 => 'Regensburg',
112 => 'Memmingen',
190 => 'Ludwigshafen am Rhein',
241 => 'Bad Hersfeld',
235 => 'Görlitz',
336 => 'Ingolstadt',
334 => 'Offenburg',
1110 => 'Naumburg (Saale)',
321 => 'Krefeld',
178 => 'Bremerhaven',
1119 => 'Meißen',
305 => 'Baden-Baden',
319 => 'Duisburg',
4651 => 'Amsterdam',
223 => 'Schwerin',
1102 => 'Neubrandenburg',
214 => 'Hamm (Westf.)',
209 => 'Riesa',
105 => 'Offenbach am Main',
153 => 'Neumünster',
120 => 'Lüneburg',
184 => 'Bruchsal',
316 => 'Siegburg',
219 => 'Hagen',
161 => 'Bebra',
317 => 'Recklinghausen',
1503 => 'Altenbeken',
318 => 'Münster (Westf.)',
240 => 'Bochum',
328 => 'Aachen',
322 => 'Solingen',
202 => 'Wuppertal',
1101 => 'Neustadt an der Weinstraße',
1103 => 'Paderborn',
234 => 'Minden',
1109 => 'Güstrow',
232 => 'Frankfurt (Oder)',
119 => 'Osnabrück',
1107 => 'Pirna',
1113 => 'Hansestadt Stralsund',
1501 => 'Eisenach',
155 => 'Rosenheim',
244 => 'Koblenz',
4652 => 'Arnhem',
212 => 'Potsdam',
4603 => 'Mannheim',
301 => 'Freiburg im Breisgau',
310 => 'Wolfsburg',
330 => 'Göttingen',
1127 => 'Weimar',
207 => 'Stendal',
304 => 'München',
4607 => 'Hannover',
1105 => 'Dresden',
1502 => 'Karlsruhe',
1506 => 'Kassel',
208 => 'Bonn',
311 => 'Wiesbaden',
1126 => 'Leipzig',
216 => 'Dessau',
176 => 'Bremen',
4611 => 'Düsseldorf',
203 => 'Cottbus/Chóśebuz',
1504 => 'Heidelberg',
303 => 'Dortmund',
1130 => 'Jena',
226 => 'Lutherstadt Wittenberg',
206 => 'Magdeburg',
1104 => 'Erfurt',
332 => 'Augsburg',
1129 => 'Kiel',
239 => 'Essen',
337 => 'Stuttgart',
233 => 'Ulm',
204 => 'Bielefeld',
218 => 'Braunschweig',
1112 => 'Freie und Hansestadt Hamburg',
4610 => 'Frankfurt am Main',
9006 => 'Martin Luther',
9018 => 'Freistaat Bayern',
9025 => 'Nordrhein-Westfalen',
9026 => 'Zürichsee',
152 => 'Hanau',
166 => 'Gelnhausen',
);
return \%id_to_name;
}
);
$self->attr(
station_by_eva => sub {
my %map;

View file

@ -1,5 +1,11 @@
% for my $wagongroup (@{$wagongroups // []}) {
Wagenverbund <%= $wagongroup->{name} %> von <b><%= $wagongroup->{from} %></b> nach <b><%= $wagongroup->{to} %></b> als <b><%= $journey->{type} %> <%= $wagongroup->{no} %></b><br/>
Wagenverbund <%= $wagongroup->{name} %>
% my ($wagon_number) = ($wagongroup->{name} =~ m{ ^ ICE 0* (\d+) $ }x);
% if ($wagon_number and my $group_name = app->ice_name->{$wagon_number}) {
„<%= $group_name %>“
% }
als <b><%= $journey->{type} %> <%= $wagongroup->{no} %></b>
von <b><%= $wagongroup->{from} %></b> nach <b><%= $wagongroup->{to} %></b><br/>
% for my $wagon (@{$wagongroup->{wagons}}) {
% if (length($wagon->{id}) == 12) {
<span><%= substr($wagon->{id}, 0, 2) %></span><span><%= substr($wagon->{id}, 2, 2) %></span><span><%= substr($wagon->{id}, 4, 1) %></span><span class="wagonclass"><%= substr($wagon->{id}, 5, 3) %></span><span class="wagonnum"><%= substr($wagon->{id}, 8, 3) %></span><span class="checksum"><%= substr($wagon->{id}, 11) %></span>