Diese Woche sah ich von einem meiner Lieblingsinformatikprofessoren Jörn Loviscach ein Video bei dem er die Bahnhöfe der DB grafisch darstellte.
Allein die Tatsache, dass die DB solche Daten rausgibt, finde ich spannend. Ich hätte gedacht, dass so etwas geheim ist, weil sogar die genauen geografischen Koordinaten mit angegeben werden. Und nicht nur die Bahnhöfe werden publik gemacht, es gibt auch noch weitere Daten in den unterschiedlichsten Formaten zum Herunterladen . Vielleicht kann ich davon etwas in der 11. Klasse Informatik (Thema Bäume und Graphen) ja verwenden: data.deutschebahn.com/datasets/
Am liebsten hätte ich ja das Streckennetz für Graphen-Algorithmen genommen, aber das liegt nur im XML bzw. GEOjson-Format vor. Da ich diese Formate in Java noch nie eingelesen habe, habe ich auch “nur” die Bahnhöfe genommen. Für die anderen Dateiformate gibt es bestimmt irgendwelche Libraries, die ich mir aber erst mal selber zusammengoogeln muss.
Mein Ergebnis sieht dann so aus:
Leider hatte ich Probleme die Umlaute der Namen richtig darzustellen. Ich habe alles an Formaten (UTF-8, UTF-16, Iso Latin 1, Windows Latin 1, …) probiert, was mein Programm TextWrangler hergibt, aber ich fand kein passendes Format.
Zum Darstellen habe ich wieder die Klasse ZEICHENFENSTER benutzt, die ich mal irgendwann bei einer Forbildung bekommen habe. Warum hat sich eigentich keiner an die Konvention gehalten nur Konstanten in reine Großbuchstaben zu schreiben? Naja, ich habe mich im Quelltext auch nicht dran gehalten, da in der csv-Datei die Spaltenbeschriftungen in Großbuchstaben waren und ich keine Lust zum Abtippen hatte.
Anders als im Video muss die Berechnung der Koordinaten der Bildpunkte anders erfolgen, da der Ursprung meines Koordinatensystems oben links liegt. Auch Tooltipps habe ich nicht umgesetzt.
Hier der Code zum Herunterladen und weiterspielen. Die csv-Datei habe ich direkt in den Ordner gelegt gehabt und in “DB_2016.csv” umbenannt. Die erste Zeile muss dabei gelöscht werden, da dort die Spaltenbeschriftungen drin stehen. (Aus rechtlichen Gründen, habe ich diese Datei nicht mitgezippt): DB_Haltestellen
Danke für die Inspiration, musste doch mal probieren das in meiner Lieblingssprache Python umzusetzen:
http://pastebin.com/f0B8n5e2
Ergebnis:
http://www.pic-upload.de/view-30452358/Bildschirmfotovon2016-04-2413-13-42.png.html
Die Idee hatte ich auch schon, da ich noch nicht soooo viel Erfahrung mit Python habe.