Assignment Chef icon Assignment Chef
All German tutorials

Programming lesson

Erdbebendaten mit Turtle-Grafiken visualisieren: Ein kompletter Leitfaden für CSCI 141 Lab 8

Lerne, wie du historische Erdbebendaten aus einer CSV-Datei liest und mit Turtle-Grafiken auf einer Weltkarte darstellst – inklusive Schritt-für-Schritt-Anleitung, Codebeispielen und Tipps zur Farbgestaltung.

CSCI 141 Lab 8 Lösung Erdbebendaten visualisieren Python Turtle Grafiken Erdbeben CSV Datei einlesen Python Liste von Dictionaries Python Erdbeben Karte zeichnen Python Turtle Weltkarte Programmierung Erdbeben Visualisierung CSCI 141 Spring 2019 Lab 8 Turtle circle Methode Farbcodierung nach Magnitude Datenanalyse Erdbeben Python für Naturwissenschaften Erdbeben CSV Beispiel Turtle teleport Funktion Erdbeben Visualisierung Tutorial

Einführung: Erdbeben visualisieren – ein Klassiker der Informatik

In diesem Tutorial zeige ich dir, wie du mit Python und Turtle-Grafiken Erdbeben auf einer Weltkarte darstellst. Das Projekt stammt aus dem Lab 8 des Kurses CSCI 141 (Frühjahr 2019) und kombiniert wichtige Konzepte wie Dateieinlesen, Datenstrukturen und grafische Ausgabe. Gerade in Zeiten, in denen Naturkatastrophen durch den Klimawandel häufiger werden, ist das Verständnis von Erdbebendaten wichtiger denn je. Stell dir vor, du könntest mit deinem Code die gleiche Technik nutzen, die auch in Nachrichten-Apps oder Forschungsdashboards verwendet wird – genau das lernst du hier.

Setup und benötigte Dateien

Lege zunächst ein Verzeichnis lab8 an. Lade folgende Dateien von der Kurswebseite herunter:

  • plot_earthquakes.py – Skelettcode mit Pseudocode
  • earthquakes.csv – die Erdbebendaten
  • earth.png – Weltkarte als Hintergrund (wird automatisch geladen)

Die Weltkarte hat eine Größe von 720×360 Pixeln, wobei der Nullpunkt in der Mitte liegt. Längengrad (x) reicht von -180 bis 180, Breitengrad (y) von -90 bis 90. Um die Turtle-Koordinaten zu erhalten, multiplizierst du einfach jeden Wert mit 2.

CSV-Daten einlesen: Schritt für Schritt

Der erste Schritt ist das Einlesen der CSV-Datei. Die Datei enthält eine Kopfzeile, die du überspringen musst. Verwende das csv-Modul von Python, um die Daten in eine Liste von Dictionaries zu laden. Jedes Dictionary repräsentiert ein Erdbeben mit Schlüsseln wie latitude, longitude und magnitude. Hier ein Beispiel, wie der Code aussehen könnte:

import csv
def read_earthquake_data(filename):
    data = []
    with open(filename, 'r') as file:
        reader = csv.DictReader(file)
        for row in reader:
            data.append(row)
    return data

Beachte: csv.DictReader liest automatisch die erste Zeile als Schlüssel. So sparst du dir das manuelle Überspringen.

Die parse_row-Funktion implementieren

Die Skelettdatei enthält eine Funktion parse_row, die eine Zeile (ein Dictionary) in ein Tupel aus (lon, lat, mag) umwandelt. Achte darauf, die Werte in Fließkommazahlen umzuwandeln. Beispiel:

def parse_row(row):
    lon = float(row['longitude'])
    lat = float(row['latitude'])
    mag = float(row['magnitude'])
    return (lon, lat, mag)

Damit bereitest du die Daten für die grafische Darstellung vor.

Turtle-Grafik: Kreise zeichnen

Die Turtle-Grafik wird mit einem Hintergrundbild der Weltkarte initialisiert. Die Funktion teleport (aus Lab 5) bewegt die Turtle ohne Spuren zu hinterlassen. Für jedes Erdbeben rufst du teleport auf und zeichnest dann einen Kreis. Der Radius des Kreises soll proportional zur Magnitude sein. Zum Beispiel: turtle.circle(mag * 2). Optional kannst du die Farbe anpassen: Rot proportional zur Magnitude, Grün und Blau umgekehrt proportional. Hier ein Codeausschnitt:

import turtle
t = turtle.Turtle()
t.speed(0)
for quake in data:
    lon, lat, mag = parse_row(quake)
    x = lon * 2
    y = lat * 2
    teleport(t, x, y)
    t.color(1, 0, 0)  # rot
    t.circle(mag * 2)

Farbgebung nach Magnitude

Um die Kreise farblich nach Magnitude zu gestalten, berechnest du die RGB-Werte dynamisch. Ein einfaches Schema: red = mag / max_mag, green = 1 - red, blue = 1 - red. Dadurch werden starke Beben rot und schwache grün-blau. Du kannst auch nach Datum färben, wenn du eine Herausforderung suchst.

Häufige Fehler und Tipps

Ein typischer Fehler ist das Vergessen der Kopfzeile. Mit DictReader ist das aber kein Problem. Achte darauf, dass du die Turtle-Geschwindigkeit auf 0 setzt, sonst dauert das Zeichnen ewig. Teste dein Programm mit einer kleinen Anzahl von Zeilen, bevor du alle 500+ Beben zeichnest. Ein weiterer Tipp: Verwende try-except für den Fall, dass eine Zeile fehlerhafte Daten enthält.

Erweiterungen und aktuelle Bezüge

Stell dir vor, du würdest diese Technik nutzen, um Echtzeit-Erdbebendaten von einer API wie USGS zu visualisieren – so wie es viele Nachrichten-Websites tun. Oder du könntest die Daten nach Regionen filtern, um etwa die Pazifische Feuerkarte zu analysieren. Das Projekt ist eine hervorragende Übung für Prüfungen, da es viele Themen aus CSCI 141 zusammenführt: Datei-I/O, Listen, Dictionaries, Schleifen und Turtle-Grafik.

Abgabe und Bewertung

Deine Abgabe besteht aus einem ZIP-Archiv lab8.zip mit der bearbeiteten plot_earthquakes.py und einem Screenshot earthquakes.png. Die Bewertungskriterien umfassen: korrekte Dateistruktur (2 Punkte), Kopfkommentar (3 Punkte), Einlesen in Liste von Dictionaries (15 Punkte), Kreise für jedes Beben (5 Punkte) und Größenvariation (5 Punkte). Insgesamt 30 Punkte.

Fazit

Mit diesem Leitfaden hast du alle Werkzeuge an der Hand, um die Aufgabe erfolgreich zu lösen. Nutze die Gelegenheit, um dein Verständnis von Python-Datenstrukturen zu vertiefen. Viel Erfolg bei deinem Lab 8!