Digital resources in the Social Sciences and Humanities OpenEdition Our platforms OpenEdition Books OpenEdition Journals Hypotheses Calenda Libraries OpenEdition Freemium Follow us

Interaktive Karten in der Geschichtswissenschaft: Welche Tools eignen sich für Studierende und Forschende?

Screenshot der Karte: Alexander Goebbels


Alexander Goebbels

Mit geographischen Visualisierungen lassen sich komplexe Datenlagen überblicken und Zusammenhänge darstellen, die in Tabellen nicht deutlich werden. Aber wie lassen sich solche Visualisierungen umsetzen und welche Tools existieren, die einen niedrigschwelligen Einstieg ermöglichen? Und können KI-Anwendungen bei diesem Einstieg helfen? In diesem Beitrag beschreibe ich meine Erfahrungen im Umgang mit verschiedenen Tools und stelle ein Experiment vor, das auch für Personen ohne Programmierkenntnisse interessant sein könnte.

Ein Vorteil von geographischen Visualisierungen ist die Möglichkeit, komplexe Zusammenhänge zu veranschaulichen und dabei auf Verbindungen stoßen zu können, die sich bei der Betrachtung von Daten in tabellarischer Form nicht direkt erschließen. Dies trifft nicht nur auf größere Forschungsvorhaben zu, sondern kann auch schon während des Studiums hilfreich sein. Visualisierungen können dabei sowohl als ein reines Analysewerkzeug verwendet werden oder auch als Präsentationsmittel, um eine vorliegende Argumentation zu unterstützen. Beide Anwendungsgebiete schließen sich nicht aus, bringen jedoch unterschiedliche Voraussetzungen mit sich. So konnte ich während meiner Arbeit zum Kölner Gelehrten und Sammler Baron Adolf von Hüpsch (1730–1805) die von mir gesammelten Daten zu Orten, an denen er in Wochenzeitungen des 18. Jahrhunderts genannt wird, mithilfe einer Karte visualisieren. Dies half mir meine Argumentation zu unterstützen, indem ich die Nennungen von Hüpsch durch die eindeutige geographische Verortung konkretisieren konnte.

Die Karte basiert auf einem Code, der mit der JavaScript-Bibliothek Leaflet arbeitet. Der Code ist so angelegt, dass er Daten aus einer externen GeoJSON-Datei1 einliest und auf einer Karte als Markierungen platziert. Solange die GeoJSON-Datei der im Code definierten Struktur entspricht, kann sie also immer wieder nachgenutzt werden. Da ich in diesem Fall die Daten nicht filtern wollte, entfernte ich einen Schieberegler, der es ermöglicht, nur die Markierungen anzuzeigen, die in die ausgewählte Zeitspanne fallen.

Tools zur Visualisierung von Daten

Vor der konkreten Umsetzung der Visualisierung stellt sich jedoch die Frage: Welche Möglichkeiten existieren überhaupt, um Daten auf einer Landkarte darstellen zu können? Als ich mich zum ersten Mal mit Geo-Visualisierungen beschäftigte, suchte ich nach einer Anwendung, die es mir ermöglicht, geographische Visualisierungen zu erstellen und die von mir erhobenen Daten chronologisch zu filtern. Dabei sollte der Einstieg möglichst niedrigschwellig sein, sodass die Tools auch mit wenig technischen Vorkenntnissen anwendbar sind und in überschaubarer Zeit erlernt werden können. Ich möchte an dieser Stelle die Ergebnisse dieser Recherche vorstellen.

Anwendungen für Power-User

Meine Recherche führte mich schnell zu geographischen Informationssystemen wie QGIS, Visualisierungstools wie Gephi oder auch der web-basierten Forschungsumgebung nodegoat. QGIS, Gephi und nodegoat bieten weitreichende Möglichkeiten mit Daten zu arbeiten und diese darzustellen, wovon gerade größere Forschungsvorhaben profitieren. Alle drei verbindet jedoch auch eine hohe Einstiegshürde. Sie eignen sich daher in meinen Augen nur bedingt für den studentischen Einsatz, wenn nicht die Anwendung des Tools die Prüfungsleistung darstellt oder die Prüfungsleistung in ein größeres Forschungsvorhaben eingebunden ist, und sind eher für den Bereich der Forschung geeignet.

uMap

Ich suchte also weiter nach Anwendungen, die einen niedrigschwelligen Einstieg ermöglichen. Eine erste Option fand ich mit uMap – einem Angebot der französischen OpenStreetMap-Community. Das browserbasierte Tool ermöglicht es, Markierungen über das Format GeoJSON zu erstellen, wodurch die Markierungen punktgenau gesetzt werden können. Zudem können die mit uMap kreierten Karten problemlos nachgenutzt werden, da es sich um eine Open Source-Anwendung handelt. Leider bietet uMap nur die Möglichkeit, Markierungen zu setzen und diese über Pop-Ups mit Informationen zu füllen. Die Daten können aber nicht gefiltert werden, um zeitliche Verläufe darzustellen. Damit eignet sich uMap weniger gut für die historische Arbeit und kann trotz des niedrigschwelligen Einstiegs weder für Studierende noch für Forschende uneingeschränkt empfohlen werden.

Palladio

Mein nächster Fund sah vielversprechender aus. Palladio ist ein speziell für die Geisteswissenschaften erstelltes Tool von Humanities+Design, einem Forschungslabor der Stanford University, mit dem Daten verarbeitet und geographisch dargestellt werden können. Dabei bietet es neben der geographischen Ansicht auch die Möglichkeit Netzwerkgraphen zu erstellen und die Daten in tabellarischer Form zu bearbeiten. Um mit Palladio starten zu können, werden zwei csv-Dateien benötigt, die in der graphischen Oberfläche Palladios miteinander in Verbindung gebracht werden. Zum einen wird eine Tabelle benötigt, welche die Daten enthält, die visualisiert werden sollen, und zum anderen eine Tabelle, die die Geodaten der Orte enthält, die in der Datentabelle vorliegen. Über die Plattform GeoNames können solche Geodaten recherchiert werden. Nachdem beide Dateien in Palladio hochgeladen und in Beziehung gesetzt wurden, kann auch schon mit der graphisch unterstützen Analyse der Daten begonnen werden.


Palladio profitiert hier von einem niedrigschwelligen Einstieg und bringt die zentralen Funktionen mit, die eine historisch orientierte Analyse benötigt. Daten können in Beziehung gesetzt und optisch verknüpft werden, Zeitspannen können eingestellt und Zeitverläufe beobachtet werden. Zudem existieren sehr hilfreiche Tutorials auf Programming Historian oder auch auf Youtube. Außerdem findet sich der Quellcode auf Github und kann damit auch auf dem heimischen Rechner umgesetzt werden, sollte man die browserbasierte Anwendung nicht nutzen wollen. Palladio wird jedoch seit 2019 nicht mehr offiziell weiterentwickelt. Daher liegt es an einer kleinen Community, mögliche Bugs zu reparieren und den Code zu aktualisieren. So unkompliziert sich der Einstieg in Palladio über die graphische Oberfläche auch darstellt, so komplex ist hingegen der Code. Größere und kleinere Anpassungen oder Fehlerbehebungen sind nur mit umfassenden Programmierkenntnissen möglich. Die von Palladio standardmäßig verwendete monochrome Landkarte lässt sich z.B. nicht über die graphische Überfläche austauschen. Eine andere Landkarte müsste über den Code eingebaut werden. Solange jedoch die webbasierte Anwendung funktionsfähig ist, eignet sich Palladio sehr gut als Einstieg in geographische Visualisierungen, besonders für studentische Arbeiten.

Leaflet

Da ich mit der in Palladio verwendeten detailarmen Landkarte nicht zufrieden war, suchte ich nach einer Anwendung, die es mir ermöglichen würde, die Visualisierung stärker an meine Bedürfnisse anzupassen. Meine Suche endete mit der oben schon einmal genannten JavaScript-Bibliothek Leaflet. Mit Leaflet war es mir zwar möglich mein Vorhaben umzusetzen, jedoch nur unter großem Zeitaufwand und dank der IT-Kenntnisse, die ich durch das IT-Zertifikat der Philosophischen Fakultät der Universität zu Köln erworben hatte. Ohne diese Kenntnisse hätte ich mich mit der Darstellung zufriedenstellen müssen, die Palladio mitbringt. So kann Leaflet zwar bis ins Detail an die eigenen Bedürfnisse angepasst werden, was besonders für größere Forschungsvorhaben interessant ist, jedoch eignet es sich nur bedingt für den Einsatz im Studium. Gerade wer keine Vorkenntnisse mitbringt, wird hier viel Zeit investieren müssen, um nützliche Ergebnisse zu erzielen.

Gibt es eine Möglichkeit Leaflet für Studierende ohne Codingerfahrung nutzbar zu machen?

Die in den letzten Monaten immer häufiger werdenden Berichte über ChatGPT und dessen Fähigkeit Code zu generieren, brachten mich nun dazu, auszutesten, wie einfach sich eine interaktive Karte mithilfe der KI erstellen lässt. Mein zu Beginn definiertes Ziel sah es vor, dass die Karte eine überschaubare Anzahl an Markierungen enthalten soll, mit deren Sichtbarkeit die Nutzer*innen über einen Schieberegler interagieren können. Damit sollte überprüft werden, ob mithilfe von ChatGPT eine interaktive Karte erstellt werden kann, die die zentrale Voraussetzung erfüllt, um für die Forschung (und im Studium) nützlich zu sein: Das chronologische Filtern von Daten. Verglichen mit den Wochen, die ich in meine ersten Karten investieren musste, um zu einem vorzeigbaren Ergebnis zu gelangen, sind die 30 Minuten, die es mit ChatGPT als Kopiloten gedauert hat, um ein ähnliches Ergebnis zu erhalten, eine deutlich überschaubarere Zeitinvestition.

Vor der eigentlichen Arbeit mit ChatGPT stand die Suche nach einem geeigneten Datensatz. Eine kurze Online-Recherche förderte einen Blog-Beitrag mit einem Itinerar Heinrichs II. aus dem Jahr 1023 zutage. Da ich den notwendigen Arbeitsaufwand so gering wie möglich halten wollte, kopierte ich die im Blog genannten Stationen Heinrichs II. und formatierte sie in Word als Tabelle. Mein erster Prompt an ChatGPT sah so aus, dass ich der KI eine Liste an Daten ankündigte und sie aufforderte, eine Karte mit diesen Daten zu erstellen, die auf Leaflet basiert und alle genannten Orte markiert. Als Startpunkt einer Reihe von „iterativen Promptings“ sollte so der Basis-Code generiert werden, der in späteren Schritten erweitert werden sollte. Dabei entschied ich mich auch dafür, die Prompts auf Englisch zu verfassen, da der größte Teil der Dokumentation zu Leaflet online auf Englisch vorliegt. Ob die hier vorgestellten Ergebnisse auch mit Prompts auf Deutsch erreicht werden könnten, müsste noch ausprobiert werden.


Noch bevor ich die Daten eingegeben hatte, die auf der Leaflet-Karte angezeigt werden sollten, schlug ChatGPT vor, den Code mit Python generieren zu lassen. Da ich kaum Erfahrungen mit Python habe und dieses Experiment auch das Ziel verfolgte zu testen, wie niedrigschwellig sich eine interaktive Karte mit ChatGPT als Kopiloten erstellen lässt, und da man Python-Kenntnisse nicht voraussetzen kann, bat ich die KI, den Code direkt in eine html-Datei zu schreiben. Zuvor hatte ich noch das Itinerar an ChatGPT gegeben und hier bestätigte sich eine weitere Fähigkeit der KI, nämlich das Erkennen von Strukturen. Die Daten, die ich eingegeben hatte, waren zwar als Liste formatiert, aber ansonsten unstrukturiert:


ChatGPT erkannte, dass die einzelnen Zeilen dieser Liste aus drei verschiedenen Elementen bestehen, und überführte sie direkt in ein Schema, ohne dass ich weiteren Input liefern musste. Die Aufenthaltsbeschreibungen wurden hier jedoch von ChatGPT verkürzt zusammengefasst, was nicht unbedingt wünschenswert ist. Die KI trifft hier also Entscheidungen, die bei jedem Prompt zu überprüfen sind. Dies ist besonders dann der Fall, wenn man von ihr Daten zusammenfassen und strukturieren lässt.


Nachdem nun die Daten eingegeben waren, die visualisiert werden sollen, konnte ChatGPT damit beginnen, mir den Code für eine Karte zu generieren. Nachdem die KI den ersten Code-Abschnitt generiert hatte und ich mit zwei weiteren Prompts den Schieberegler einbauen ließ, konnte ich den Code zum ersten Mal ausprobieren, stieß jedoch direkt auf ein Problem: Der Code funktionierte nicht. ChatGPT hatte mit einer JavaScript-Bibliothek gearbeitet, die mir nicht bekannt war, um den Schieberegler zu realisieren (Leaflet.TimeDimension) und zudem eine nicht mehr aktuelle Version verwendet. Was mir hier jedoch auffiel, ist die äußerst übersichtliche Auszeichnung des Codes, die es mir ermöglichte, ihn schnell zu überblicken. So baute ich auch weiterhin auf die Hilfe von ChatGPT und versuchte mir erklären zu lassen, wie ich die verwendete JavaScript-Bibliothek richtig einsetzen muss, damit der Code funktioniert.


Nachdem ich das Problem jedoch nicht lösen konnte, entschied ich mich dazu, Chat GPT den Code ohne die Nutzung von Leaflet.TimeDimension schreiben zu lassen. Dies führte auch sofort zu einem ansehnlichen Ergebnis:


Mit dem Code war es nun möglich, Markierungen auf einer Karte zu platzieren und diese anhand eines Datums zu filtern. Das Ergebnis erhielt ich nach 10 Prompts. Damit wäre sogar das für dieses Experiment definierte Ziel deutlich vor den 30 Minuten erreicht gewesen. Mit der generierten Karte können Datenpunkte in ihrer geographischen Lage zueinander und über einen Zeitverlauf hinweg betrachtet werden. Der Code ermöglicht es auch weitere Daten hinzuzufügen, solange man sich an die von ChatGPT definierte Struktur hält. Auch dies ist gut ausgezeichnet im Code zu finden:


Dieser erste Schritt zeigt also, dass ChatGPT gut eingesetzt werden kann, um eine Arbeitsgrundlage zu schaffen. Als nächstes wollte ich überprüfen, wie gut man mithilfe von ChatGPT Details anpassen kann. Daher war mein nächstes Ziel den Schieberegler so anzupassen, dass die Nutzer*innen auch ein Feedback darüber bekommen, welchen Monat sie ausgewählt haben. Dies erwies sich als die deutlich zeitaufwendigere Aufgabe.

Der erste Prompt, mit dem ich den Schieberegler anpassen wollte, sah es vor, dass der von den Nutzer*innen ausgewählte Wert angezeigt werden sollte. Hier zeigte sich wohl eine der anspruchsvollsten und schwierigsten Hürden, die sich beim Coden mit ChatGPT ergeben. Man muss der KI deutlich machen können, was man von ihr möchte.


So hat die KI durch meinen Prompt die gewählten Werte („chosen values“) unter dem Slider markiert, der im Code gesetzt wurde, und zwar als einen Wert von 0 bis 100.


Ich verbrachte also die nächsten Minuten damit Prompts einzugeben, die das Aussehen des Schiebereglers verändern sollten. Dabei lieferte ChatGPT nicht immer das Ergebnis, das ich mit meinem Prompting erreichen wollte. So veränderte sich z.B. der Schieberegler ohne mein Zutun in ein Dropdown-Menü, oder aber der Code hörte auf zu funktionieren. So stand ich plötzlich vor einer leeren Karte, auf der keine Markierungen mehr zu finden waren. Da ich die Fehlerquelle nicht finden konnte, wandte ich mich wieder an ChatGPT und fragte direkt bei der KI nach, ob es einen Fehler im Code finden könnte:


Dies führte auch sofort zum gewünschten Ergebnis und ChatGPT korrigierte den Code allein aufgrund des Hinweises, dass es einen Fehler zu geben scheint. Mit dieser Methode konnte ich auch ein weiteres Mal den Code „retten“, indem ich ChatGPT darauf aufmerksam machte, dass es einen Fehler gab.

Obwohl der Schieberegler nun eingebunden war, brauchte es noch einiges an „Überzeugungsarbeit“ bis ich ChatGPT dazu bringen konnte, den Regler so zu formatieren, wie ich ihn mir vorgestellt habe. In diesen Details liegt auch die schwierigste Arbeit mit der KI, da ich als Nutzer*in sehr genau formulieren muss, was umgesetzt werden soll. Dabei ist es nicht so wichtig, dass ich weiß, wie mein Wunsch umgesetzt werden kann, sondern vielmehr, dass ich sehr genau beschreiben kann, was das Ergebnis sein soll. Hier waren meine Vorkenntnisse von großer Hilfe, um die Prompts formulieren zu können. So konnte ich ChatGPT mit passenden Begriffen in die richtige Richtung steuern und mir den Code ansehen, um mögliche Fehler zu entdecken. Dies bedeutet jedoch nicht, dass diese Kenntnisse notwendig sind, um ähnliche Ergebnisse zu erreichen. Die Kommunikation zur Erstellung des Sliders verlief ausschließlich in natürlicher Sprache, und erst bei der Platzierung des Sliders auf der Karte musste auf Begriffe wie „overlay element“ zurückgegriffen werden.

Zum Schluss bat ich ChatGPT noch darum, die Karte auf die gesamte Bildschirmbreite anzupassen, und hatte nach insgesamt 29 Prompts mein Ergebnis, das ich kopieren und mit Visual Studio Code in eine html-Datei übertragen konnte:2

Screenshot der fertigen Karte; ein Link zur interaktiven Karte findet sich am Ende des Beitrags

Kann ChatGPT rudimentäre Coding Kenntnisse ersetzen?

Die Frage kann mit einem deutlichen „Jein“ beantwortet werden. Auf der einen Seite kann mit ChatGPT in natürlicher Sprache kommuniziert werden, womit die Notwendigkeit relativiert wird, für kleine Anwendungen wie Leaflet selbst coden können zu müssen. Auf der anderen Seite zeigt sich gerade hier der Vorteil, als Geschichtswissenschaftler*in „sprechfähig“ gegenüber der KI zu sein und die eigenen Bedürfnisse klar formulieren zu können – besonders wenn es darum geht, Probleme effektiv zu beheben oder Details im Code anzupassen. Wenn man hier Vorkenntnisse hat, kann man ChatGPT sehr viel leichter und schneller in die richtige Richtung weisen. Bedenkt man die Zeitersparnis, stellt ChatGPT also eine große Hilfe bei der Umsetzung dar, dennoch bleibt es dabei, dass es ohne Datenexpertise nicht gehen wird. KI-Modelle können jedoch die Arbeit stark erleichtern und in manchen Fällen die Einstiegshürden deutlich verringern. Daher möchte ich Sie zum Schluss dazu ermuntern, das Erstellen von interaktiven Karten mit den hier genannten Tools selbst auszuprobieren! Nur wenn wir neue Tools testen, können wir in Erfahrung bringen, wie und ob sie für unsere Disziplin fruchtbar gemacht werden können.

Wenn Sie das Ergebnis und den Weg dorthin nachvollziehen wollen, können Sie sich den gesamten Gesprächsverlauf mit ChatGPT und die fertige Karte ansehen.

Alexander Goebbels ist wissenschaftlicher Mitarbeiter am Lehrstuhl für Frühe Neuzeit und beschäftigt sich mit dem Einsatz von digitalen Methoden in der universitären Lehre.
  1. GeoJSON ist ein offenes und standardisiertes Format, mit dem sich geographische Informationen und Strukturen codieren lassen. []
  2. Um den Code zu testen, habe ich Visual Studio Code mit dem Plugin Live Server verwendet. []

OpenEdition schlägt Ihnen vor, diesen Beitrag wie folgt zu zitieren:
DigiTRiP-Redaktion (15. November 2023). Interaktive Karten in der Geschichtswissenschaft: Welche Tools eignen sich für Studierende und Forschende? DigiTRiP. Abgerufen am 17. Januar 2025 von https://doi.org/10.58079/nn91


Das könnte dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.