Das Entwicklertagebuch Kennzeichner #2: Excel kann Geografie und mag kein Berlin
Im letzten Tagebucheintrag beschrieb ich meinen nicht gerade erfolgreichen Versuch, mittels Microsofts neuem Bing AI Chat eine Datengrundlage für unser neues Bastelprojekt, die Kennzeichner App, zu erschaffen. Excel macht den Job besser – wenn man nicht in Berlin wohnt.
Für alle, denen diese Artikelreihe noch unbekannt ist – das habt ihr bislang verpasst, könnt euch aber natürlich nachträglich einlesen:
- Entwicklertagebuch: Kennzeichner #1 mit Bing AI Chat als Datengrundlage
Weitere Bing AI Versuche
Dank der etlichen Feedbacks aus der Community rund um die Prompt-Erstellung konnte ich weiterführende Fortschritte erreichen. Leider mündeten diese allesamt in falsche Aussagen, wie dem bereits erwähnten Senden von Mails mit den erstellten Daten, oder dass Daten ungekürzt im Browser ausgegeben werden, aber dennoch mittels „…“ in der Mitte abgeschnitten sind.
Was mich am meisten verwunderte war, dass ich für den gleichen Prompt oft verschiedene Antworten bekommen habe. Manche brachen die Bearbeitung gleich ab, andere fuhren zu dem bereits erwähnten fort. Ein Muster, wann welche Aussage kam, konnte ich bisher nicht vorstellen.
Meine Anfrage beim Kraftfahrtbundesamt
Zeitgleich zu Bing stellte ich eine Anfrage gemäß der Open-Data Richtlinien an das Kraftfahrtbundesamt, ob diese die gewünschten Daten zu den Kennzeichen in Deutschland bereitstellen.
Nach geraumer Zeit erhielt hierauf eine Antwort von einer realen Person aus dem Amt. Bedauerlicherweise wurde meine Anfrage etwas missverstanden und der Lösungsvorschlag, eine *.pdf-Datei zu verwenden, war auch nicht wirklich das, was ich mit dem Schlagwort „maschinenlesbar“ meinte.
Dennoch ist es für mich ein Erfolg, eine Antwort bekommen zu haben. Ich gehe stark davon aus, dass wenn man fundiert mit den beamtendeutschen Formulierungen und konkreten Fachbezeichnungen fragt, man unter Umständen auch die angefragten Informationen bekommen könnte.
Da ich mich nicht in der Lage sah diese Fähigkeiten in einer annehmbaren Zeit zu entwickeln, verabschiedete ich mich von dem Plan offizielle Daten zu verwenden.
Retro-Gefühle mit CSV
Nachdem ich nach all den Versuchen endlich Fortschritt machen wollte, habe ich mich auf GitHub nach entsprechenden Daten umgesehen. Dort waren etliche Versuche zu finden, welche genau das Gleiche versucht haben wie ich und allem Anschein nach auch nicht erfolgreich waren.
Angesichts dessen entschied ich mich, mit dem kleinsten Teil anzufangen und dann die jeweiligen Datensätze Schritt für Schritt zu erweitern.
Hierbei fand ich auf GitHub neben einer *.yaml-basierten Liste an Kennzeichen (offene-daten/kennzeichen/de.yaml) auch die *.csv Datei Octoate/KfzKennzeichen/kfzkennzeichen-deutschland.csv, die auf einem aktuelleren Stand ist.
Mein Kriterium, welcher Datenstand aktueller ist, war das Kennzeichen „SMÜ“ (Schwabmünchen, Bayern). Dieses Kennzeichen ist das „neueste“, was mir bekannt ist. Wie aktuell oder vollständig die Listen wirklich sind, kann ich so natürlich nicht nachprüfen. Für die Verwendung in unserem Bastelprojekt reicht das allemal aus, zumal Excel mit dem klassischen CSV (Comma separated values) Format gut klarkommt und ich mir somit die Erweiterung der Datensätze erleichtere.
Excel kann Geografie
Ich bin seit sehr vielen Jahren Softwareentwickler, dennoch hatte ich bisher nie große Berührungen mit Excel abseits von bedingten Formatierungen oder der Summenfunktion.
Umso erstaunter war ich, dass Excel eine Geografie Funktion hat, welche zu gegebenen Orten weiterführende Informationen berechnen kann. Neben den Standards wie der Berechnung von Koordinaten zu Orten kann Excel zu einem gefundenen geografischen Eintrag auch den „Führer“ aka den/die Bürgermeister*in, die Anzahl der dort wohnhaften Menschen oder die Fläche des Gebietes anzeigen.
Niemand mag nach Berlin
Excel ist auch nur eine Software und sorgte bei meiner Benutzung für das ein oder andere Schmunzeln. So kann Excel mit dem Begriff „Berlin“ nichts anfangen. Somit kann das Programm weder Koordinaten noch andere Metainformationen hierzu finden. Woran dies liegen kann, ist mir schleierhaft. Meine erste Annahme, dass Excel nicht mit Stadtstaaten wie Berlin, Bremen und Co. zurechtkommt, wurde nicht bestätigt, da zum Beispiel Hamburg aufgelöst werden konnte. Auch das Anhängen von mehr eingrenzenden Wörtern wie „Deutschland“ hat hier keinerlei Erfolg gebracht.
Handarbeit: Kennzeichen sind nicht immer Orte
Hierbei kam mir wieder in den Sinn, dass Kennzeichen nicht immer nur auf Städte bezogen sind. Vor allem in ländlichen Regionen werden zumindest in Bayern auch ganze Gebiete zusammengefasst. Ein Beispiel hierfür ist etwa das Kennzeichen „OAL“, welches für den „Landkreis Ost Allgäu“ steht und somit mehr als nur eine Stadt beinhaltet. Für solche Daten hat Excel keinerlei Informationen. Dies ist in meinen Augen jedoch vertretbar und weniger verwundernd als der Umstand mit Berlin.
Somit blieb mir etwas Handarbeit nicht erspart und für einige wenige Orte beziehungsweise Gebiete musste ich selbst entsprechende Informationen wie die Koordinaten heraussuchen.
Endprodukt: JSON-Datei
Nach all den Mühen und Versuchen konnte ich schlussendlich meine Excel-Tabelle mittels einem Webservice in eine maschinenlesbare *.json-Datei transformieren und – hier kommt noch einmal Microsoft ins Spiel – auf GitHub als „Quasi Backend“ ablegen.
Achtung hierbei: Falls man beispielsweise eine *.json-Datei nur im Git ablegt und via dem Dateibrowser des Repositoriums aufruft und diese URL verwendet, wird es in den wenigsten Fällen von den Apps verwendbar sein, da der http-Response nicht den erwarteten MIME-Type „application/json“ hat, sondern nur „text/plain“. Eine Lösung hierfür ist, die Datei in einer GitHub Page zu hinterlegen. Dann funktioniert es auch mit den Apps.
Beide Dateien sind im Repository des Kennzeichners unter /data zu finden.
Wie geht es weiter?
Als Nächstes steht die eigentliche Entwicklung an. Angefangen mit dem Aufsetzen eines rudimentären Kotlin Multiplatform Mobile (KMM) Projektes mittels Android Studio und des Testens, ob die eingebundene Android-App als auch iOS-App startet. Hinzu kommen noch Verwaltungsaufgaben rund um das GitHub Repository von diesem Projekt, um einen sauberen Startpunkt schlussendlich zu haben.
Falls ihr beitragen wollt, stehen verschiedene Möglichkeiten zur Verfügung. Einerseits alles rund um Excel. Die Tabelle benötigt etliches mehr an professioneller Aufarbeitung und hat sicherlich noch den ein oder anderen Verbesserungsbedarf. Da der GitHub-Stand den Tagebüchern etwas vorher eilt, ist jede Hilfe rund um Kotlin, Android und Jetpack Compose herzlich willkommen.
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.