Blog

Folium und Geopandas: FeatureGroup für kategorische Daten

Wie kategorische Daten auf einer mit Folium erstellten Karte einzelnen Ebenen (FeatureGroup) zugeordnet werden können.

Folium ist eine Python-Bibliothek zum Erstellen von interaktiven Karten. Die geplotteten Marker oder Polygone können mit folium.FeatureGroup() einzelnen Ebenen zugeordnet werden, die mit einem Mausklick an- und ausgeschaltet werden können.

Alle Beispiele, die ich im Netz gefunden habe, definieren jede einzelne Ebene explizit mit einem Befehl wie:

 feature_group1 = FeatureGroup(name='Foo')

Wenn ich kategorische Daten in einem Geopandas.GeoDataFrame habe, dann möchte ich sicher nicht per Hand für jede Kategorie eine Ebene erstellen. Zum Glück können wir das automatisieren, indem wir jede initialisierte FeatureGroup einfach an eine Liste anhängen. Hier ein Beispiel mit Vulkanen.

Ein kurzer Blick auf die Daten:

 volcanoes.info()


RangeIndex: 1233 entries, 0 to 1232
Data columns (total 13 columns):
 #   Column             Non-Null Count  Dtype   
---  ------             --------------  -----   
 0   number             1233 non-null   int64   
 1   name               1233 non-null   object  
 2   country            1233 non-null   object  
 3   vtype              1233 non-null   object  
 4   evidence           1233 non-null   object  
 5   last_eruption      1233 non-null   object  
 6   region             1233 non-null   object  
 7   subregion          1233 non-null   object  
 8   elevation          1233 non-null   int64   
 9   rocks              1198 non-null   object  
 10  tectonic_setting   1230 non-null   object  
 11  last_eruption_int  787 non-null    float64 
 12  geometry           1233 non-null   geometry
dtypes: float64(1), geometry(1), int64(2), object(9)
memory usage: 125.4+ KB

Ich möchte nun eine Karte, die nach Gesteinstyp gruppiert ist.

grouped = volcanoes.groupby('rocks')

Da die Farbpaletten von Seaborn besonders schön sind, erzeuge ich damit eine Liste mit Farben im HTML-Hex-Format. Die Anzahl der benötigten Farben ist len(grouped).

import seaborn as sns
pal = sns.color_palette("husl", len(grouped)).as_hex() 

Da ich in diesem Beispiel nicht möchte, dass auch die Basiskarte (das Tilelayer) im LayerControl angezeigt wird, initialisiere ich die Karte ohne tiles und füge ein TileLayer mit control=False hinzu:

m = folium.Map(tiles=None)
folium.TileLayer('cartodbpositron', control=False).add_to(m)

Nun iterieren wir durch den gruppierten GeoDataFrame. Für jede Kategorie wird eine FeatureGroup erzeugt, die an eine Liste angehängt wird. Dann werden Marker für entsprechende Vulkane der zuletzt initialisierten FeatureGroup hinzugefügt.

f_groups = []

for group_name, group_data in grouped:
    f_groups.append(folium.FeatureGroup(group_name))
    color = pal.pop()
    
    for i in range(0,len(group_data)):

        # html for popup of markers
        html=f"""
            <h2>  {group_data.iloc[i]['name']} </h2>
            <small>
            <p> Country: {group_data.iloc[i]['country']}  <br/>
            Elevation: {group_data.iloc[i]['elevation']}  <br/>
            Last Eruption: 
            {group_data.iloc[i]['last_eruption']}  <br/>
            Rocks: {group_data.iloc[i]['rocks']}  <br/>
            Tectonic Setting: 
            {group_data.iloc[i]['tectonic_setting']}  </p>
            </small>
            """

        iframe = folium.IFrame(html=html, width=300, height=200)
        popup = folium.Popup(iframe, max_width=650)

        # Add markers to last FeatureGroup    
        folium.CircleMarker(
            location=[group_data.iloc[i].geometry.y, 
                      group_data.iloc[i].geometry.x],
            radius=5,
            popup=popup,
            tooltip=group_data.iloc[i]['name'],
            fill_color=color,
            stroke = False, 
            fill_opacity = 1,
        ).add_to(f_groups[-1])

    # Add last featureGroup to Map
    f_groups[-1].add_to(m)

folium.LayerControl().add_to(m)

m

Das Alter der ozeanischen Lithosphäre

Die Bewegungen der Plattentektonik werden auf Karten, die das Alter der ozeanischen Kruste zeigen, besonders deutlich.

Alter der ozeanischen Lithosphäre

Die Untersuchung der Ozeanböden brachte entscheidende Argumente, die dazu führten, dass sich die Theorie der Plattentektonik in den 1960er-Jahren durchsetzen konnte. Tatsächlich kann man die Drift der Kontinente und das Werden und Vergehen der Ozeane auf Karten, die das Alter der ozeanischen Kruste zeigen, regelrecht ablesen. Durch die Prozesse der Plattentektonik wird ozeanische Kruste ständig recycelt; sie entsteht neu an den mittelozeanischen Rücken, an den Subduktionszonen verschwindet sie wieder (siehe auch mein Buch Bewegte Bergwelt). Aus diesem Grund ist der Boden der Ozeane im Maßstab der Erdgeschichte nirgends sonderlich alt.

Ich zeige hier zwei Karten, die ich mit PyGMT geplottet habe: Die Weltkarte ist eine Mollweide-Projektion, die Colormap ist „inferno“. Die andere Karte zeigt den Atlantik. Dabei wird besonders deutlich, wie sich dieser Ozean wie eine Schere öffnet, während Sibirien und Alaska noch immer zusammenhängen. Dies ist eine orthographische Projektion.

Alter der ozeanischen Lithosphäre im Atlantik

Seit ich PyGMT entdeckt habe, ist dies eines meiner bevorzugten Werkzeuge, um Karten zu zeichnen. Man kann damit nicht nur die Topografie (DEM) herunterladen und plotten, sondern auch das Alter der ozeanischen Lithosphäre:

age = pygmt.datasets.load_earth_age(resolution="10m")

Mithilfe von Masken habe ich das mit der Topografie kombiniert. Die Lage der Vulkane ist vom Global Volcanism Program.

PyGMT: Verschiedene colormaps für Land und Wasser

Eine korrekte Küstenlinie in der Karte dank grdlandmask, damit Holland nicht unter Wasser ist.

Update: Für eine verbesserte Version siehe mein Jupyter Notebook.

Mit Python und PyGMT ist es ziemlich einfach, eine einfache Topokarte zu zeichnen, die auf den Höhendaten der NASA (Public Domain!) beruht. Allerdings beruht der einfachste Ansatz darauf, dass eine colormap alles unter 0 m NN in Blautönen, alles über 0 m NN in Grün-/Brauntönen einfärbt (z.B. mit cmap=“geo“). Bei einer Weltkarte oder Bergen sieht das Ergebnis gut aus, bei Küstenlinien gibt es aber Probleme. Eine Karte von Holland macht das Problem deutlich:

import pygmt
region=[3.2, 6.8, 51.4, 53.5]
grid = pygmt.datasets.load_earth_relief(resolution="03s", 
       region=region)

fig = pygmt.Figure()
fig.grdimage(grid=grid, projection="M15c", cmap="geo")
fig.colorbar(frame=["a10", "x+lElevation", "y+lm"])
fig.coast(shorelines=True, region=region, resolution="f")
fig.show()

Land unter! In den Tutorials und Docs habe ich keine Anleitung gefunden, wie das Problem gelöst werden kann. Mithilfe von pygmt.grdlandmask war es dann ganz einfach. Der Ansatz beruht auf der Küstenlinie der Funktion fig.coast(). Die erzeugte Maske setzt für jedes Pixel den für „Land“ bzw. „Wasser“ festgelegten Wert, z.B. 0 oder 1. Der erste Trick ist, dass diese Maske einfach mit dem grid multipliziert werden kann, dann werden alle Wasser-Pixel auf 0 gesetzt. Jetzt können wir das Land mit einer geeigneten colormap zeichnen, z.B. cmap=“dem1″. Als spacing für die Maske verwende ich den Wert der resolution des verwendeten Datasets; resolution der Maske ist „f“ (full resolution), wie bei fig.coast().

(Update: Anstatt die Maske mit pygmt.grdlandmask für die Region zu berechnen, kann ab pygmt 0.9 mit pygmt.datasets.load_earth_mask ein fertiges Maskengrid heruntergeladen werden, mit 0 für Ozean, 1 für Land, 2 für See, 3 für Insel, 4 für „Pond“.)

Das Wasser plotten wir im zweiten Schritt darüber. Allerdings können wir jetzt nicht einfach „maskvalues=[1, 0]“ verwenden, weil dann das Land zu Flachwasser der Tiefe 0 wird. Es ist aber zum Glück möglich, bei der Maske „NaN“ (als string) als Wert anzugeben. Und in fig.grdimage können wir mit nan_transparent=True sicherstellen, dass das Land nun transparent ist.

land = grid * pygmt.grdlandmask(region=region, 
     spacing="03s", 
     maskvalues=[0, 1], 
     resolution="f")
wet = grid * pygmt.grdlandmask(region=region, 
     spacing="03s", 
     maskvalues=[1, "NaN"], 
     resolution="f")

fig = pygmt.Figure()

# Plotte Land (mit Hillshading)
fig.grdimage(grid=land, projection="M15c", 
     cmap="dem1", shading=True) 
fig.colorbar(frame=["a10", "x+lElevation", "y+lm"])

# Plotte Wasser (NaN transparent)
fig.grdimage(grid=wet, 
     cmap="seafloor", nan_transparent=True)

fig.coast(shorelines=True, projection="M15c", 
     region=region, resolution="f")
fig.coast(rivers="1/0.5p,blue") # Flüsse

fig.show()

Trekking-Karte mit PyGMT und Python zeichnen

Einfache Karte mit GPS-Track in Python und PyGMT am Beispiel der Tour du Mont Blanc.

Karte der Tour du Mont Blanc
Karte der Tour du Mont Blanc, erstellt mit PyGMT

Mithilfe von PyGMT ist es ziemlich einfach, gut aussehende Karten zu zeichnen. Als Beispiel zeige ich hier, wie eine einfache Trekking-Karte der Tour du Mont Blanc erstellt werden kann. Im Detail ist die Syntax etwas esoterisch und geht auf die Syntax des General Mapping Tools zurück (siehe Docs von PyGMT).

import pygmt
import geopandas as gpd
import pandas as pd

Wenn der gesamte GPS-Track eine einzige Datei ist, können wir ihn mit dem folgenden Befehl in einen GeoDataFrame einlesen. Handelt es sich um viele Dateien, siehe GPS track (GPX-Datei) in Geopandas öffnen.

track = gpd.read_file('gpx/tmb.gpx', layer='tracks')

Wir können mit track.plot() einen ersten Eindruck des Tracks bekommen, und track.total_bounds gibt die maximalen/minimalen Werte von Länge und Breite.

Mit pygmt.datasets.load_earth_relief lade ich die Topo-Daten (der NASA) aus dem Web. Für diesen Maßstab ist resolution="01s" (1 Bogensekunde) geeignet, bei Übersichtskarten (ganze Regionen, Kontinente, Welt) muss unbedingt eine andere Auflösung gewählt werden. Die Topodaten werden mit grdimage gezeichnet. Die Funktion coast kann nicht nur Küsten, sondern auch große Flüsse und Grenzen zeichnen. Die Funktion plot zeichnet die Geometrie des Tracks.

lat_min, long_min, lat_max, long_max = track.total_bounds

# Add some margin
lat_min -= 0.1
lat_max += 0.1
long_max += 0.06
long_min -= 0.05

region = [lat_min, lat_max, long_min, long_max]

grid = pygmt.datasets.load_earth_relief(resolution="01s", region=region)

fig = pygmt.Figure()
fig.grdimage(grid=grid, projection="M15c", cmap="dem2", shading=True)
#fig.colorbar(frame=["a1000", "x+lElevation", "y+lm"])

# Plot borders
fig.coast(borders=["1/0.5p,red,..-"], resolution="f")

# Plot track
fig.plot(data=track, pen="1.5p,white")
fig.plot(data=track, pen="0.8p,blue")
fig.show()

So sieht die Karte schon ganz gut aus, es fehlen aber noch die Orte und wichtige Gipfel. Ich fange mit einer einfachen Liste an und versuche, die Koordinaten per Geocoding zu bekommen.

peaks_list = [ 'Mont Blanc', 'Grandes Jorasses', 'Mont Dolent']
towns_list = ['Chamonix', 'Les Houches', 'Les Contamines', 'Courmayeur', 'Praz de Fort', 'Champex', 'Martigny']

# Get coordinates with gpd.tools.geocode
# (requires GeoPy)

peaks = gpd.tools.geocode(peaks_list)
peaks['label'] = peaks_list

towns = gpd.tools.geocode(towns_list)
towns['label'] = towns_list

Mit dem Code unten können diese Orte über die obige Karte geplottet werden. Allerdings war Les Contamines auf der Karte nicht zu sehen, weil die von geocode zurückgegebenen Koordinaten nicht korrekt waren. Ich bereite mit einer Liste einen weiteren Geodataframe vor und hänge ihn an. Außerdem definiere ich weitere „places“.

correct_towns = [['Les Contamines', 45.822746, 6.726553]]

correct_towns = pd.DataFrame(correct_towns, columns = ['label', 'latitude', 'longitude'])
correct_towns = gpd.GeoDataFrame(
    correct_towns, geometry=gpd.points_from_xy(correct_towns.longitude, correct_towns.latitude))

towns = towns.append(correct_towns)

# These places did not get usable coordinates
# with geocoding
# and I also want different markers
places = [['Col de la Forclaz', 46.059, 7.0022],
         ['Flégère', 45.9604, 6.8865]]
 
places = pd.DataFrame(places, columns = ['label', 'latitude', 'longitude'])

Jetzt können wir die Karte vervollständigen. Mit plot zeichnen wir verschiedene Markierungen für Städte, Gipfel und andere Orte; text schreibt das Label daneben (x mit kleinem Abstand).

fig.plot(data=towns, style="c0.2c", color="white", pen="black")
fig.text(text=towns.label, x=towns.geometry.x + 0.005, y=towns.geometry.y, justify="ML", font="10p")

fig.plot(x=places.longitude, y=places.latitude, style="c0.15c", color="black")
fig.text(text=places.label, x=places.longitude + 0.005, y=places.latitude, justify="ML", font="8p")

fig.plot(data=peaks, style="t0.2c", color="black")
fig.text(text=peaks.label, x=peaks.geometry.x + 0.005, y=peaks.geometry.y, justify="ML", font="10p")

fig.show()

Leider sind die Topo-Daten nicht immer ganz fehlerfrei, mit virtuellen Gipfeln und Löchern. Und die Küsten von Seen sind bei diesem Maßstab ziemlich ungenau. Die Idee, eine Karte des Torres del Paine Cirquit zu zeichnen, habe ich daher verworfen.

KML mit GoogleEarth Placemarks in Geopandas öffnen

Alle Placemarks in allen Ordnern einer KML-Datei in einen GeoDataFrame mit minidom importieren (Python)

Update: Für eine aktuellere Version siehe mein Jupyter Notebook

Beim Spielen mit Python und Geopandas wollte ich meine GoogleEarth-Ortsmarken in einen Geopandas GeoDataFrame importieren. Das war komplizierter als erwartet. Geopandas kann theoretisch KML (das von GoogleEarth verwendete Format) öffnen und parsen:

geopandas.read_file() 

Es verwendet die Bibliothek fiona dafür. Diese importiert jedoch nur den ersten Ordner und meine Ortsmarken sind in vielen Ordnern organisiert. Nachdem ich mehrere auf KML spezialisierte Module ausprobiert hatte, stellte sich heraus, dass es einfacher ist, das KML mit dem Standard-Python-Modul minidom zu parsen. KML ist schließlich XML. Ich habe auch eine Spalte mit dem Pfad des Ordners erstellt (die meisten meiner Ortsmarken sind unbenannt, die Ordnernamen sind die nützlichsten Informationen). Das ist nicht wirklich schnell, aber es funktioniert.

import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as plt
from xml.dom.minidom import *

# KML-Datei öffnen

dom = parse('travel.kml')

# Definiere eine Funktion, um den Pfad einer Ortsmarke zu bekommen

def subfolders(node):
    if node.parentNode == dom.documentElement:
        return ""
    else:
        foldername = node.getElementsByTagName("name")[0].firstChild.data
        path = subfolders(node.parentNode) + "/" + foldername
    return path

# Parse das DOM der KML-Datei
# Für jedes Placemark ein Tupel mit Name, lat, long, Ordnername, Pfad
# Hänge das Tupel an eine Liste von Tupeln an

entries = []
placemarks = dom.getElementsByTagName("Placemark")

for i in placemarks:
    longitude = i.getElementsByTagName("longitude")[0].firstChild.data
    latitude = i.getElementsByTagName("latitude")[0].firstChild.data
    try:
        name = i.getElementsByTagName("name")[0].firstChild.data
    except:
        name = ""
    parent = i.parentNode
    foldername = parent.getElementsByTagName("name")[0].firstChild.data
    path = subfolders(parent) 
    entries.append((name, latitude, longitude, foldername, path)) # Liste von Tupeln


df = pd.DataFrame(entries, columns=('name', 'latitude', 'longitude', 'folder', 'path'))
gdf = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df.longitude, df.latitude, crs="EPSG:4326"))

Nun können wir mit gdf.head() einen Blick auf unseren GeoDataFrame werfen, ihn als CSV speichern mit gdf.to_csv("travel.csv") und das CSV wieder öffnen mit gdf = gpd.read_file("travel.csv").

Jetzt könnten wir die Placemarks zum Beispiel auf einer einfachen Weltkarte darstellen und auch eine konvexe Hülle („Bounding Box“) um sie herum zeichnen.

# Verwende natural earth dataset als Grundkarte
natworld = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))

# Für die convexe Hülle brauchen wir eine Geomtrie mit allen Placemarks
combined = gdf.dissolve()

# Plot
fig, ax = plt.subplots(figsize=(10,5))
natworld.plot(ax=ax, color="darkgrey", edgecolor="lightgrey")
gdf.plot(ax=ax, color="blue", marker=".")
combined.convex_hull.plot(ax=ax, color="none", edgecolor="red")

Ergebnis:

Grafik speichern:

fig.savefig("bounding-box.png")

GPS track (GPX-Datei) in Geopandas öffnen

Es ist einfach, einen kompletten Ordner mit GPS-Tracks (GPX-Dateien) in Geopandas zu öffnen, z.B. zum Plotten von Karten oder um sie als Shapefile zu exportieren.

Wer in Python programmiert, möchte vielleicht GPS-Tracks (aufgenommen mit einem GPS-Gerät oder einem Mobiltelefon und einer Tracking-App) in einem GeoDataFrame nutzen. Es ist einfach, die Tracks aller GPX-Dateien eines bestimmten Ordners zu importieren.

 

import geopandas as gpd
import os
folder = "gpx/"

Ich möchte einen GeoDataFrame mit 2 Spalten: 1) Dateiname und 2) Geometrie des Tracks.

# Leerer GeoDataFrame
track = gpd.GeoDataFrame(columns=['name', 'geometry'], geometry='geometry')

Versuch, alle gpx-Dateien im Ordner zu öffnen. Geopandas verwendet Fiona zum Öffnen/Parsen von gpx. Die Ebene „Tracks“ enthält nur den Track ohne Wegpunkte/Zeitstempel (gut genug, um eine Karte zu zeichnen).

for file in os.listdir(folder):
    if file.endswith(('.gpx')):
        try:
            gdf = gpd.read_file(folder + file, layer='tracks')
            track = track.append(gdf[['name', 'geometry']])
        except:
            print("Error", file)

track.sort_values(by="name", inplace=True)
track.reset_index(inplace=True, drop=True)

Jetzt können wir den GeoDataframe plotten, bearbeiten oder exportieren.

# Als Shapefile speichern
track.to_file(folder + 'track.shp')

# Einfacher Plot
track.plot()

Mit PyGMT können hübsche Karten der GPS-Tracks geplottet werden. Wie GPS-Tracks ausgewertet und auf einer interaktiven Karte gezeichnet werden können, erkläre ich in Runkeeper GPS-Tracks mit Python analysieren (Teil 1) und Runkeeper GPS-Tracks mit Python analysieren (Teil 2).

Verregnete Ostalpen

Dachstein vom Unteren Gosausee
Dachstein vom Vorderen Gosausee

Was ein Wetter. Wer diesen Juli in den Alpen verbracht hat, kann ein Lied davon singen: Es regnet, regnet, regnet. Statt jeden Tag zu wandern und Berge zu besteigen, verbringe ich letztlich die meiste Zeit damit, auf besseres Wetter zu warten. Und der Wetterbericht erweist sich als völlig unbrauchbar: Wenn mein Handy eine Warnung „Schweres Gewitter“ bekommt, scheint die Sonne. Wenn es sonnig sein soll, schüttet es wie aus Eimern. Und wenn ich hunderte Kilometer fahre, weil das Wetter dort besser sein soll, schafft es die Schlechtwetterfront doch bis zu mir…

Ich wollte diesen Sommer unbedingt in die Ostalpen, weil ich diese bisher regelrecht vernachlässigt habe. Ich arbeite gerade an der 2. Auflage meines Buchs Bewegte Bergwelt und ich wollte dafür noch einige Fotos machen. Diese bekomme ich tatsächlich in den Regenpausen zusammen. Zumindest mehr oder weniger.

Dachstein und Gesäuse

Dachstein Südwand
Dachstein Südwand

Meine erste Regenpause habe ich früh morgens an der Südwand des Dachsteins. Während es schüttet, fahre ich um das Dachsteinmassiv herum zum Unteren Gosausee und wandere tropfend zum Oberen Gosausee und zurück. Erst gegen Sonnenuntergang reißt es wieder auf … und bei Sonnenaufgang noch einmal. Die Wolken, die zwischen den zackigen Kalksteinzacken oberhalb des Sees hindurchziehen, sehen ziemlich gut aus und entschädigen ein wenig den verpassten Gipfel.

Am Oberen Gosausee
Am Vorderen Gosausee

Nun fahre ich weit nach Osten bis ins Gesäuse, weil dort das Wetter angeblich ganz gut bleiben soll — letztlich regnet es dort aber ebenfalls. Die Enns zwängt sich hier zwischen den hoch aufragenden Kalkbergen Hochtor und Buchstein hindurch. Besonders schön ist der „Gesäuseeingang“ bei Weng, der plötzliche Übergang von weitem Tal zu enger Schlucht.

Gesäuseeingang bei Weng
Gesäuseeingang bei Weng

Vom anderen Ende der Schlucht ist es nur ein kurzer Abstecher zum Erzberg bei Eisenerz. Hier wird eine große metasomatische Siderit-Lagerstätte abgebaut (vgl. Die Welt der Rohstoffe). Ich nutze die Gelegenheit, einen Blick (von außen) auf den großen Tagebau zu werfen.

Gesäuseeingang bei Weng
Gesäuseeingang bei Weng

Die nächsten Tage folg sintflutartiger Regen. In Berchtesgaden wird eine Straße teilweise weggespült, überall gehen Muren ab und Wege werden unpassierbar. Ich verbringe so viel Zeit wie möglich unterirdisch. Das Salzbergwerk von Hallstatt ist enttäuschend, es geht von einer Lichtshow zur nächsten und ich fühle mich eher in einem Vergnügungspark als in einem Bergwerk.

Dafür ist die Eisriesenwelt bei Werfen wirklich großartig. Der Eingang zu dieser Eishöhle liegt hoch über dem Salzachtal. Ich erreiche ihn mit einer Kombination aus Schuttlebus, Seilbahn und kurzem Fußmarsch. Sobald die Tür geöffnet wird, strömt ein starker eisiger Wind aus der Höhle. Innen geht es in einem schrägen Schacht aufwärts und die ersten Eisformationen kommen in Sicht. Oben angekommen geht es durch mehrere kleine Hallen, die mit „Stalaktiten“ und „Stalagmiten“ aus bläulichem Eis gefüllt sind. Und besonders toll dabei ist, dass die Höhle nicht mit Scheinwerfern ausgeleuchtet ist. Wir bekommen ein paar Karbidlampen, hin und wieder wird ein Magnesiumstab abgebrannt, das ist alles — und das sorgt für eine besonders schöne Stimmung.

Hohe Tauern

Großglockner und Pasterze
Großglockner und Pasterze

Am ersten halbwegs guten Tag fahre ich früh morgens über die Großglockner-Hochalpenstraße zur Kaiser-Franz-Josephs-Höhe. Eigentlich will ich den Fuscherkarkopf besteigen, doch leider ist der Gamsgrubenweg und damit der Einstieg gesperrt: Auch hier ist ein Mure heruntergekommen. Stattdessen mache ich nur einen Spaziergang zum Gletschertor der Pasterze. Am Vormittag ballen sich schon wieder Quellwolken an den Gipfeln, während ich entlang der Straße Aussichtspunkte wie Hochtor und Edelweißspitze ansteure. Eigentlich wollte ich als Nächstes zur Kürsingerhütte für einen guten Blick auf den Großvenediger, aber eine Mure hat diese Hütte für längere Zeit quasi unerreichbar gemacht.

Für meine einzige richtige Bergtour erwische ich den einzigen Tag mit perfektem Wetter: Die Watzmann-Überschreitung ist einen eigenen Artikel wert.

Mainzer Höhenweg

Hohe Geige vom Mainzer Höhenweg

Anschließend fahre ich in die Ötztaler Alpen, ins Pitztal, und steige zur kleinen, gemütlichen Rüsselsheimer Hütte auf. Am nächsten Tag wandere ich bei gutem Wetter über den Mainzer Höhenweg zur Braunschweiger Hütte: 10 Stunden durch alpines Gelände. Anfangs geht es unterhalb der Gipfel von einem Kar zum nächsten: Ich stapfe über Gletscherreste, kraxle durch Rinnen und über Felsriegel. Auf gar nicht so alten Fotos haben die Gletscher noch Spalten, jetzt leider fast eher Schneefelder!

Gletscherrest am Mainzer Höhenweg

Schließlich erreiche ich den Grat und folge diesen auf den Wassertalkogel (3252 m). Am Gipfel steht eine kleine orangerote Biwakschachtel, die wie eine Mischung aus Popart und Mondlandefähre aussieht. Der Blick ist großartig, insbesondere auf Wildspitze, Watzespitze und Verpeilspitze.

Blick vom Wassertalkogel zur Wildspitze
Blick vom Wassertalkogel zur Wildspitze

Über den Grat und mehrere kleinere Gipfel geht es weiter, bis ich die sehr schön gelegene Braunschweiger Hütte erreiche. Die Gletscher im Hintergrund haben in den letzten Jahrzehnten ganz schön viel Fläche eingebüßt!

Watzespitze und Verpeilspitze
Watzespitze und Verpeilspitze

Die Braunschweiger Hütte ist voller Wanderer, die hier ihren Höhepunkt bei der Alpenüberquerung auf dem E5 (von Oberstdorf nach Meran) haben. Ich stelle fest, dass alle mit dem Bus das gesamte Pitztal hinaufgefahren sind. Damit sinkt mein Respekt vor dieser Route in den Keller. Ganz davon abgesehen, dass Meran ja noch mitten in den Alpen liegt, dahinter könnte man noch wundervoll längs über die Brenta laufen!

Braunschweiger Hütte
Braunschweiger Hütte

Granatenwand

Ich folge den E5 hinab zum Auto, fahre das Tal hinab und das Ötztal wieder hinauf. Von Obergurgl nehme ich die Bahn auf die Hohe Mut: Ein grandioser Aussichtsplatz. Auf beiden Seiten des Grasrückens verlaufen parallel zueinander zwei Bilderbuch-U-Täler, dahinter vergletscherte Berge. Ich folge dem Rücken ein Stück und steige dann links in das Tal ab. Der Berg auf der anderen Seite heißt zu Recht Granatenkogel, schon in der Grundmoräne am Talboden sind zahlreiche große Granatkristalle zu finden. An der Gletscherstirn steige ich über die unangenehm steile und ziemlich rutschige Seitenmoräne zur berühmten Fundstelle „Granatenwand“ auf. Im Hangschutt liegen zahlreiche Granate, die ich nur aufzusammeln brauche. Leider zieht ein Gewitter auf und ich habe keine Zeit, auch den eigentlichen Fels anzusehen. Im strömenden Regen krabble ich die Moräne wieder hinab…

Auf der Hohen Mut
Auf der Hohen Mut

Eibsee und Zugspitze

Mein nächstes Ziel ist die Zugspitze. Bei Sonnenaufgang komme ich am Eibsee unterhalb dieses Berges an und sehe gerade noch, wie der Berg in Wolken verschwindet. Ich gehe auf der Nordseite entlang, durch hügeliges blockiges Gelände, an kleinen Tümpeln vorbei, bis zum besten Aussichtspunkt. Hier sieht man über die Inselchen hinweg zur Zugspitze. Bis diese zwischen den Wolken auftaucht, muss ich aber ziemlich lange warten.

Eibsee mit Zugspitze
Eibsee mit Zugspitze

Die Inseln, Buchten und Tümpel gehen auf einen gewaltigen Bergsturz irgendwann in der Bronzezeit zurück. Ein Teil der Zugspitze rauschte in den See, die Abrissnische ist das V-förmige Bayrische Schneekar, vom Eibsee gesehen links unterhalb des Hauptgipfels. Die Bergsturzmasse schlitterte regelrecht durch den See hindurch und brandete am gegenüberliegenden kleineren Berg auf.

Später nehme ich die Seilbahn hinauf, stecke dann aber wieder in einer Wolke. Der Blick auf den „Gletscher“ ist trotzdem frei, aber mit all den Skianlagen nicht gerade schön.

Kurz vor Sonnenaufgang reißt es wieder auf. Ich stehe am Geroldsee: Im Vordergrund einige Heuschober, hinter dem See leuchtet der Karwendel rot auf. Am nächsten Morgen schüttet es wieder und ich werfe wieder alle Pläne um.

Geroldsee mit Karwendel
Geroldsee mit Karwendel

Zillertal und Zittauer Hütte

Als Ersatz für die noch immer unerreichbare Kürsingerhütte will ich zur Zittauer Hütte, die sich ganz im Westen der Hohen Tauern befindet. Während ich das Zillertal hinauf fahre, ist das Wetter plötzlich wieder gut und ich schiebe spontan eine kleine Wanderung dazwischen: Von Mayrhofen mit der Ahornbahn hinauf und via Edelhütte zur Ahornspitze (2973 m). Allerdings stecken die höheren Berge noch immer in den Wolken.

Zittauer Hütte am Unteren Gerlossee

Am nächsten Tag biege ich vom Gerlospass zum Hotel Finkau ab und wandere talaufwärts zur Zittauer Hütte. Erst geht es durch eine kurze Klamm, später über eine Steilstufe und an der Moräne entlang. Die Hütte liegt sehr schön am Unteren Gerlossee, darüber ragen Gabler, Reichenspitze und Wildgerlosspitze auf. Ich steige zum Oberen Gerlossee auf und steuere dann weglos die Wildkarspitze (3073 m) an. Erst geht es durch eine steile Rinne, dann in Kletterei im 2. Grad über den Grat auf und ab bis zum Gipfelkreuz. Von einem einzigen Steinmann abgesehen ist die Strecke nicht markiert und es gibt keine Sicherungen.

Unterer Gerlossee

Am nächsten Morgen wandere ich zum Rosskopf, einem beliebten Aussichtsgipfel. Allerdings lässt das Wetter schon wieder zu Wünschen übrig und ich bin Mittags wieder am Auto.

Mittenwalder Klettersteig

Blick von der Westlichen Karwendelspitze

Für meine letzte Tour fahre ich, der Wetterprognose folgend, die Stecke von vor 2 Tagen wieder zurück ins Karwendel. Morgens von Mittenwald mit der ersten Bahn hinauf, dann zum Aufwärmen auf einem 10-Minuten-Klettersteig zur Westlichen Karwendelspitze. Die höchsten Gipfel des Gebirgszugs schauen gerade so aus den wabernden Wolken heraus, was grandios aussieht. Zurück zur Karwendelgrube an der Bergstation (diese große Kuhle im Grat ist eine Doline) geht es auf der anderen Seite mehr oder weniger dem Grat folgend über den Mittenwalder Klettersteig. Der ist landschaftlich sehr hübsch (wobei die Wolken es vielleicht noch spannender machen), ansonsten ziemlich einfach und nicht gerade sehr ausgesetzt. Je weiter ich komme, desto grüner werden die Hänge und desto mehr lösen sich die Wolken auf. Am anderen Ende steige ich, nach einem Abstecher zur Brunnsteinspitze, über die Brunnsteinhütte wieder ins Tal ab.

Karwendel vom Mittenwalder Klettersteig
Karwendel vom Mittenwalder Klettersteig

Watzmann-Überschreitung

Die Kraxelei über den Grat des Watzmanns dürfte die schönste Bergtour in Deutschland sein.

Der Watzmann über Berchtesgaden
Der Watzmann über Berchtesgaden (rechts Hocheck und Hauptgipfel, links Kleiner Watzmann)

„Groß und mächtig …“ Bei dieser Tour muss ich ständig an den Song von Ambros und Co. denken. Das sind aber keine um den Gipfel jagende Nebelschwaden, der Gipfel steckt während des Hüttenaufstiegs in einer dicken, penetranten Wolkendecke. Immerhin hatte zwei Tage zuvor ein heftiges Unwetter im Berchtesgadener Land Überschwemmungen und Muren ausgelöst. An diesem Tag sollte es eigentlich wieder besser sein, aber der Wetterbericht hat in diesem regnerischen Sommer in den Alpen fast nie recht. Ich hoffte nur, dass es am nächsten Tag so sonnig werden würde wie angekündigt.

Vom Parkplatz Wimbachhütte nehme ich nicht den direkten Weg zum Watzmannhaus, sondern marschiere erst einmal zur Achenkanzel, einem Aussichtspunkt hoch über dem Königssee. Tief unter mir liegt der See sogar teilweise in der Sonne, nur Schade, dass die Berge im Hintergrund nicht zu sehen sind. Abends sitze ich mit FFP2-Maske in der komplett belegten Hütte.

Blick vom Haupt- zum Südgipfel des Watzmanns
Immer den Grat entlang: Blick vom Haupt- zum Südgipfel des Watzmanns

Als einer der ersten breche ich in der Morgendämmerung auf und steige Richtung Hocheck auf. Bei Sonnenaufgang bin ich auf halber Höhe. Der Himmel ist fast wolkenfrei, nur über dem Königssee liegt eine dichte Nebelschicht. Später frühstücke ich auf dem ersten Gipfel, dem Hocheck. Hier ziehe ich Klettergürtel und Helm an und sobald die erste Gruppe auftaucht, gehe ich weiter über den Grat. An ausgesetzten Stellen gibt es immer ein Drahtseil, in das ich mich einklicken kann. In leichter Kletterei erreiche ich bald den Hauptgipfel (2713 m), wo ich fast allein bin. Besonders eindrucksvoll ist hier der Blick zum Südgipfel, in dessen Ostwand eine Wolke hängt. Der hinüberführende Grat sieht spektakulär aus, ich finde ihn aber letztlich leichter, als es von oben aussieht. Schließlich sitze ich für ein zweites Frühstück auf dem Südgipfel und damit meinem dritten Gipfel.

Wimbachgries
Wimbachgries

Der Weg hinab zieht sich. Immer wieder geht es durch steile Rinnen und über bröckelige Felsen, das Gelände ist dermaßen steinschlaganfällig, dass ich nur im Schneckentempo vorwärts komme. Während der obere Teil des Bergs aus dem für Bergsteiger angenehmen Dachsteinkalk besteht, geht es nun durch die darunter liegenden Dolomite (Karn-Norischer Dolomit und Ramsaudolomit, dazwischen die tonig-mergeligen Raibler Schichten). Diese sind bei tektonischer Beanspruchung viel spröder und daher zerbrochen und stark geklüftet.

Wenn man das Gefühl hat, schon fast unten zu sein, kommt doch noch eine Steilstufe, bevor man endlich das breite Tal Wimbachgries erreicht. Von den zackigen Bergen rund herum reichen zahlreiche Murgänge abwärts, die sich im Tal zu einem riesigen Schuttstrom vereinigen. Bei starken Regenfällen kommt dieser in Bewegung, ansonsten liegt der Schotter ruhig da und das Wasser der Bäche versickert darunter.

Wimbachgries
Wimbachgries

Das Tal mit dem weiten Schotterbett führt parallel zum Watzmannmassiv zum Auto zurück. Anfangs ist die merkwürdige Landschaft noch ungewohnt und gefällt, mit der Zeit will das Tal jedoch kein Ende nehmen…

Watzmann von Maria Ger
Watzmann von Maria Gern

Am nächsten Morgen will ich den Berg noch in den schönsten Postkartenansichten fotografieren: bei Sonnenaufgang beim Kirchlein Maria Gern, der Blick von der Straße über Berchtesgaden und schließlich vom Gipfel des Jenner. Allerdings ist der Watzmanngipfel schon wieder in Wolken verschwunden, bis ich mit der ersten Bahn auf dem Jenner ankomme…

Blick vom Jenner auf Königssee und Watzmann
Blick vom Jenner auf Königssee und Watzmann

Anschließend gehe ich noch die kurze Runde über Rabenwand und Malerwinkel, die bekanntesten Aussichten auf den Königssee. Auf dem Weg zurück zum Parkplatz kommen mir Menschenmassen entgegen und ich bin froh, dass ich früh aufgestanden und mit meinem Programm schon fertig bin.

Königssee von Rabenwand
Königssee von Rabenwand

Vor meiner Watzmann-Tour habe ich in Ramsau bei meist strömendem Regen auf besseres Wetter gewartet. Da hatte ich viel Zeit, um den Zauberwald und den Hintersee zu erkunden. Beide gehen auf einen gewaltigen Bergsturz zurück, der nach den Eiszeiten vom Hochkalter herunterrauschte und den Bach aufstaute. Die großen Felsblöcke im Wald, im Bach und auch am Seeufer machen den Reiz dieser Landschaft aus.

Hintersee bei Ramsau
Hintersee bei Ramsau

Beliebtes Kapitel

Ziemlich cool: Ein Kapitel in The World of Mineral Deposits (Englische Ausgabe von Die Welt der Rohstoffe) „war unter den Springer Nature 2020 Highlights — einer Auswahl der beliebtesten Artikel und Buchkapitel, die im letzten Jahr veröffentlicht wurden“ (d.h. von Springer Nature veröffentlicht). Was auch immer das bedeutet…

Florian Neukirchen, Gunnar Ries
The World of Mineral Deposits
A Beginner’s Guide to Economic Geology

Triglav, Krn und Soča

Meine Wanderungen durch den Triglav-Nationalpark in den Julischen Alpen in Slowenien führten zu beeindruckenden Aussichten auf schroffe Kalkberge und kleine Bergseen und den schönen Bergfluss Soča entlang.

Zasavska koča, Triglav-Nationalpark
Abendstimmung an der Zasavska koča, Triglav-Nationalpark

Es gibt viele Wege auf den Triglav, den höchsten Berg Sloweniens, und da alle landschaftlich reizvoll sind, fiel mir die Wahl schwer: vom Norden aus dem Vrata-Tal über die Klettersteige entlang der hohen steilen Nordwand? Oder doch lieber die lange, mehrtägige Route vom Süden, von See zu See und Hütte zu Hütte durch das „Tal der Triglav-Seen“ (auch: „Tal der Sieben Seen“ oder „Tal der Fünf Seen“)? Die Kombination war mir zu unpraktisch, da ich dann ja irgendwie zum Auto zurück müsste.

Triglav

Ich entschied mich für den Aufstieg vom Norden — und dafür, anschließend einen Trek durch das Tal der Triglav-Seen zu machen. Es war der erste Tag mit gutem Wetter nach heftigen Gewittern, bei Sonnenaufgang wanderte ich im Vrata-Tal vom Parkplatz der Hütte Aljažev Dom auf die Nordwand des Triglav zu.

Nordwand des Triglav vom Vrata-Tal
Nordwand des Triglav vom Vrata-Tal

Drei Klettersteige führen von hier aufwärts zu den Schultern unterhalb des Gipfelklotzes: Der Bamberg-Weg (Plemenice) rechts der Nordwand, der (einfache) Prag-Weg links der Nordwand und der Tominšek-Weg noch etwas weiter links. Ich nahm den Bamberg-Weg hinauf, der etwas schwerer und weniger überlaufen ist und schöne Blicke in die Nordwand bietet. Zunächst führt ein Weg in die Scharte nordwestlich des Triglavs, wo ich den Klettergurt anzog.

Auf dem Bamberg-Weg hinauf zum Triglav
Auf dem Bamberg-Weg hinauf zum Triglav

Mit schönen Blicken geht es den steilen Grat hinauf, bis auf ein hügeliges Karstplateau, das vom Gipfelklotz des Triglav überragt wird. Es folgt ein zweiter, leichterer Klettersteig bis zum Gipfel, auf dem es bereits von Bergsteigern wimmelte, die von der anderen Seite aufgestiegen waren. Ich war gerade noch rechtzeitig gekommen, um die Aussicht zu genießen, wenig später waberten die Wolken nach oben und es war nicht mehr viel zu sehen.

Blick vom Triglav
Blick vom Triglav

Auf der gegenüberliegenden (östlichen) Seite folgte ich dem Normalweg über den von Wolken umwaberten Grat abwärts zur Triglav-Hütte. Das Gedränge war mir zu groß, um zu verweilen (Mittagszeit). Später stieg ich versehentlich über den Prag-Weg ab (ich hatte den schöneren Tominšek-Weg geplant, aber die Tourenbeschreibung falsch im Kopf und nur auf die Karte, nicht auf den Zettel geschaut). Am späten Nachmittag war ich schon wieder unten an der Aljažev-Hütte.

Abstieg zur Triglav-Hütte
Abstieg zur Triglav-Hütte

Prisojnik Fensterweg

Am nächsten Tag fuhr ich auf den Vršič-Pass, wo es einen interessanten Klettersteig gibt: Der Prisojnik Fensterweg führt durch ein ca. 50 m hohes Felsfenster hindurch. Oben angekommen stieg ich natürlich noch auf den Gipfel des Prisojnik auf, mit einem tollen Blick über die Julischen Alpen, bevor ich über einen einfachen Weg wieder zum Pass abstieg.

Fenster am Prisojnik
Fenster am Prisojnik (der schwarze Punkt gegen den Himmel ist ein Bergsteiger)

Bei der Weiterfahrt nach Trenta hielt ich noch an der Quelle der Soča: Der Bergfluss strömt in Form eines Siphons aus einer kleinen Höhlenöffnung.

Triglav-Seen und Krn

Aufstieg zur Zasavska koča
Aufstieg zur Zasavska koča

Von Trenta startete ich eine Mehrtageswanderung zu den Triglav-Seen und den Krn (ungefähr so). Ein Stück das Zadnjica-Tal hinauf, dann nach rechts zu einem Sattel und schließlich auf einem gut ausgebauten Militärweg aus dem 1. Weltkrieg zur kleinen Hütte Zasavska koča, die wunderschön auf dem Gipfel des Prehodavci liegt. Den Nachmittag nutzte ich, um die nähere Umgebung zu erkunden, mit kleinen Seen, Karren und schönen Aussichten. Ich stieg auch Richtung Triglav auf (bis zum Sattel), der aber in Wolken versteckt war.

Abendstimmung an Zasavska koča
Abendstimmung an Zasavska koča
Karren an der Zasavska koča
Karren an der Zasavska koča
Zasavska koča, Morgenlicht
Zasavska koča, Morgenlicht

Am nächsten Morgen wanderte das Tal der Triglav-Seen hinab bis zur Triglav-Seen-Hütte. Wirklich wunderschön war der auf halber Strecke liegende größte See, Jezero v Ledvicah. Die kleinen Seen bei der Hütte waren hingegen voller Algen und es stand technische Ausrüstung wie Netze und Pumpen herum, um sie zu retten. Einer war mit Flatterband abgesperrt…

Jezero v Ledvicah im Tal der Triglav-Seen
Jezero v Ledvicah im Tal der Triglav-Seen
Triglav-Seen-Hütte
Triglav-Seen-Hütte

In ständigem auf und ab wanderte ich nun meist durch lichten Bergwald (und an vielen Schüsselförmigen Dolinen vorbei) zur Bogatin-Hütte. Nach dem Mittagessen stieg ich zu einem kleinen Pass auf und wanderte weiter zur Krn-Hütte. Natürlich machte ich noch einen kurzen Abstecher zum sehr hübschen Krn-See, aber auch zum direkt neben der Hütte hinter den Bäumen versteckten Dupelsjko Jezero.

Krn-See
Krn-See

Zum Krn starte ich früh morgens (ich hatte beobachtet, dass dieser Berg immer einer der ersten war, der Mittags in Wolken verschwand), zum Frühstück saß ich bei Sonnenaufgang am Krn-See. Die Nordseite des Berges ist eine Felswand, doch sobald man den Sattel links davon erreicht hat, stellt man fest, dass die andere Seite eine steil abfallende Wiese ist. Der Berg war im 1. Weltkrieg stark umkämpft und noch immer sind Reste der Stacheldrahtverhaue zu sehen. Vom Gipfel aus stieg ich über diese nach Süden ab und bog zum Dorf Drežnica ab. Nach einem zweiten Mittagessen im einzigen Restaurant rief ich ein Taxi und ließ mich bis Bovec fahren.

Krn-See
Krn-See

Soča

Soča, Velika Korita
Soča, Velika Korita

Die Soča ist ein wunderschöner Alpenfluss mit türkisem bis aquamaringrünem Wasser. Er ist berühmt für Kajak- und Raftingtouren, beliebt ist aber auch der Wanderweg von der Quelle bei Trenta bis Bovec, der Soča Trail bzw. Soška Pot, eine Etappe des Alpe-Adria-Trails. Ich nehme diesen Weg, um von Bovec zurück zum Auto zu kommen.

Soča, Zmuklica
Soča, Zmuklica

Meist hat die Soča ein breites Bett, mit Schotter- und Kiesstränden, großen Steinblöcken, Stromschnellen und Gumpen. Dreimal zwängt sie sich durch ein paar Meter tiefe, sehr enge Schluchten. Das Wasser wirbelt dort unten in engen Kurven von einem Kolk zum nächsten. Am schönsten ist die besonders tiefe Velika Korita, wo auch noch ein paar kleine Wasserfälle die Seitenwand hinabstürzen. An der Zmuklica, der untersten Schlucht, war ich recht früh am morgen und daher fast allein, was sehr schön war. Währenddessen war an der Mala Korita, weiter flussaufwärts, bereits einiges los.

Soča, Mala Korita
Soča, Mala Korita

Wasserfälle und Schluchten

Mir blieben noch zwei Tage mit viel Regen. Ich ließ mich auf einem Campingplatz bei Bovec nieder, machte eine Raftingtour und ein paar Ausflüge…

Slap Virje
Slap Virje

Nahe Bovec liegt der kleine, aber sehr hübsche Wasserfall Slap Virje, das Wasser rieselt in Vorhängen über Kalksinter. Nur leider wird das meiste Wasser direkt oberhalb zu einem Wasserkraftwerk abgeleitet, sonst wäre der Wasserfall noch viel beeindruckender! Der Bach entspringt nur ca. 300 m entfernt in einer Karstquelle namens Izvir Glijuna: Das Wasser strömt aus den Ritzen zwischen moosbewachsenen Kalkblöcken.

Izvir Glijuna
Karstquelle Izvir Glijuna

Wenige Kilometer entfernt ist der mächtigste Wasserfall des Landes, Slap Boka (dessen Wasser übrigens direkt oberhalb des Wasserfalls aus einer Karstquelle kommt). Ich wanderte links (von unten gesehen) des Wasserfalls aufwärts von einem Aussichtspunkt zum nächsten, bis ich höher als das obere Ende des Wasserfalls stand und auf diesen hinabblicken konnte.

Slap Boka
Slap Boka

Die Tolminer Klammen besuchte ich bei derart heftigem Regen, dass ich kaum Fotos machen konnte, alles war sofort tropfnass. Die Schlucht ist hübsch, mit ein paar wirklich schönen Stellen, aber das Ganze ist sehr klein und nach einer halben Stunde war ich wieder beim Auto.

Tolminer Klammen
Tolminer Klammen

Weiterlesen