Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Ruimtelijke Joins met Geopandas | Ruimtelijke Analysetechnieken
Georuimtelijke Analyse met Python

Ruimtelijke Joins met Geopandas

Veeg om het menu te tonen

Ruimtelijke joins zijn een krachtige manier om geospatiale datasets te combineren op basis van hun ruimtelijke relaties in plaats van alleen overeenkomende attribuutwaarden. Met geopandas kun je eenvoudig ruimtelijke joins uitvoeren om vragen te beantwoorden zoals "Welke punten vallen binnen welke polygonen?" of "Welke objecten liggen het dichtst bij elkaar?" Het belangrijkste hulpmiddel hiervoor in geopandas is de methode sjoin(), die twee GeoDataFrame-objecten samenvoegt door hun ruimtelijke relaties te evalueren.

Stel dat je twee ruimtelijke datasets hebt: één met locaties van scholen (als punten) en een andere met wijkgrenzen (als polygonen). Door een ruimtelijke join uit te voeren, kun je bepalen welke school zich in welke wijk bevindt, of het aantal scholen per wijk tellen.

Met de methode sjoin() in geopandas kun je het type ruimtelijke relatie specificeren dat je wilt gebruiken voor de join, zoals within, contains of intersects. Daarnaast kun je het type join kiezen — left, right of inner — wat bepaalt hoe records uit elke dataset worden gekoppeld en behouden in het resultaat.

123456789101112131415161718192021222324252627282930313233343536
import geopandas as gpd from shapely.geometry import Point, Polygon # Create GeoDataFrame of points (e.g., schools) points = gpd.GeoDataFrame({ "school": ["A", "B", "C"], "geometry": [ Point(1, 1), Point(2, 2), Point(3, 3) ] }) # Create GeoDataFrame of polygons (e.g., neighborhoods) polygons = gpd.GeoDataFrame({ "neighborhood": ["Red", "Blue"], "geometry": [ Polygon([(0,0), (0,2), (2,2), (2,0)]), # Red neighborhood Polygon([(2,2), (2,4), (4,4), (4,2)]) # Blue neighborhood ] }) # Spatial join: which school is in which neighborhood? left_join = gpd.sjoin(points, polygons, how="left", predicate="within") right_join = gpd.sjoin(points, polygons, how="right", predicate="within") inner_join = gpd.sjoin(points, polygons, how="inner", predicate="within") print("Left Join Result:") print(left_join[["school", "neighborhood"]]) print("\nRight Join Result:") print(right_join[["school", "neighborhood"]]) print("\nInner Join Result:") print(inner_join[["school", "neighborhood"]])

In het bovenstaande voorbeeld zie je drie typen joins:

  • Left join: behoudt alle punten (scholen), met toevoeging van wijkinformatie waar beschikbaar;
  • Right join: behoudt alle polygonen (wijken), met toevoeging van scholen die erin liggen;
  • Inner join: behoudt alleen punten die binnen een wijk liggen.

De juiste keuze van het type join hangt af van je analysetoelstelling. Als je bijvoorbeeld alle scholen wilt zien, ongeacht of ze binnen een wijk vallen, gebruik dan een left join. Wil je alle wijken en de scholen die ze bevatten zien, gebruik dan een right join. Als je alleen geïnteresseerd bent in scholen die binnen wijken liggen, gebruik dan een inner join.

question mark

Welke uitspraak over ruimtelijke joins in geopandas is correct?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 1

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 2. Hoofdstuk 1
some-alt