Mannheims Luftqualität im Vergleich
Ausschnitt des Prototypes

Halvar Kelm, Jeremias Kunz, Philipp Schick, Gaston Magnin & Daniel Reichler

Mannheims Luftqualität im Vergleich

Vergleich der Luftqualität von Mannheim mit anderen deutschen Städten

Im Zusammenhang mit der Smart City-Strategie der Stadt Mannheim befasst sich unsere Visualisierung sich mit dem Thema Luftqualität und will verschiedene Aspekte beleuchten, welche Einfluss auf die Luftqualität in einer Stadt haben. Dazu vergleichen wir neben Mannheim 50 weitere deutsche Städte in Punkten wie Flächennutzung oder Feinstaubkonzentration. Unsere wichtigste Datenquelle dafür sind die Luftqualitätsdaten, welche vom Umweltbundesamt zur Verfügung gestellt werden, diese enthalten auch die Daten der MVV Luftqualitätssensoren welche im Rahmen des “sMArt roots”-Projekts aufgestellt wurden.

Dieses Projekt ist im Rahmen des Kurses “Grundlagen der Datenvisualisierung” im Wintersemester 2021/22 an der Hochschule Mannheim unter der Leitung von Prof. Dr. Till Nagel entstanden.

Einführung

Die Luftqualität in einer Stadt wird durch viele Indikatoren beeinflusst. Da es viele Einflüsse für eine schlechte oder gute Luftqualität gibt und es nicht möglich ist, für jeden Faktor eine geeignete Datenquelle zu finden, begannen wir damit in der Explorationsphase unseres Projektes nach interessanten Fragestellungen zu suchen, für die wir auch geeignete Datenquellen finden können. Beispiele für interessante Fragestellungen, für die wir aber nur unzureichende Daten zur Verfügung hatten waren:

  • Haben Städte mit einem höheren Verkehrsaufkommen eine schlechtere Luftqualität?
  • Haben Städte mit mehr Stau eine schlechtere Luftqualität?

Leider mussten wir alle Fragestellungen, welche etwas mit dem Verkehrsverhalten einer Stadt zu tun haben, verwerfen, da wir nicht geeignete bzw. genügend Datenquellen finden konnten. Letztendlich fiel unsere Wahl auf die Analyse der Flächennutzung wie Industrie- und Landwirtschaftsgebiete in Bezug auf die Luftqualität einer Stadt und die Untersuchung, wie Mannheim bei diesen Aspekten im Vergleich zu anderen Städten abschneidet. Hier für konnten wir eine API finden, welche uns für ganz Deutschland die Flächennutzungsdaten zur Verfügung stellte. Zusätzlich planten wir allgemeine Daten wie die Bevölkerungsdichte in den Vergleich mit einzubeziehen.

Daten

Luftqualitätsdaten

Die Luftqualitätsdaten sind unsere wichtigste Datenquelle, da unsere Fragestellung direkt auf sie Bezug nimmt. Das Umweltbundesamt stellt eine API für alle verfügbaren Luftsensoren in Deutschland bereit. Die Daten werden alle 10 Minuten aktualisiert und es ist möglich zurückzuspringen und ältere Luftdaten abzurufen. Die Luftsensoren liefern alle Werte für den Luftqualitätsindex:

  • NO₂ (Stickstoffdioxid)
  • SO₂ (Schwefeldioxid)
  • CO (Kohlenstoffmonoxid)
  • O₃ (Ozon)
  • PM₁₀ (Schwebstaubfraktion)

Die API liefert die Daten der Sensoren im JSON Format. Aufgrund dessen, dass die API nicht so einfach für eine Stadt die Luftsensordaten wiedergeben kann, mussten wir zuerst mit mehreren Abfragen die IDs der Luftsensoren herausfinden und diese jeder einzelnen Stadt zuweisen. Die Zuweisung speicherten wir in einer eigenen JSON-Datei. Das ermöglicht es uns mit einem einfachen Funktionsaufruf alle Luftsensoren für eine Stadt beim Umweltbundesamt abzurufen.

Flächennutzungsdaten

Auch auf die Flächennutzungsdaten nehmen wir in unserer Fragestellung direkten Bezug. Auch diese Daten werden von einer API zur Verfügung gestellt. Hier standen wir vor dem Problem, dass die API schlecht dokumentiert ist und es sich deshalb schwierig gestaltete die Flächennutzungsdaten für unsere Zwecke zu extrahieren.

Um Daten wie Industrielle- oder Landwirtschaftsflächen einer Stadt abzufragen, muss der API der Umriss der Stadt als Polygon übergeben werden. In der API selbst liegen keinerlei Daten darüber vor, welche Fläche zu welcher Stadt gehört. Die Polygone für die einzelnen Städte haben wir aus einem Github-Projekt entnommen, welches sie bereits als GeoJSON bereitstellt. Das alles machte das Extrahieren der Flächennutzungsdaten sehr aufwendig. Da es sich bei den Flächennutzungsdaten nicht um besonders dynamische Daten handelt, haben wir alle benötigten Daten einmal abgefragt und in einer JSON-Datei gespeichert. Unsere Visualisierung greift dann nicht mehr auf die API zu, sondern nur noch auf unsere JSON-Datei, in der die Flächen direkt nach Städten geordnet sind. Ob eine Fläche ein Waldgebiet, ein Gewässer oder von einem anderen Flächentyp ist, wird mit der CORINE Land Cover nomenclature gekennzeichnet. Zusätzlich liefern die Daten Informationen zur Größe der einzelnen Flächen und stellen uns auch somit Daten zur Gesamtfläche der Städte, die verglichen wird, zur Verfügung.

Einwohnerzahl / Bevölkerungsdichte

Wenn man verschiedene Städte miteinander vergleichen möchte, sind zur Bevölkerungsanzahl eins der ersten Attribute, welche einem in den Sinn kommen. Neben der einfachen Anzahl der Einwohner einer Stadt wollen wir auch die Bevölkerungsdichte präsentieren. Während man die Einwohnerzahl umgangssprachlich gerne mit der “Größe” einer Stadt gleichsetzt, kann man die Bevölkerungsdichte meist als Indiz für andere Eigenschaften einer Stadt nutzen. So ist die Bevölkerungsdichte in einer von Wohnblocks geprägten Stadt natürlich höher als in einem Zusammenschluss von mehreren ländlichen Gemeinden zu einer Stadt, auch wenn die absolute Fläche eventuell gleich ist.

Unsere Daten haben wir vom Statistischen Bundesamt bezogen. Die Daten wurden als Exceldatei bereitgestellt und zuletzt am 31. August 2021 aktualisiert. Wir extrahierten mit der Hilfe eines Pythonskripts die Daten aus der Datei und fügten sie zu der JSON-Datei hinzu, welche bereits die Daten zur Flächennutzung enthält.

Visualisierungsexperimente

Abbildung 1: Tableau-Visualisierung; Mannheim mit seinen Flächennutzungsdaten

Um uns einen Überblick über die Flächennutzungsdaten zu verschaffen, haben wir sie uns mit dem Tool Tableau visualisiert. In Abbildung 1 ist die Visualisierung der verschiedenen Flächen für Mannheim zu sehen. Die farbigen Flächen repräsentieren die einzelnen Nutzungsflächen wie Industrie oder Landwirtschaftsflächen, dabei stellen die großen roten Flächen Waldgebiete dar. Diese Waldflächen verursachten Probleme, da sie sehr groß sind und über die Gemarkung einer Stadt hinausragen. Um diese Probleme zu umgehen, entfernten wir alle Waldflächen aus unserem Datensatz. Wir planten für unsere spätere Visualisierung eine solche Darstellung für jede untersuchte Stadt zu Verfügung zu stellen.

Zur Auswahl der Städte welche wir später präsentieren, mussten wir zuerst herausfinden, welche Städte überhaupt über eine ausreichende Anzahl von Luftsensoren verfügen. Dazu erstellten wir wieder eine Karte in Tableau mit den Luftdaten des Umweltbundesamtes.

Abbildung 2: Tableau-Visualisierung; Luftsensoren von ganz Deutschland

Mithilfe dieser Visualisierung (vgl. Abbildung 2) konnten wir feststellen, welche Städte mögliche Kandidaten für unsere endgültige Visualisierung sind. In die Liste unserer Kandidaten nahmen wir alle Städte auf, welche über zwei oder mehr Luftsensoren verfügen. Für diese Liste überprüfen wir dann, für welche Städte wir alles die Flächennutzungsdaten erhalten können. Letztendlich erhielten wir so eine Liste von ca. 50 Städten, welche wir dann in unsere Visualisierung aufnehmen wollten.

Um ein Gefühl für unser Dashboard zu erhalten und zu sehen, ob unsere Visualisierungsideen Sinn ergeben, erstellten wir mit Adobe XD ein Mock-Up.

Abbildung 3: Mockup des Dashboard im Adobe XD

In Abbildung 3 ist das Mockup für unser Dashboard zu sehen. Die Idee war es, das Dashboard in zwei Bereiche einzuteilen. Die linke Seite repräsentiert die obere Hälfte des Dashboards und soll dem Nutzer einen Überblick über die Städte mithilfe mehrerer Visualisierungen geben. Die rechte Seite repräsentiert den unteren Teil des Dashboards. Hier hat der Nutzer die Möglichkeit, Mannheim mit einer der Städte zu vergleichen. Im Vergleich werden Karten in Form von Abbildung 1 dargestellt, welche noch weitere interaktive Elemente bieten sollen. Unter den Karten folgen die Vergleiche der Bevölkerungszahlen, der Anteile der unterschiedlichen Nutzungsflächen und der einzelnen Luftdaten.

Vorstellung des Prototypen

Die Grundstruktur unseres Prototypen entspricht der Struktur aus unseres Mock-ups aus Abbildung 3. Das Dashboard ist weiterhin in zwei Bereiche aufgeteilt. Der obere Bereich enthält Visualisierungen, die alle Städte auf einmal darstellen und somit einen Überblick liefern.

Legende und Luftqualitätsmesswertdropdown

Abbildung 4: Positionierung der Legende im Dashboard und mit der Möglichkeit, den angezeigten Messwert zu ändern

Abbildung 4 zeigt die Legende des Dashboards. Diese ist fest angepinnt und bewegt sich beim Scrollen mit, da sie für fast alle Visualisierungen benötigt wird. Über der Legende befindet sich ein Dropdown-Menu, in dem der Messwert ausgewählt werden kann, welcher dann in den Visualisierungen dargestellt wird. Der Nutzer hat die Wahl zwischen PM₁₀, NO₂ und O₃ zu wechseln. Der Wechsel gilt dann für das ganze Dashboard.

Oberer Teil

Im oberen Teil des Dashboards befinden sich drei Visualisierungen, zwischen denen der Nutzer über Buttons jederzeit wechseln kann.

Tabellarische Visualisierung
Abbildung 5: Tabelle mit hervorgehobener Primär- und Sekundär-Stadt. Die Luftqualitätsbewertung entspricht der Farbe aus der Legende

Die Tabelle bietet einen Überblick über alle 51 Städte, welche in unserem Dashboard zur Auswahl stehen (siehe Abbildung 5). Sie zeigt für alle Städte die zur Verfügung stehenden Daten.

Die Tabelle enthält die folgenden Informationen: Stadtnamen, Bevölkerung, Bevölkerung pro km², Stadtfläche in km², Industriefläche in km², Industriefläche in Prozent und die Luftqualität. Die Luftqualität entspricht den aktuellsten Luftqualitätsdaten und wird je nach Bewertung farbig gekennzeichnet. Es wird immer der Messwert angezeigt, welcher auch in der Legende ausgewählt ist. Die Bewertung der Luftqualität erfolgt mithilfe des offiziellen Luftqualitätsindex. Der Nutzer hat die Option, die Tabelle auf oder absteigend zu sortieren, abhängig von einer beliebigen Spalte der Tabelle. Dazu muss er nur auf den Namen der entsprechenden Spalte klicken. Die Sortierung erfolgt dann je nach Information, alphabetisch oder numerisch. Wichtig zu erwähnen ist, dass in unserem Dashboard eine Primär- und Sekundär-Stadt existiert. Per Default ist Mannheim immer als Primär-Stadt ausgewählt. In der tabellarischen Visualisierung werden die Primär-Stadt und die Sekundär-Stadt farbig hervorgehoben, damit sofort zu erkennen ist, welche beiden Städte gerade ausgewählt sind.

Deutschlandkarte
Abbildung 6: Deutschlandkarte mit allen 51 Städten und einer Rangliste für den ausgewählten Messwert.

Um dem Nutzer einen Überblick über die geografische Lage der gezeigten Städte zu geben, haben wir uns für eine Dot-Density-Map entschieden. Sie zeigt Deutschland und jede Stadt, welche Teil unseres Dashboards ist, ist mit einem Ring markiert. Dadurch kann man überlagernde Städte besser auseinanderhalten und behält den Überblick über die dargestellten Städte. Die ausgewählten Städte, Primär- und Sekundär-Stadt, werden durch das Ausfüllen ihrer Ringe besonders hervorgehoben, sodass man sie sofort auf der Karte erkennen kann. In Abhängigkeit von der Luftqualität werden die Ringe farbig markiert, die Bedeutung der Farben kann man der Legende entnehmen. Die Luftqualität wird mithilfe des Durchschnitts aller Luftsensordaten der Stadt ermittelt. Das ermöglicht es, eventuelle geografische Cluster zu erkennen.

Hovert man über einen Ring, erhält man den Stadtnamen und die Beschreibung der Luftqualität. Klickt man auf einen Ring, wird die Sekundär-Stadt ausgewählt und man scrollt automatisch zum unteren Teil des Dashboards, wo man sofort den Vergleich der Primär-Stadt zur geklickten Stadt sehen kann.

Neben der Karte steht eine Rangliste zur Verfügung, diese zeigt alle Städte nach dem ausgewählten Messwert sortiert. Für die bessere Übersicht werden nur die fünf besten und fünf schlechtesten Städte und die Primär-Stadt gezeigt. Dadurch kann man sofort erkennen, wo Mannheim mit seinem Messwert unter den 51 Städten einzuordnen ist.

Scatter-Plot
Abbildung 7: Scatter-Plots: einmal der ausgewählten Messwert im vergleich mit dem Anteil an Industrieflächen und einmal mit der Bevölkerungsdichte

In Abbildung 7 sind zwei Scatter-Plots zu sehen. Die Scatter-Plots waren insbesondere dabei hilfreich, unsere Hypothese, ob eine Korrelation zwischen der Luftqualität und der Bevölkerungsdichte oder dem Anteil an Industriefläche einer Stadt besteht, zu untersuchen.

Die angezeigten Punkte im Scatter-Plot sind ebenfalls Ringe wie auf der Dot-Density-Map damit ein einheitliches Design beibehalten wird und dem Nutzer verständlich wird, das die Farben noch immer der Luftqualität im Durchschnitt entsprechen. Außerdem helfen auch hier die Ringe Überschneidungen leicht auseinanderzuhalten. Mithilfe des Toggle-Buttons hat der Nutzer die Möglichkeit, den Luftmesswert entweder in Abhängigkeit vom Industrieanteil oder der Bevölkerungsdichte der einzelnen Städte anzeigen zu lassen. Die ausgefüllten Städte sind die hervorgehobene Primär- und Sekundärstadt, dadurch lassen sie sich sofort im Scatter-Plot finden. Auch hier hat der Nutzer die Möglichkeit, durch einen Klick auf eine Stadt, in den unteren Teil des Dashboards zu gelangen und kann dann den direkten Vergleich betrachten.

Unterer Teil

Im unteren Teil des Prototypen wird die Primär- und Sekundärstadt direkt miteinander verglichen. Auf der linken Seite befindet sich die Primär-Stadt, welche standardmäßig auf Mannheim eingestellt ist. Folglich befindet sich die Sekundärstadt auf der rechten Seite.

Abbildung 8: Direkter Vergleich zweier Städte mithilfe von BigNumbers, Choroplethenkarte, Kreisdiagramm und Liniendiagramm

Auf beiden Seiten befindet sich jeweils ein Dropdown-Menü, worüber sich die ausgewählte Stadt ändern lässt. Die Sekundär-Stadt lässt sich auch über die Visualisierungen im oberen Teil wechseln, die Primär-Stadt kann “nur” über das Dropdown-Menü gewechselt werden. Jede Stadt wird jeweils über eine eigene Choroplethenkarte dargestellt. In der Choroplethenkarte kann der Nutzer sich frei bewegen und nach Belieben zoomen. Die Stadt selbst ist markiert und ausgefüllt, damit sie besser zu erkennen ist. Die Industrieflächen werden dabei mit einer roten Farbe dargestellt und heben sich somit von der Farbe der restlichen Fläche ab. Die restliche Fläche ist hellblau und stellt den restlichen Teil der Stadt dar. Mithilfe der Choroplethenkarte kann der Nutzer besser erkennen, wie viel Fläche die Industrie in der Stadt einnimmt, da der reine Wert meist keine große Aussagekraft besitzt. Zusätzlich werden die Luftsensoren als Punkte auf der Karte eingeblendet, damit man sehen kann, in welchen Bereichen der Stadt die Luftqualität gemessen wird. Dadurch können eventuell Gründe für abweichende Messwerte eines Luftsensors erkannt werden, wenn beispielsweise ein Sensor in der Innenstadt und einer in der Vorstadt positioniert ist. Wenn man über den Punkt eines Luftsensors hovered, wird ein Tooltip eingeblendet, welcher die Daten enthält, die der Luftsensor gemessen hat.

Unter der Karte folgt ein Kreisdiagramm, worin einmal der Industriegebietanteil im Verhältnis zum Rest der Stadt dargestellt wird. So kann man die tatsächlichen Verhältnisse erkennen, wenn die Karte eventuell irreführend ist. Unter dem Kreisdiagramm folgen BigNumbers mit dem Anteil an Industrieflächen, der absoluten Bevölkerungsanzahl, der Gesamtfläche und dem ausgewählten Luftmesswert der Stadt. Bei mehreren Sensoren wird der Durchschnitt des Luftmesswerts genutzt. Um den Vergleich zwischen den BigNumbers besser darzustellen, werden zwischen den Zahlen Vergleichsoperatoren angezeigt, welche in der Farbe der Stadt mit dem größeren Wert eingefärbt ist.

Abbildung 9: Verlauf der letzten 24 Stunden des ausgewählten Luftmesswerts der beiden ausgewählten Städte

Letztendlich folgt dem Vergleich ein Liniendiagramm, siehe Abbildung 9, das den Verlauf des ausgewählten Luftmesswerts in beiden Städten über die letzten 24 Stunden zeigt. Der Luftmesswert lässt sich über die Legende ändern. Die Farbe der Linie im Liniendiagramm entspricht der Farbe der Primär- und der Sekundär-Stadt. Da unser Dashboard immer die aktuellsten Luftdaten nutzt, erhält man somit die Werte der letzten 24 Stunden. Mithilfe des Liniendiagramms lassen sich Tageszeit abhängige Schwankungen gut erkennen.

Verwendete Technologien

Unsere Entscheidung für die Technologien, welche wir für unser Projekt verwendet haben, wurde stark durch die Vorerfahrungen unserer Teammitglieder beeinflusst. Das hielt den Einarbeitungsaufwand niedrig und ermöglichte uns, schnell mit der eigentlichen Entwicklung zu starten.

Wir haben unsere Webanwendung in Backend und Frontend aufgeteilt, wobei je ein eigener Server verwendet wurde. Für das Backend haben wir das auf Rest-Services spezialisierte JavaScript Framework ExpressJS verwendet. Darin befindet sich unsere große JSON-Datei, welche die Daten zu allen 51 Städten bündelt. Auch befindet sich im Backend ein Proxy, dieser ist notwendig für die Kommunikation mit der API des Umweltbundesamtes.

Für das Frontend verwendeten wir das populäre JavaScript Framework React mit den folgenden Paketen:

  • D3 für die verwendeten Visualisierungen
  • Leaflet für die Darstellung der Karten
  • (React-)Bootstrap für ein ansprechendes Design des Dashboards

Für die Aufbereitung der Daten verwendeten wir die Programmiersprache Python und das Paket Pandas.

Erkenntnisse

Eine Frage, welche wir mit unserem Dashboard beantworten wollten, war wie Mannheim im Vergleich zu anderen Deutschen Städten im Punkt Luftqualität abschneidet. Mithilfe unseres Dashboards ist es möglich, Mannheims Position für jeden Luftqualitätsmesswert unter den 51 Städten zu bestimmen. So konnten wir feststellen, dass Mannheim sich im eher im Mittelfeld der Luftqualität befindet. So findet man Mannheim beim Ozon (O₃) eher am Ende der Rangliste, dagegen werden beim Schwefeldioxid (SO₂) gute bis sehr gute Werte erreicht. Bei der Schwebstaubfraktion (PM₁₀) befindet sich Mannheim im Mittelfeld. So kommen wir insgesamt für Mannheim im Punkt Luftqualität zu dem Zeitpunkt unserer Beobachtung zu einer eher mittleren Einstufung.

Abhängig von der Tageszeit war es gelegentlich möglich, eine Korrelation zwischen den Messwerten für die Luftqualität und der Industriefläche bzw. der Bevölkerungsdichte im Scatterplot zu erkennen.

Dass die Luftqualität stark abhängig von der Tageszeit ist, ist eine weitere Erkenntnis, welche wir durch unser Dashboard erlangt haben. Mithilfe des Liniendiagramms kann man häufig beobachten, dass morgens die Luftmesswerte ansteigen, vermutlich durch das erhöhte Verkehrsaufkommen des Berufsverkehrs. Dies können wir leider nicht belegen, da uns die Verkehrsdaten in unserem Dashboard fehlen.

Des Weiteren ist uns aufgefallen, dass Städte, welche sich im Ruhrgebiet befinden, häufig eine schlechtere Luftqualität haben als andere Städte in anderen Regionen Deutschlands. Daraus lässt sich eine geografische Korrelation vermuten, aber dies tritt nur für das Ruhrgebiet in unserem Dashboard auf.

Fazit

Da viele Beobachtungen aus unserem Dashboard nur Momentaufnahmen sind, ist es schwierig, daraus sichere Erkenntnisse abzuleiten. Dennoch sind wir der Ansicht, das unser Dashboard dem Nutzer eine gute Möglichkeit bietet, sich über die Luftqualität in deutschen Städten zu informieren und Vergleiche zu ziehen. Die von uns ausgewählten Daten und Visualisierungen können dabei Hinweise geben, worin die Ursache für eventuelle Unterschiede liegen und den Nutzer zu weiterer Recherche und Untersuchungen anregen.

Ausblick

In einem nächsten Iterationsschritt hätten wir noch einige neue Features und Datenquellen zu unserem Dashboard hinzugefügt, welche vor allem aus zeitlichen Gründen es nicht mehr in unser Dashboard geschafft haben.

Um geografische Cluster im Scatterplot erkennen zu können, wäre eine Übergangsanimation zwischen Scatterplot und Dot-Density-Map hinzugefügt worden, bei der man die Bewegung der Städte von ihrem Punkt im Scatterplot zu ihrer Position auf der Deutschlandkarte beobachten kann. Zusätzlich haben wir geplant, dem Nutzer die Möglichkeit zu geben, Daten, welche weiter in der Vergangenheit liegen, zu betrachten. Bisher liefert unser Dashboard nur die Möglichkeit, die Luftqualitätsdaten der letzten 24 Stunden einzusehen.

Um die bestehenden Daten für den Nutzer interessanter aufzubereiten, hätten wir gerne die Durchschnittswerte der Messwerte aus allen unserer 51 Städte berechnet, doch leider ist der Rechenaufwand dafür so hoch, dass die Reaktionszeiten des Dashboards nicht mehr akzeptabel sind.

Als vollkommen neue Datenquelle hätten wir gerne Live-Verkehrsdaten in unser Dashboard eingebunden, sodass der Nutzer eventuelle zusammenhänge zwischen Verkehrsaufkommen und einzelnen Messwerten feststellen kann. Doch leider haben wir keine geeignete Datenquelle gefunden, um diesen Plan umzusetzen.

Abbildung 10: Ein Überblick über den gesamten Prototypen