Zurück zum Katalog
Season 40 11 Episoden 44 min 2026

GeoPandas

v1.1 — 2026 Edition. Ein Audiokurs über GeoPandas 1.1, die leistungsstarke Python-Bibliothek für Geodaten. Lerne, wie man geometrische Operationen durchführt, räumliche Daten manipuliert, mit Projektionen arbeitet und Karten erstellt.

Geodatenanalyse Datenwissenschaft
GeoPandas
Aktuelle Wiedergabe
Click play to start
0:00
0:00
1
Lerne GeoPandas kennen: Die Active Geometry Column
Eine Einführung in die zentralen Datenstrukturen von GeoPandas: die GeoSeries und das GeoDataFrame. Lerne, wie GeoPandas die bekannte pandas-Bibliothek erweitert, um Geo-Objekte zu verarbeiten, und verstehe das wichtige Konzept der Active Geometry Column.
4m 13s
2
Lesen und Schreiben: Schnelles I/O mit Pyogrio
Ein tiefer Einblick in das Laden und Speichern von Geodaten. Entdecke, wie GeoPandas die Pyogrio-Engine und Apache Arrow nutzt, um Datei-I/O drastisch zu beschleunigen, und wie man räumliche und Bounding-Box-Filter während des Ladevorgangs einsetzt.
4m 08s
3
Die Form der Erde: Projektionen und CRS
Verstehe Coordinate Reference Systems (CRS) und warum sie für die räumliche Genauigkeit unerlässlich sind. Lerne den Unterschied zwischen geografischen und projizierten Koordinaten kennen und erfahre, wie du deine Geometrien mit GeoPandas sicher transformieren kannst.
4m 08s
4
Raum formen: Buffers, Centroids und Convex Hulls
Entdecke, wie du aus bestehenden Geometrien völlig neue generieren kannst. Diese Episode behandelt grundlegende konstruktive Methoden wie die Berechnung von Centroids, die Erstellung von Buffer-Zonen und das Zeichnen von Convex Hulls.
3m 59s
5
Räumliche Prädikate: Intersects, Within und Contains
Lerne, wie man Fragen zu den Beziehungen zwischen verschiedenen Formen stellt. Wir untersuchen binäre räumliche Prädikate – wie Intersects, Within und Contains – um zu testen, wie Geometrien im Raum interagieren.
3m 59s
6
Abfragen beschleunigen: Der R-Tree Spatial Index
Entdecke den geheimen Motor hinter der Leistung von GeoPandas. Diese Episode deckt auf, wie der STR R-Tree Spatial Index Bounding Boxes nutzt, um den Rechenaufwand für räumliche Abfragen drastisch zu reduzieren.
3m 53s
7
Welten verschmelzen: Spatial und Nearest Joins
Bringe deine Datenintegration auf das nächste Level. Lerne, wie du zwei separate GeoDataFrames vollständig basierend auf ihren räumlichen Beziehungen zusammenführst, indem du Spatial Joins (`sjoin`) und Proximity Joins (`sjoin_nearest`) verwendest.
4m 24s
8
Mengenoperationen: Geometrien mit Overlays erstellen
Entdecke, wie du überlappende Formen schneiden, zusammenführen und aufteilen kannst. Diese Episode behandelt die leistungsstarke `overlay`-Methode und erklärt, wie man Intersections, Unions und Differences berechnet, um völlig neue Geometrien zu erstellen.
3m 52s
9
Spatial GroupBy: Aggregation mit Dissolve
Lerne, wie man Geodaten gruppiert. Wir untersuchen die `dissolve`-Methode, die als räumliches GroupBy fungiert und kleinere Geometrien zu größeren zusammenführt, während ihre tabellarischen Attribute nahtlos aggregiert werden.
3m 25s
10
Statisches Mapping: Choroplethenkarten erstellen und Layers plotten
Verwandle deine Geodaten in überzeugende Visualisierungen. Diese Episode behandelt die Integration von GeoPandas mit matplotlib und zeigt dir, wie du maßgeschneiderte Choroplethenkarten erstellst, mehrere Datensätze überlagerst und mit fehlenden Daten umgehst.
4m 04s
11
Interaktive Exploration und darüber hinaus
Erwecke deine Karten zum Leben. Wir schauen uns die `explore()`-Methode zur Erstellung interaktiver, webbasierter Karten an. Zum Abschluss beenden wir unsere GeoPandas-Reise und bereiten dich darauf vor, reale räumliche Anwendungen zu entwickeln.
4m 18s

Episoden

1

Lerne GeoPandas kennen: Die Active Geometry Column

4m 13s

Eine Einführung in die zentralen Datenstrukturen von GeoPandas: die GeoSeries und das GeoDataFrame. Lerne, wie GeoPandas die bekannte pandas-Bibliothek erweitert, um Geo-Objekte zu verarbeiten, und verstehe das wichtige Konzept der Active Geometry Column.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. GeoPandas, Folge 1 von 11. Herkömmliche Geodatensysteme zwingen dich normalerweise dazu, genau eine geometrische Form pro Datei zu speichern. Das bedeutet: Wenn du die Grenze eines Landkreises und seinen Mittelpunkt brauchst, musst du zwei separate Dateien verwalten. GeoPandas bricht diese Einschränkung auf und lässt dich Grenzen, Mittelpunkte und Buffer-Zonen direkt nebeneinander in einer einzigen Tabelle speichern. Lerne GeoPandas kennen: Die Active Geometry Column. GeoPandas ist eine Extension für die Data-Analysis-Library pandas. Es nimmt die bekannten DataFrame- und Series-Strukturen und fügt Spatial-Features hinzu. Unter der Haube arbeitet GeoPandas als Brücke zwischen tabellarischen Daten und Spatial Geometry. Es managt die Tabellenstruktur selbst, während es die eigentliche Mathematik von Points, Lines und Polygons an eine Spatial-Engine namens Shapely delegiert. Wenn du GeoPandas anweist, eine Area zu berechnen oder eine Boundary zu finden, übergibt es die relevanten Shapes an Shapely, holt sich das mathematische Ergebnis und fügt es passgenau wieder in deine Datenzeile ein. Die zwei Kern-Datenstrukturen, die das möglich machen, sind die GeoSeries und das GeoDataFrame. Eine GeoSeries ist eine einzelne Spalte, in der jede Zeile ein Shapely-Geometry-Objekt enthält. Ein GeoDataFrame ist ein Standard-pandas-DataFrame, der mindestens eine GeoSeries-Spalte enthält. Weil ein einziges GeoDataFrame mehrere Spatial-Spalten gleichzeitig enthalten kann, muss das System wissen, auf welche es abzielen soll, wenn du einen Spatial-Command ausführst. Das wird über die Active Geometry Column gemanagt. Hier ist die wichtigste Erkenntnis: Die Active Geometry Column ist ein funktionaler State, kein spezifischer Text-String. User verwechseln häufig eine Spalte, die buchstäblich geometry heißt, mit dem zugrundeliegenden Konzept der Active Geometry Column. By default sucht GeoPandas beim Laden von Daten nach einer Spalte namens geometry und weist ihr den Active-Status zu. Aber deine Spatial-Spalten können wirklich beliebig heißen. Entscheidend ist, welche den Active-Status hat, denn Spatial-Methods werden gezielt an diese aktive Spalte geroutet. Stell dir ein Dataset von lokalen Landkreisen vor. Du hast eine Spalte namens county_borders, die die komplexen Polygon-Outlines jeder Region speichert. In derselben Tabelle hast du eine weitere Spalte namens county_centroids, die einen einzelnen Punkt in der Mitte jeder Region speichert. Wenn die borders-Spalte den Active-Status hat und du das DataFrame anweist, die Area zu berechnen, bekommst du die komplette Fläche des Landkreises in Quadratmeilen zurück. Jede Distance-Calculation, die du ausführst, misst vom äußeren Rand dieser Landkreisgrenze. Wenn du stattdessen die Distance zwischen den Mittelpunkten der Landkreise messen willst, änderst du den Spatial-Context. Du rufst eine Methode namens set_geometry auf und übergibst den Namen der centroids-Spalte. Sofort wird county_centroids zur Active Geometry. Die borders-Spalte bleibt völlig intakt und behält deine Polygons, aber das System behandelt sie jetzt einfach als eine weitere Daten-Spalte. Wenn du jetzt eine Distance-Calculation ausführst, zielt GeoPandas automatisch auf die Mittelpunkte ab. Du wechselst sofort zwischen Spatial-Contexts, ohne Tabellen zu mergen oder doppelte Datasets zu managen. Das nützlichste Takeaway ist, dass ein GeoDataFrame ein Spatial-Container ist, der so viele Geometry-Layers aufnehmen kann, wie du brauchst, aber die Active Geometry diktiert, welches Spatial-Tool gerade im Einsatz ist. Wenn dir der Podcast gefällt und du die Show unterstützen möchtest, kannst du auf Patreon nach DevStoriesEU suchen. Das war's für diese Folge. Danke fürs Zuhören und keep building!
2

Lesen und Schreiben: Schnelles I/O mit Pyogrio

4m 08s

Ein tiefer Einblick in das Laden und Speichern von Geodaten. Entdecke, wie GeoPandas die Pyogrio-Engine und Apache Arrow nutzt, um Datei-I/O drastisch zu beschleunigen, und wie man räumliche und Bounding-Box-Filter während des Ladevorgangs einsetzt.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. GeoPandas, Folge 2 von 11. Du lädst ein fünf Gigabyte großes Shapefile in den Arbeitsspeicher, nur um sofort neunzig Prozent der Rows mit Standard-pandas-Filtern zu verwerfen. Dein RAM geht durch die Decke, dein Script kriecht vor sich hin und du verschwendest Zeit. Dabei könntest du diese Spatial Data slicen, bevor sie überhaupt die Festplatte verlassen. Heute schauen wir uns Reading und Writing an: Schnelles I/O mit Pyogrio. Die wichtigsten Funktionen, die du nutzen wirst, um Daten in GeoPandas rein und wieder rauszubekommen, sind read file und to file. Früher nutzte GeoPandas intern eine Library namens Fiona. Das hat funktioniert, war aber langsam. Modernes GeoPandas nutzt standardmäßig Pyogrio. Pyogrio ist ein direktes, hochoptimiertes Interface zu GDAL, der zentralen C-Library, die fast aller Open-Source Geospatial Software zugrunde liegt. Pyogrio ist by default schnell, aber du kannst es zwingen, noch viel schneller zu sein. Wenn du read file oder to file aufrufst, kannst du ein Argument namens use arrow übergeben und auf true setzen. Das sagt Pyogrio, dass es die Daten mit Apache Arrow Memory-Strukturen verarbeiten soll. Anstatt die Datei zu lesen und jede einzelne Koordinate und jedes Attribut nacheinander in ein Python-Objekt zu übersetzen, verarbeitet die Arrow-Integration die Daten in großen, memory-effizienten Batches. So wird der übliche Python-Overhead komplett umgangen. Wenn du mit Millionen von Records arbeitest, macht das Einschalten des Arrow-Flags aus einer Read- oder Write-Operation, die mehrere Minuten dauert, eine, die nur wenige Sekunden braucht. Die effektivste Optimierung ist aber, einfach weniger Daten zu lesen. Ein sehr häufiger Fehler ist es, ein komplettes, riesiges Dataset in ein GeoDataFrame zu laden und es danach mit Standard-pandas-Indexing zu filtern. Das verursacht massive, völlig unnötige Memory Spikes. GeoPandas erlaubt es dir, die Daten direkt während der read file Operation zu filtern, was deinen Memory Footprint flach hält. Sagen wir mal, du hast eine Datei mit jedem Building Footprint im Bundesstaat New York, aber dich interessieren nur die Gebäude rund um Coney Island. Wenn du ein Bounding Box Tuple an das b box Argument in read file übergibst, checkt die zugrundeliegende C-Engine den Spatial Index der Datei auf der Festplatte. Sie ignoriert jedes Gebäude außerhalb dieser definierten Box komplett. Du bekommst einen winzigen DataFrame, der nur das enthält, was du brauchst, und dein RAM bemerkt die Operation kaum. Wenn eine einfache rechteckige Bounding Box für deine Zwecke nicht präzise genug ist, kannst du das mask Argument verwenden. Du übergibst eine spezifische Geometry, wie ein komplexes Polygon, das exakte Nachbarschaftsgrenzen darstellt, direkt an read file. Die Engine wertet diese Shape aus und lädt nur Rows, die dein Polygon schneiden. Das ist rechnerisch etwas aufwendiger als eine einfache Bounding Box, aber dafür hochpräzise. Spatial Filtering deckt die Geografie ab, aber du kannst auch die Standard-Attribute filtern. Die read file Funktion akzeptiert einen where Parameter. Dieser nimmt eine Standard-SQL-WHERE-Clause als String. Wenn du nur Gebäude willst, die als residential getaggt sind, übergibst du einen String, der besagt, dass die type Column gleich residential ist. GDAL parst dieses SQL-Statement und filtert die Rows auf dem C-Level, bevor überhaupt etwas an Python übergeben wird. Du kannst sogar eine Bounding Box und eine WHERE-Clause im exakt selben Read Call kombinieren, um Geografie und Attribute gleichzeitig zu slicen. Hier ist die Key Insight. Wenn du deine Filter runter in die Read-Operation pushst, bedeutet das, dass das Heavy Lifting in hochoptimiertem C-Code passiert und nicht im Python-Memory. Der absolut schnellste Weg, Spatial Data zu verarbeiten, ist, die Teile, die du nicht brauchst, gar nicht erst zu laden. Danke, dass du ein paar Minuten mit mir verbracht hast. Bis zum nächsten Mal, mach's gut.
3

Die Form der Erde: Projektionen und CRS

4m 08s

Verstehe Coordinate Reference Systems (CRS) und warum sie für die räumliche Genauigkeit unerlässlich sind. Lerne den Unterschied zwischen geografischen und projizierten Koordinaten kennen und erfahre, wie du deine Geometrien mit GeoPandas sicher transformieren kannst.

Herunterladen
Hi, hier ist Alex von DEV STORIES DOT EU. GeoPandas, Folge 3 von 11. Du berechnest die Entfernung zwischen zwei Städten und das Ergebnis ist 2,4 statt 200 Meilen. Dein Code lief perfekt, aber deine Antwort ist komplett nutzlos. Der Schuldige ist, wie deine Spatial Data auf die physische Welt gemappt wird, was uns zu folgendem Thema bringt: Die Form der Erde – Projektionen und C R S. Jede GeoSeries und jedes GeoDataFrame hat ein Attribut namens dot C R S. Dieses speichert ein pyproj C R S Objekt. Das sind die Metadaten, die GeoPandas genau sagen, was die Zahlen in deiner geometry column eigentlich darstellen. Ohne ein Coordinate Reference System ist eine Koordinate wie minus 73 Komma 40 einfach nur ein Punkt auf einem unendlichen, abstrakten Grid. Mit einem C R S wird sie zu einer spezifischen, bekannten Location auf der Erde. Es gibt zwei Hauptkategorien von Koordinatensystemen, die du verstehen musst. Geographic Coordinate Systems stellen die Erde als dreidimensionalen Globus dar. Ihre Koordinaten sind Winkel, gemessen vom Erdmittelpunkt, ausgedrückt in Längen- und Breitengraden. Ein sehr bekanntes Beispiel ist EPSG 4326, das System, das von globalem GPS genutzt wird. Projected Coordinate Systems hingegen stellen die Erde flach auf einer zweidimensionalen Oberfläche dar. Ihre Koordinaten nutzen lineare Maßeinheiten wie Meter oder US Survey Feet. Hier ist die wichtigste Erkenntnis. Die Spatial Operations unter der Haube von GeoPandas gehen davon aus, dass deine Daten auf einer flachen kartesischen Ebene liegen. Wenn deine Daten in einem Geographic Coordinate System wie EPSG 4326 vorliegen und du GeoPandas anweist, die Fläche der New Yorker Stadtbezirke zu berechnen, führt es die Mathematik so aus, als wären Grade einfache Grid-Quadrate. Du bekommst ein Ergebnis wie 0,083. Das bedeutet 0,083 Quadratgrad, was eine völlig bedeutungslose Metrik ist. Grade verändern ihre physische Breite, je nachdem, wie weit du vom Äquator entfernt bist. Deshalb kannst du sie nicht nutzen, um absolute Distanzen oder Flächen zu messen. Um Real-World-Mathematik anzuwenden, musst du deine geografischen Daten in ein Projected Coordinate System projizieren. Das machst du mit einer Methode namens to C R S. Wenn du diese New York Daten nimmst und EPSG 2263 an die to C R S Methode übergibst, wird GeoPandas jede einzelne Koordinate in deiner geometry column mathematisch transformieren. EPSG 2263 ist ein Projected System speziell für New York, das Distanzen in Feet misst. Wenn du jetzt genau dieselbe Flächenberechnung ausführst, bekommst du ein Ergebnis in Millionen Square Feet, was eine tatsächliche, brauchbare Messgröße ist. Hier gibt es eine häufige Falle. Entwickler versuchen oft, fehlende Projektionen mit der set C R S Methode statt mit der to C R S Methode zu fixen. set C R S ist kein Conversion Tool. Es wird nur verwendet, wenn deine Spatial Data komplett ohne Coordinate Reference System geladen wurde. Es weist einfach nur die Metadaten zu und sagt GeoPandas, was die Zahlen in deiner geometry column bereits sind, ohne die Zahlen selbst zu verändern. Du benutzt to C R S, wenn die Daten bereits ein gültiges C R S haben und du diese Koordinaten mathematisch in ein komplett neues System konvertieren willst. Wenn deine Flächen- oder Distanzberechnungen jemals absurd klein aussehen, bedeutet das fast immer, dass du GeoPandas anweist, flache Mathematik auf sphärischen Graden auszuführen, und du deine Daten projizieren musst. Das war's für heute. Danke fürs Zuhören – geh und bau was Cooles.
4

Raum formen: Buffers, Centroids und Convex Hulls

3m 59s

Entdecke, wie du aus bestehenden Geometrien völlig neue generieren kannst. Diese Episode behandelt grundlegende konstruktive Methoden wie die Berechnung von Centroids, die Erstellung von Buffer-Zonen und das Zeichnen von Convex Hulls.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. GeoPandas, Folge 4 von 11. Manchmal ist die Shape, die du analysieren musst, nicht die, die du bekommen hast. Vielleicht importierst du eine Liste von Filialstandorten als einzelne Points, aber was du eigentlich verstehen musst, ist das Liefergebiet drumherum. Dafür musst du Punkte und Linien mathematisch in dynamische Boundaries formen, und zwar mit Shaping Space: Buffers, Centroids und Convex Hulls. Diese konstruktiven geometrischen Manipulationen sind wie Knetmasse für Geodaten. Du startest mit rohen Geometrien und nutzt diese built-in Methoden, um völlig neue Shapes zu berechnen, die genau auf deine Analyse zugeschnitten sind. In GeoPandas werden diese Methoden elementweise auf die komplette aktive GeoSeries angewendet. Wenn du zehntausend Shapes hast, generiert ein einziger Command zehntausend neue. Das alles nutzt under the hood die Shapely Library, um die geometrische Mathematik durchzuführen. Die häufigste Manipulation ist die buffer Methode. Ein buffer erstellt ein Polygon, das alle Punkte innerhalb einer bestimmten Distanz von deiner ursprünglichen Shape repräsentiert. Stell dir ein Szenario vor, in dem du Point-Geometrien hast, die Cafés darstellen. Du willst für jeden Standort ein Liefergebiet von zwei Kilometern definieren. Du rufst die buffer Methode auf deinen Points auf und übergibst deine Distanz. GeoPandas zeichnet sofort einen Kreis um jeden einzelnen Shop und transformiert dein Point-Dataset in ein Polygon-Dataset. Pass an dieser Stelle gut auf. Für eine buffer Operation brauchst du ein projiziertes Coordinate Reference System. Wenn deine Geometrien in einem geografischen Format wie Latitude und Longitude vorliegen, bedeutet ein Distanzwert von zehn zehn Grad, nicht zehn Meter. Weil Longitude-Grade in ihrer physischen Breite schrumpfen, je weiter du dich vom Äquator entfernst, führt das Buffern von unprojizierten Daten zu stark verzerrten, gestreckten Ovalen statt zu gleichmäßigen Kreisen. Projiziere deine Daten also immer in ein metrisches System, bevor du Distanzen berechnest. Manchmal musst du eine Shape reduzieren, anstatt sie zu erweitern. Wenn du komplexe Polygone hast, die Nachbarschaftszonen darstellen, und du sie für Distanzberechnungen oder Map Labels auf einzelne Punkte reduzieren musst, nutzt du das centroid Attribut. Das centroid Attribut berechnet den mathematischen Schwerpunkt für jede Geometrie und gibt einen perfekten Mittelpunkt für jedes Polygon oder jede Linie in deinem Dataset zurück. Um die Ränder einer Shape zu isolieren, nutzt du das boundary Attribut. Wenn du ein Polygon hast, das einen Landkreis darstellt, entfernt boundary das komplette Innere. Es gibt eine niedrigdimensionale Geometrie zurück und transformiert das Polygon in ein Set von Linien, die den Landkreis einfach nur umreißen. Wenn du boundary auf einer Linie aufrufst, gibt es die einzelnen Punkte an jedem Ende dieser Linie zurück. Hier wird es interessant. Du hast auch das convex hull Attribut. Stell dir eine verstreute Ansammlung von Punkten vor, die einzelne Tierbeobachtungen in einem Wald darstellen. Wenn du ein Gummiband komplett um die äußersten Punkte spannen und es straff zuschnappen lassen würdest, ist die Shape, die das Gummiband bildet, die convex hull. Es gibt das kleinstmögliche konvexe Polygon zurück, das die komplette Geometrie umschließt. Es ist ein unglaublich schneller Weg, den gesamten physischen Footprint eines verstreuten Sets von Koordinaten zu berechnen. Konstruktive Geometrie bedeutet, dass du nie an die räumlichen Boundaries gebunden bist, die du importiert hast; du kannst immer die exakten Zonen berechnen, die deine Analyse tatsächlich erfordert. Danke, dass du ein paar Minuten mit mir verbracht hast. Bis zum nächsten Mal, mach's gut.
5

Räumliche Prädikate: Intersects, Within und Contains

3m 59s

Lerne, wie man Fragen zu den Beziehungen zwischen verschiedenen Formen stellt. Wir untersuchen binäre räumliche Prädikate – wie Intersects, Within und Contains – um zu testen, wie Geometrien im Raum interagieren.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. GeoPandas, Folge 5 von 11. Die Frage, ob eine bestimmte GPS-Koordinate innerhalb einer komplexen, unregelmäßigen Stadtgrenze liegt, klingt nach einem rechenintensiven Mathe-Problem mit Ray-Casting. In dieser Library wird das jedoch mit einer einzigen Zeile Boolean-Logik gelöst. Wir sprechen über Spatial Predicates: Intersects, Within und Contains. Wenn du Standard-pandas nutzt, bist du mit Conditional Filtering bereits vertraut. Du nimmst eine Dataframe-Spalte, prüfst, ob ihre Werte größer als zehn sind, und bekommst eine Series aus True- und False-Werten zurück. Diese Boolean Series übergibst du dann direkt wieder in die Klammern deines Dataframes, um deine Zeilen zu filtern. Spatial Predicates machen genau das Gleiche. Anstatt nach einer Zahl zu filtern, filterst du nach räumlicher Wahrheit. Du vergleichst Shapes. Ein Spatial Predicate ist eine Methode, die die topologische Beziehung zwischen einer kompletten GeoSeries und einer einzelnen Reference Geometry testet. Wenn du eine Predicate-Methode auf deiner aktiven Geometry-Spalte aufrufst, gleicht GeoPandas jede einzelne Zeile mit diesem Reference Shape ab. Es übernimmt die Geometry-Mathematik unter der Haube und gibt dir eine Standard-pandas Boolean Series zurück. Der häufigste Beziehungstest ist intersects. Wenn du die intersects-Methode aufrufst, gibt sie True zurück, wenn die Boundary oder das Innere einer Geometry in deinem Dataset die Reference Geometry in irgendeiner Weise berührt oder überlappt. Wenn zwei Polygone einen einzigen Punkt auf ihrer Außenkante teilen, intersecten sie. Wenn ein Line Segment ein Polygon kreuzt, intersecten sie. Es ist ein allgemeines Catch-all für jeden geteilten physischen Raum. Als Nächstes haben wir die Methoden contains und within. Leute verwechseln diese oft, weil es inverse Operationen sind. Die Logik ist streng direktional. Wenn Polygon A eine große Stadtgrenze ist und Point B ein Coffeeshop, dann enthält die Stadt den Coffeeshop. Der Coffeeshop liegt innerhalb der Stadt. Wenn Polygon A Point B contains, dann ist Point B within Polygon A. Du nutzt die contains-Methode, wenn deine GeoSeries große Bounding Geometries enthält und du ein kleineres Reference Shape übergibst. Sie gibt nur dann True zurück, wenn das Reference Shape komplett von der Geometry in der Zeile umschlossen wird. Umgekehrt rufst du die within-Methode auf, wenn deine GeoSeries die kleineren Items enthält, wie Tausende einzelner Coordinate Points, und du testen willst, ob sie komplett in ein einzelnes, größeres Reference Polygon fallen. Pass an dieser Stelle gut auf. Weil diese Methoden Standard-Boolean-Masks zurückgeben, kannst du sie direkt in deine Data Pipelines chainen. Sagen wir, du hast einen Dataframe mit Stadtbezirken. Du hast einen Buffer angewendet, um ihre Boundaries zu erweitern. Jetzt willst du wissen, welche dieser erweiterten, gebufferten Bezirke sich mit dem originalen, ungebufferten Polygon von Brooklyn überschneiden. Zuerst isolierst du das einzelne originale Brooklyn-Polygon, damit es als deine Reference Geometry dient. Dann nimmst du deinen Dataframe der gebufferten Bezirke und rufst die intersects-Methode auf seiner Geometry-Spalte auf, wobei du das Brooklyn-Shape übergibst. GeoPandas wertet jede Zeile aus. Es gibt True für die gebufferten Bezirke zurück, die das Brooklyn-Polygon berühren, und False für die, die es nicht tun. Du packst diese resultierende True- und False-Series direkt in die Selection-Klammern deines Dataframes. Der Dataframe droppt sofort die False-Zeilen. Was dir bleibt, ist ein geografisch gefiltertes Dataset, das komplett durch Standard-Tabellendaten-Operationen erstellt wurde. Indem du physische Raumbeziehungen als einfache True- oder False-Fragen behandelst, schließt du die Lücke zwischen komplexer Kartografie und grundlegender Dataframe-Logik. Das war's für diese Folge. Danke fürs Zuhören und keep building!
6

Abfragen beschleunigen: Der R-Tree Spatial Index

3m 53s

Entdecke den geheimen Motor hinter der Leistung von GeoPandas. Diese Episode deckt auf, wie der STR R-Tree Spatial Index Bounding Boxes nutzt, um den Rechenaufwand für räumliche Abfragen drastisch zu reduzieren.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. GeoPandas, Folge 6 von 11. Deine Geospatial Queries dauern Stunden, frieren deinen Rechner ein und rauben dir den Nerv. Wahrscheinlich lässt du deine CPU jeden einzelnen Punkt mit jeder einzelnen Boundary abgleichen, was furchtbar skaliert. Die Lösung für diesen Bottleneck ist Turbocharge Queries: Der R-Tree Spatial Index. Du hast eine Million GPS-Punkte und fünfzig Nachbarschafts-Polygone. Wenn du jeden Punkt gegen jedes Polygon testest, um zu sehen, zu welcher Nachbarschaft er gehört, führst du fünfzig Millionen komplexe geometrische Berechnungen aus. Herauszufinden, ob eine Koordinate innerhalb eines unregelmäßigen Polygons liegt, ist eine aufwendige mathematische Operation. Wenn du das als Full Scan machst, entsteht ein exponentielles Skalierungsproblem, das die Performance zerstört. Ein Spatial Index löst das, indem er wie ein Inhaltsverzeichnis für deine Karte funktioniert. GeoPandas nutzt eine spezielle Struktur namens R-Tree, die mit dem Sort-Tile-Recursive Algorithmus aufgebaut wird. Das R steht für Rectangle. Der Tree gruppiert Objekte logisch basierend auf ihrer Location. Die entscheidende Erkenntnis hier ist der Pre-Filter. Anstatt die exakten, gezackten Grenzen eines Nachbarschafts-Polygons zu checken, zieht der Index eine einfache rechteckige Box darum. Das nennt man Envelope oder Bounding Box. Zu prüfen, ob eine Koordinate in ein einfaches Rectangle fällt, erfordert fast null Rechenaufwand. Der Index verwirft sofort jeden Punkt, der nicht einmal innerhalb der rechteckigen Bounding Box einer Nachbarschaft liegt. Du reduzierst die Kandidaten sofort von einer Million auf vielleicht ein paar Tausend. Das bringt uns zu einer kritischen Zwei-Schritt-Realität beim Spatial Querying. Ein Hit auf dem Spatial Index bedeutet nur, dass sich die Bounding Boxes überschneiden. Ein Punkt könnte innerhalb des Rectangles liegen, aber knapp außerhalb der tatsächlichen, gekrümmten Boundary der Nachbarschaft. Der Bounding Box Hit ist nur Schritt eins. Schritt zwei ist der exakte Geometry Check bei dieser kleineren Teilmenge von Kandidaten. Du greifst auf diese Engine über die sindex dot query Methode zu. Wenn du eine einzelne Geometry übergibst, gibt sie ein Array von Integer-Indizes zurück, die den Geometries in deiner GeoSeries entsprechen, deren Bounding Boxes deinen Input überschneiden. Um den Index zu zwingen, diesen entscheidenden zweiten Schritt zu übernehmen, übergibst du für das Argument predicate den Wert intersects. GeoPandas nutzt dann den günstigen Bounding Box Check, um Kandidaten zu finden, und führt den teuren exakten Geometry Check automatisch nur für die verbleibenden aus. Du kannst auch ein komplettes Array von Geometries auf einmal in die Query übergeben. Diese Array Query gibt ein zweidimensionales Array von Indizes zurück, das die Matches zwischen deinem Input Array und der indizierten GeoSeries einander zuordnet. Die erste Zeile liefert den Index deiner Input Geometry, und die zweite Zeile liefert den Index der passenden Geometry im Tree. Manchmal brauchst du keine Intersection, sondern einfach nur Nähe. Die sindex dot nearest Methode nimmt eine Input Geometry und gibt den Index der nächsten Geometry im Tree zurück. Das ist hocheffizient, um eine verirrte Koordinate an ein Straßennetz zu snappen oder die nächste Wetterstation zu finden, ohne die Distanz zu jeder einzelnen Station auf dem Kontinent zu berechnen. Komplexe Spatial Operations sind mathematisch aufwendig. Zwinge deine CPU niemals dazu, exakte geometrische Intersections zu berechnen, wenn ein simpler Rectangle Check neunundneunzig Prozent der Kandidaten im Vorfeld eliminieren kann. Wenn du diese Episoden hilfreich findest und die Show unterstützen möchtest, kannst du auf Patreon nach DevStoriesEU suchen. Das war's für diese Folge. Danke fürs Zuhören und keep building!
7

Welten verschmelzen: Spatial und Nearest Joins

4m 24s

Bringe deine Datenintegration auf das nächste Level. Lerne, wie du zwei separate GeoDataFrames vollständig basierend auf ihren räumlichen Beziehungen zusammenführst, indem du Spatial Joins (`sjoin`) und Proximity Joins (`sjoin_nearest`) verwendest.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. GeoPandas, Folge 7 von 11. Wie verknüpfst du eine Liste von Restaurants mit einer Liste von Zensusbezirken, wenn sie keine gemeinsamen ID-Spalten haben? Du lässt einfach ihre Koordinaten das Matching übernehmen. Heute sprechen wir über Merging Worlds: Spatial und Nearest Joins. Ein Spatial Join ist das geografische Äquivalent eines SQL Joins. Anstatt Tabellen über eine gemeinsame String- oder Integer-ID zu verknüpfen, joinst du sie basierend auf ihrer physischen Beziehung im Raum. Dafür verwendest du die sjoin Funktion. Stell dir ein Szenario vor, in dem du ein GeoDataFrame mit Supermarkt-Punkten und ein separates GeoDataFrame mit Polygonen von Chicagoer Stadtteilen hast. Du möchtest jeder Supermarkt-Zeile den Namen des Stadtteils hinzufügen. Dazu rufst du sjoin auf dem Supermarkt-DataFrame auf und übergibst das Stadtteil-DataFrame als rechtes Argument. Die Funktion verlässt sich auf zwei Hauptargumente. Das erste ist how. Das funktioniert genau wie bei Standard-Datenbank-Joins. Ein Inner Join behält nur die Stores, die in einen Stadtteil fallen. Ein Left Join behält alle deine Supermärkte und hängt Null-Werte an, falls ein Store zufällig außerhalb der Stadtteilgrenzen liegt. Ein Right Join behält alle Stadtteile, dupliziert sie, falls sie mehrere Stores enthalten, und behält sie mit leeren Store-Daten, falls sie keine haben. Das zweite Argument ist predicate. Das definiert die räumliche Bedingung, die für ein Match erfüllt sein muss. Der Default ist intersects, was bedeutet, dass sich die Geometries in irgendeiner Weise berühren oder überlappen. Du kannst auch within verwenden, um sicherzustellen, dass ein Punkt strikt innerhalb eines Polygons liegt, oder contains, wenn du checkst, ob ein Polygon einen Punkt vollständig umschließt. Hier ist die wichtigste Erkenntnis. Wenn du einen Spatial Join durchführst, kombinierst du zwei Tabellen mit Geometry-Spalten, aber das resultierende GeoDataFrame kann nur eine aktive Geometry haben. Standardmäßig behält sjoin die Geometry des linken DataFrames und droppt die Geometry des rechten DataFrames, während alle seine Standard-Attributspalten erhalten bleiben. Wenn du Supermarkt-Punkte auf der linken Seite mit Stadtteil-Polygonen auf der rechten Seite joinst, wird dein Output eine Tabelle von Punkten sein, die nun Stadtteilnamen enthält. Wenn du wirklich brauchst, dass die resultierende Tabelle die Polygon-Shapes enthält, musst du deine Join-Reihenfolge umkehren. Mach die Stadtteile zur linken Tabelle und die Stores zur rechten Tabelle. Manchmal überschneiden sich deine Datensätze überhaupt nicht. Wenn du für jeden Supermarkt die nächstgelegene U-Bahn-Station finden möchtest, helfen dir Intersections nicht weiter. Dafür verwendest du die Funktion sjoin nearest. Sie funktioniert ähnlich wie ein Standard Spatial Join, aber matcht Geometries basierend auf Nähe statt auf Intersection. Du kannst ein distance column Argument als String an sjoin nearest übergeben. Das sagt der Funktion, dass sie eine neue Spalte an deine Ergebnisse anhängen soll, die die exakt berechnete Distanz zwischen den gematchten Items enthält. Du kannst auch einen max distance Threshold angeben. Das schränkt den Join so ein, dass er nur matcht, wenn der Nearest Neighbor innerhalb eines bestimmten Radius liegt. So wird verhindert, dass du einen Store mit einer Station am anderen Ende der Stadt verknüpfst, nur weil sie zufällig die nächstgelegene verfügbare ist. Unter der Haube verlassen sich beide Funktionen stark auf einen Spatial Index. Sie berechnen nicht die Distanz oder Intersection zwischen jedem einzelnen Punkt und jedem einzelnen Polygon, was extrem viel Zeit in Anspruch nehmen würde. Sie nutzen den Index, um zuerst Bounding Boxes auszuwerten, und verwerfen schnell Geometries, die nicht mal in der Nähe voneinander sind, bevor sie die schweren mathematischen Berechnungen durchführen. Den physischen Standort als deinen ultimativen Foreign Key zu behandeln, erlaubt es dir, Datensätze zu verbinden, die ansonsten absolut nichts gemeinsam haben. Das war's für diese Folge. Danke fürs Zuhören, und keep building!
8

Mengenoperationen: Geometrien mit Overlays erstellen

3m 52s

Entdecke, wie du überlappende Formen schneiden, zusammenführen und aufteilen kannst. Diese Episode behandelt die leistungsstarke `overlay`-Methode und erklärt, wie man Intersections, Unions und Differences berechnet, um völlig neue Geometrien zu erstellen.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. GeoPandas, Folge 8 von 11. Ein Spatial Join sagt dir, ob eine Überschwemmungszone ein Grundstück trifft. Aber er lässt die Grundstücksgrenze in deinem Dataset völlig intakt. Wenn du ein brandneues Polygon brauchst, das genau zeigt, welcher Teil des Grundstücks unter Wasser steht, reicht ein Join nicht aus. Du brauchst Set Operations, genauer gesagt das Erstellen von Geometrien mit Overlays. Es kommt oft vor, dass man Spatial Joins, die die sjoin-Methode verwenden, mit Overlays verwechselt. Hier ist der Unterschied. Ein Spatial Join testet auf eine Beziehung und hängt Attribute von einem Layer an einen anderen an, während die ursprüngliche Geometrie exakt gleich bleibt. Ein Overlay zerschneidet die Geometrien physisch. Stell dir das wie einen Plätzchenausstecher vor. Du hast zwei überlappende, ausgerollte Teigplatten, die zwei verschiedene GeoDataFrames repräsentieren. Ein Overlay drückt durch beide Layer hindurch und schneidet sie gegeneinander aus. Das Ergebnis ist ein komplett neues Set an Puzzleteilen. Überall dort, wo sich diese beiden Layer überlappt haben, erbt das neue Teil die Datenattribute von beiden ursprünglichen Layern. Du machst das mit der overlay-Methode auf einem GeoDataFrame, übergibst ein zweites GeoDataFrame und gibst den Operationstyp mit dem how-Parameter an. Es gibt fünf Logiktypen, die du an den how-Parameter übergeben kannst. Der erste ist intersection. Diese gibt nur die exakten geografischen Bereiche zurück, in denen sich die beiden Layer überlappen. Jeder Teil der Geometrien, der sich nicht überlappt, wird verworfen. Der zweite ist union. Eine union gibt alles zurück. Sie mergt beide Layer in ein einziges GeoDataFrame, aber sie zerschneidet die Geometrien überall dort, wo sie sich kreuzen. Du bekommst Teile, die nur Layer eins repräsentieren, Teile, die nur Layer zwei repräsentieren, und Teile, die die Überlappung repräsentieren. Der dritte ist symmetric difference. Das ist das genaue Gegenteil einer intersection. Sie gibt die Bereiche zurück, die zu Layer eins oder Layer zwei gehören, aber sie schneidet gezielt die Bereiche heraus, in denen sie sich überlappen, und verwirft sie. Der vierte ist difference. Diese behält die Geometrien deines ersten Layers bei, subtrahiert aber die Bereiche, die vom zweiten Layer abgedeckt werden. Es ist, als würdest du einen Bissen aus deiner ersten Form nehmen und die zweite Geometrie als Zähne benutzen. Der fünfte ist identity. Diese hier ist sehr speziell. Sie behält die äußeren Grenzen deines ersten Layers komplett intakt, aber sie teilt das Innere überall dort, wo der zweite Layer es schneidet. Die überlappenden Stücke bekommen die Attribute des zweiten Layers, während der Rest des ersten Layers so bleibt, wie er war. Um zu sehen, warum das wichtig ist, nimm einen Stadtplaner, der die Erreichbarkeit von Supermärkten auswertet. Er hat einen Layer mit Nachbarschaftsgrenzen und einen Layer mit Supermarkt-Punkten. Zuerst buffert er die Supermarkt-Punkte zu Ein-Kilometer-Polygonen. Wenn er einen Standard-Spatial-Join zwischen den Nachbarschaften und den Buffern ausführen würde, würde er lediglich markieren, welche Nachbarschaften einen Buffer enthalten. Aber indem er die overlay-Methode aufruft und den how-Parameter auf intersection setzt, zerschneidet er die Nachbarschaftsformen physisch mit den Buffer-Formen. Der Output ist ein neues GeoDataFrame, das nur die exakte Landfläche innerhalb von einem Kilometer um einen Supermarkt enthält, perfekt zugeschnitten auf die Nachbarschaftsgrenzen. Hier ist die wichtigste Erkenntnis. Overlays berechnen neue Intersection-Nodes für jede sich kreuzende Grenze, was sie rechenintensiv macht. Benutze ein Overlay nicht nur, um auf überlappende Attribute zu prüfen. Nutze es nur dann, wenn du wirklich komplett neue geometrische Grenzen aus der Kollision von zwei Layern generieren musst. Das war's für diese Folge. Danke fürs Zuhören und baue weiter!
9

Spatial GroupBy: Aggregation mit Dissolve

3m 25s

Lerne, wie man Geodaten gruppiert. Wir untersuchen die `dissolve`-Methode, die als räumliches GroupBy fungiert und kleinere Geometrien zu größeren zusammenführt, während ihre tabellarischen Attribute nahtlos aggregiert werden.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. GeoPandas, Folge 9 von 11. Du hast einen Geodatensatz mit über dreitausend Landkreisen, brauchst für deine Analyse aber eine saubere Karte der fünfzig Bundesstaaten. Du musst deine Arbeit nicht unterbrechen und online nach einem neuen Datensatz suchen, du brauchst nur eine Möglichkeit, die internen Grenzen aufzulösen. Wir lösen das mit einem Spatial GroupBy, genauer gesagt mit einer Methode namens Dissolve. Daten werden oft sehr granular bereitgestellt. Vielleicht hast du Häuserblocks, wenn du eigentlich Stadtteile brauchst, oder Zensusbezirke, wenn du ganze Gemeinden benötigst. Dissolve ist dein Tool, um in der geografischen Hierarchie nach oben zu gehen. Es nimmt viele kleinere Shapes, fügt sie basierend auf einem gemeinsamen Attribut zu größeren zusammen und aggregiert die zugrundeliegenden Daten. Wenn du mit Standard-Datenanalyse vertraut bist, kannst du dir Dissolve wie eine Spatial GroupBy Operation vorstellen. Schauen wir uns ein konkretes Szenario an. Du hast ein Spatial Dataframe von Nepal, das in winzige Distrikte unterteilt ist. Dein Datensatz enthält die Polygon Geometry für jeden Distrikt, eine Einwohnerzahl und eine Textspalte, die die größere Verwaltungszone angibt, zu der der Distrikt gehört. Du möchtest eine Karte, die nur die Zonen zeigt. Du rufst die Dissolve-Methode auf deinem Spatial Dataframe auf und übergibst die Zonen-Spalte als Gruppierungsziel. GeoPandas führt dann zwei verschiedene Operationen gleichzeitig aus. Erstens kümmert es sich um die Spatial Geometries. Es gruppiert alle Distrikt-Zeilen nach ihrem Zonen-Namen, nimmt ihre Geometrien und vereint sie zu einem einzigen Feature. Die internen Distrikt-Grenzen werden gelöscht, sodass du eine durchgehende äußere Grenze für die neue Zone erhältst. Zweitens muss es entscheiden, was mit den Tabellendaten passieren soll, die an diese Shapes angehängt sind, wie zum Beispiel deiner Einwohnerzahl-Spalte. Hier ist die entscheidende Erkenntnis. Viele User führen die Dissolve-Methode aus, schauen sich ihre neue Zonen-Karte an und stellen fest, dass die Einwohnerzahlen drastisch falsch sind. Das ist kein Geometrie-Fehler. Standardmäßig verarbeitet die Dissolve-Methode Tabellendaten, indem sie einfach den Wert aus der allerersten Zeile nimmt, auf die sie in jeder Gruppe stößt. Den Rest ignoriert sie. Um numerische Werte korrekt zu aggregieren, musst du explizit den Aggregate Function Parameter verwenden. Wenn du Dissolve mit der Gruppierung nach Zone aufrufst, übergibst du auch den Aggregate Function Parameter und setzt ihn auf sum. Während GeoPandas nun die Distrikt-Shapes physisch zusammenführt, addiert es auch die Bevölkerungszahlen der Distrikte mathematisch. Die resultierende Zonen-Zeile enthält dann die korrekte, aggregierte Gesamtbevölkerung. Dieser Parameter akzeptiert auch andere statistische Standardfunktionen. Wenn deine granularen Daten das durchschnittliche Haushaltseinkommen enthalten, könntest du mean anstelle von sum übergeben. Wenn sie Höhenmessungen enthalten, könntest du max übergeben, um den höchsten Punkt in der neu zusammengeführten Region zu finden. Dissolve kombiniert Spatial Unioning mit tabellarischer Aggregation in einem synchronisierten Schritt und gibt dir die vollständige Kontrolle über den geografischen Maßstab deiner Daten. Danke fürs Zuhören und Happy Coding zusammen!
10

Statisches Mapping: Choroplethenkarten erstellen und Layers plotten

4m 04s

Verwandle deine Geodaten in überzeugende Visualisierungen. Diese Episode behandelt die Integration von GeoPandas mit matplotlib und zeigt dir, wie du maßgeschneiderte Choroplethenkarten erstellst, mehrere Datensätze überlagerst und mit fehlenden Daten umgehst.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. GeoPandas, Folge 10 von 11. Du musst deine Spatial Data nicht in schwerfällige Desktop-GIS-Software exportieren, nur um zu sehen, wie sie aussehen. Du kannst direkt in deiner Python-Umgebung publikationsreife Visuals generieren. Die Lösung ist Static Mapping: Choropleths bauen und Layers plotten. Das Herzstück der Visualisierung in GeoPandas ist die plot Methode. Jedes GeoDataFrame hat sie. Wenn du plot ohne Argumente aufrufst, wird deine Geometry sofort gezeichnet. Es ist super einfach, aber unter der Haube wrappt es matplotlib. Das bedeutet, du bekommst eine Karte mit nur einer Zeile Code, hast aber trotzdem die volle Power von matplotlib zur Verfügung, um Colors, Axes und Styles anzupassen. Ein einfacher Plot zeichnet einfach nur Shapes. Um eine Choropleth Map zu machen – bei der die Shapes basierend auf Data Values eingefärbt werden – nutzt du das column Argument. Du übergibst den Namen der Column, die deine Daten enthält. GeoPandas mappt die Werte in dieser Column auf eine Color Scale. Damit die Viewer diese Skala besser verstehen, kannst du eine Legend hinzufügen, indem du legend equals True übergibst. By default erzeugt das Plotten einer kontinuierlichen numerischen Column einen weichen Color Gradient. Oft ist es besser, deine Daten in verschiedene Bins zu gruppieren. GeoPandas integriert sich dafür mit einer Library namens mapclassify. Wenn du das scheme Argument zu deiner plot Methode hinzufügst, kannst du deine Daten in Klassen sortieren. Wenn du zum Beispiel scheme auf quantiles setzt, werden deine Geometries basierend auf ihren Werten in gleich große Gruppen aufgeteilt, was räumliche Muster viel leichter lesbar macht. Real-world Datasets haben oft Lücken. Wenn du eine Choropleth Map baust und in einigen Rows der Data Value fehlt, den du plotten willst, droppt GeoPandas sie komplett von der Karte. Das hinterlässt unschöne leere Flächen. Um das zu fixen, nutzt du das missing keywords Argument. Du übergibst ein Dictionary mit Styling-Optionen, wie zum Beispiel die Color auf Hellgrau zu setzen, damit diese Shapes weiterhin auf der Karte erscheinen, ohne die Daten zu verfälschen. Der zweite Teil davon ist das Overlaying von mehreren Datasets. Die meisten nützlichen Karten kombinieren mehrere Layers. Angenommen, du hast einen Base Layer mit Stadtvierteln und willst einen Scatter Plot mit Supermarktstandorten darüberlegen. Das machst du, indem du ein matplotlib axis Objekt teilst. Zuerst erstellst du eine axis. Dann plottest du deine Stadtviertel-Polygons und übergibst diese axis an die plot Methode. Als Nächstes plottest du deine Supermarkt-Points und übergibst genau dieselbe axis. Beide Datasets werden auf denselben Canvas gezeichnet. Um zu kontrollieren, welcher Layer oben liegt, nutzt du das z order Argument. Eine niedrigere z order geht nach unten. Du gibst also deinen Stadtvierteln eine z order von eins und deinen Supermärkten eine z order von zwei. Die Points werden dann sauber über den Polygons gerendert. Pass bei diesem Teil gut auf. Manchmal willst du, dass deine Base Polygons komplett transparent sind, sodass du nur ihre Borders siehst. Wenn du das face color Argument auf None setzt, als Python-Objekt ohne Anführungszeichen, ignoriert matplotlib das und wendet eine Default Fill Color an. Du musst face color auf das Wort none als String setzen, um es transparent zu machen. Alternativ kannst du das komplett umgehen, indem du die boundary Property auf deinem GeoDataFrame aufrufst und stattdessen diese plottest. Das ist ein viel sichererer Ansatz, um nur die Outlines zu zeichnen. Die wahre Stärke des Mappings in GeoPandas ist die nahtlose Skalierung von schnellen Data Checks zu publikationsreifen Grafiken. Du bekommst mit einem einzigen Method Call sofort ein Visual, verlierst aber nie die zugrundeliegende Kontrolle von matplotlib, wenn du komplexe Spatial Stories layern musst. Das war's für diese Folge. Danke fürs Zuhören und keep building!
11

Interaktive Exploration und darüber hinaus

4m 18s

Erwecke deine Karten zum Leben. Wir schauen uns die `explore()`-Methode zur Erstellung interaktiver, webbasierter Karten an. Zum Abschluss beenden wir unsere GeoPandas-Reise und bereiten dich darauf vor, reale räumliche Anwendungen zu entwickeln.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. GeoPandas, Folge 11 von 11. Statische Karten sind super für eine Abschlusspräsentation, aber wenn du tief in der Analysephase steckst, ist ein flaches Bild extrem einschränkend. Du musst in ein bestimmtes Viertel zoomen, über einen Fluss pannen und über eine Form hovern können, um die Rohdaten zu untersuchen, die sich darunter verbergen. Interactive Exploration und mehr ist genau das, worum es in dieser Folge geht. In den vorherigen Folgen haben wir die plot Methode verwendet, um statische Bilder unserer Geometrien zu zeichnen. GeoPandas bietet auch eine Alternative namens explore. Wenn du explore auf einem GeoDataFrame aufrufst, generiert es eine vollständig interaktive Web Map direkt in deiner Umgebung. Unter der Haube verwendet es eine Python Library namens Folium, die selbst auf der beliebten JavaScript Mapping Library Leaflet aufbaut. Das Schöne an der explore Methode ist, dass ihre API die plot Methode perfekt nachahmt. Du musst keine komplett neuen Argumente lernen, um von einem statischen Bild zu einer interaktiven Karte zu wechseln. Nimm zum Beispiel das Dataset der New Yorker Stadtbezirke. Du rufst explore auf dem Dataset auf und übergibst das column Argument gesetzt auf area. Der Output ist sofort da und greifbar. Eine Karte der Stadt erscheint, und du kannst deine Maus benutzen, um zu pannen und zu scrollen, um in bestimmte Straßen zu zoomen. Hier ist die wichtigste Erkenntnis. Wenn du mit dem Cursor über Brooklyn oder Queens hoverst, poppt automatisch ein Tooltip auf. Dieser Tooltip zeigt die zugrundeliegenden tabellarischen Daten für diese spezifische Geometrie an, einschließlich des exakten area Wertes, nach dem du die Karte einfärben lassen hast. Du bekommst visuellen Kontext und rohe Zahlen zur exakt gleichen Zeit. Es gibt ein technisches Detail, das du im Hinterkopf behalten musst. Du musst verstehen, was die explore Methode eigentlich zurückgibt. Die plot Methode generiert ein leichtgewichtiges Image File. Die explore Methode gibt ein schweres Objekt zurück, vollgepackt mit HTML und JavaScript. Das ist genial, wenn du in einem Jupyter Notebook arbeitest, weil der Browser die interaktive Karte fehlerfrei rendert. Aber wenn dein finales Ziel ist, einen statischen PDF Report oder einen einfachen Ausdruck zu generieren, ist explore das falsche Tool. Die interaktiven Web Elemente lassen sich einfach nicht auf Papier übertragen. Nutze explore, um deine Daten zu untersuchen, und wechsle zurück zu plot, wenn du ein statisches Dokument publizieren musst. Das bringt uns zur wahren Power des GeoPandas Frameworks. Während dieser Serie haben wir gesehen, wie es als verbindender Kleber für das Python Spatial Ecosystem fungiert. Es nimmt pandas und gibt ihm Spatial Awareness. Es delegiert die schwere geometrische Mathematik an Shapely. Es verlässt sich auf Pyogrio, um Files mit hoher Geschwindigkeit zu lesen und zu schreiben. Schließlich klinkt es sich in Visualization Libraries ein, um dir sofortiges Feedback zu geben. Du kannst ein riesiges Dataset laden, es filtern, Distanzen berechnen, Spatial Joins durchführen und die Ergebnisse auf einem interaktiven Canvas mappen, alles in nur ein paar Zeilen Python. Die offizielle GeoPandas Documentation ist exzellent, und sich durch ihre Getting Started Guides zu lesen, ist der beste Weg, um das Gelernte zu festigen. Öffne ein Notebook, lade ein paar Daten, die dich interessieren, und fang an zu experimentieren. Wenn du eine Idee für ein Thema hast, das wir behandeln sollten, schau auf devstories.eu vorbei und lass es uns wissen. Der wahre Vorteil dieses Frameworks ist, dass es dir die Komplexität der Spatial Math abnimmt und dich Geografie nicht als Hürde behandeln lässt, sondern einfach als einen weiteren Datentyp, den du filtern, joinen und analysieren kannst. Das war es für diese Folge. Danke fürs Zuhören und keep building!