Am Puls von Microsoft

Das Entwicklertagebuch Kennzeichner #2: Excel kann Geografie und mag kein Berlin

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:

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.

Deutsche Autokennzeichen in Excel

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.

Über den Autor

Tobias Scholze

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.

Anzeige