DuoBahn, das Entwicklertagebuch, Teil 3: Ihr Rohdatenlein kommet

Im zweiten Teil dieser Beitragsreihe sprach ich die groben Bestandteile der DuoBahn App und deren Mitbringsel an. Bei dieser App an sich ist bis auf den K(r)ampf mit Google Maps und Jetpack Compose wenig passiert. Dafür ist auf der Seite der Datenerfassung ein großer Schritt vollzogen worden. Wir können nun periodisch Rohdaten basierend auf der öffentlichen Autobahn-API aggregieren!
Für alle, denen diese Artikelreihe noch unbekannt ist: Das habt ihr bislang verpasst, könnt euch aber natürlich nachträglich einlesen:
- Teil #1: Auf zu unseren neuen Surface Duo App „DuoBahn“
- Teil #2: Ab ans Reißbrett!
- Teil #3: Ihr Rohdaten’lein kommet (aktuell)
Kotlin + GitHub Actions = Rohdatenhimmel
Als Fingerübung sowie als Einstieg in Kotlin habe ich den ersten Wurf des Aggregator-Skripts eben in dieser modernen Programmiersprache geschrieben.
Dieses Skript zu erdenken, zu entwickeln und auszuprobieren war trotz meiner nicht vorhandenen Sprachkenntnis an einem Abend gut möglich. Neben der Kotlin Bibliothek „Ktor“ für alles rund um Netzwerkabfragen kam auch das JetBrains IntelliJ Plugin „JSON To Kotlin Class“ zum Einsatz. Dieses kleine Helferlein erlaubt es, aus kopierten JSON korrespondierende Kotlin (Data) Klassen zu erstellen. Im Handumdrehen konnte ich somit die verschiedenen Endpunkte der Autobahn-API abgreifen und in ein gigantisch großes JSON packen.
Im Anschluss an die Entwicklung und das Testen erstellte ich, um das Skript in zeitlichen Intervallen laufen zu lassen, ein eigenes kleines GitHub Repository, wo mit Hilfe der aus dem Quelltext erstellten *.jar-Datei und dem „Actions“ Feature von GitHub nun das bereits erwähnte JSON erstellt und in das Repository übertragen wird.
Da Rohdaten einfach das Beste sind, archiviere ich das im vorherigen Durchlauf erstellte JSON, indem ich es mit einen Datumprefix versehe.
Wenn ihr tolle Ideen habt, wie man dieses Skript noch umsetzen könnte, beispielsweise in C#, oder was man mit den Rohdaten sonst anfangen könnte – lasst euch nicht aufhalten! Vor allem über weitere Skripte freue ich mich sehr.
Rohdaten sind da, nun folgt die Aufbereitung
Ich habe mich entschieden, die Rohdaten an sich so zu übernehmen, wie sie aus der Autobahn-API hervorgehen. Da diese jedoch für die DuoBahn App aufbereitet werden müssen, folgt nun der zweite Schritt im Aggregationsprozess.
Hierzu muss ich mir die Daten der API noch einmal näher zu Gemüte führen, um eventuelle Pattern in Freitextfeldern zu finden und diese anschließend zu extrahieren.
Als Beispiel hierfür dient das oft in der App vorkommende „description“ Feld. Welches eigentlich „descriptions“ heißen müsste da es eine Liste an Strings enthält.
„description“: [
„Beginn: 29.06.2021 09:00“,
„Ende: 28.11.2021 17:00“,
„“,
„Art der Maßnahme:Asphaltdeckenerneuerung“,
„Einschränkungen:Es steht nur 1 Fahrstreifen zur Verfügung.\n\nVollsperrung der AS Eutin Ostseite vom 17.07.2021 – 15.09.2021.\n\nVollsperrung der AS Scharbeutz Ostseite vom 16.09.2021 – 17.11.2021.“,
„Maximale Durchfahrsbreite: 3.25\n“
]
Manche Daten aus dieser Liste konnte ich nicht in anderen Properties der Schnittstelle ausfindig machen. Es ist eine spannende und amüsante Daten-Detektivarbeit.
Jetpack Compose und Google Maps sind (noch) keine Freunde
Für DuoBahn wird die Kartenansicht eine elementare Rolle spielen. Aus diesem Grund fing ich auch mit dieser prototypisch an. Bei den ersten Schritten musste ich feststellen, dass anscheinend noch keine Compose-fähige Google Maps Repräsentation existiert. Somit muss man diese via einem altbacken wirkenden XML-Layout Datei und einer Mantelklasse selbst zusammenbauen, was vor allem Neueinsteiger doch etwas an die Grenzen bringt. Glücklicherweise bemängele nicht nur ich diesen Umstand und es gibt erste verständliche Anleitungen im Netz als auch die Hoffnung, dass Google oder JetBrains diese Komponente baldmöglichst nachreichen werden.
Macht mit, es macht wirklich Spaß!
Bei offenen Fragen rund um das Mitwirken an der App mailt mir an tobias@drwindows.de oder erstellt beziehungsweise schnappt euch gleich ein Issue auf GitHub, wo der komplette Quelltext der App liegt.
Lasst uns weiterhin gemeinsam dieses spannende Bastelprojekt weiterführen. Auf das nächste Dutzend! Vielen Dank für eures stetes Interesse.
Zu guter Letzt wünsche ich euch allen einen guten Rutsch und #happyhacking während dieser staaden Zeit – Tobias.
Thema:
- Entwicklung
Über den Autor

Tobias Scholze
Bayrischer Open Source- und Community-Enthusiast, Verfechter des neuen Microsoft und Wandler zwischen den Betriebssystemwelten. #communityrocks Von Herzen ein Nerd mit der festen Überzeugung, dass man gemeinsam und durch den Einsatz von moderner IT die Welt für jeden ein Stückchen besser machen kann.