Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Romlige Sammenføyninger med Geopandas | Romlige Analyseteknikker
Geospatial Analyse med Python

Romlige Sammenføyninger med Geopandas

Sveip for å vise menyen

Romlige sammenføyninger er en kraftig metode for å kombinere geospatiale datasett basert på deres romlige relasjoner, i stedet for kun å matche attributtverdier. Med geopandas kan du enkelt utføre romlige sammenføyninger for å besvare spørsmål som «Hvilke punkter faller innenfor hvilke polygoner?» eller «Hvilke objekter er nærmest hverandre?». Hovedverktøyet for dette i geopandas er metoden sjoin(), som slår sammen to GeoDataFrame-objekter ved å evaluere deres romlige relasjoner.

Anta at du har to romlige datasett: ett som inneholder plasseringer av skoler (som punkter) og et annet som inneholder nabolagsgrenser (som polygoner). Ved å utføre en romlig sammenføyning kan du finne ut hvilken skole som ligger i hvilket nabolag, eller telle antall skoler per nabolag.

Metoden sjoin() i geopandas lar deg spesifisere hvilken type romlig relasjon som skal brukes for sammenføyningen, som within, contains eller intersects. I tillegg kan du velge typen sammenføyning — left, right eller inner — som avgjør hvordan rader fra hvert datasett matches og beholdes i resultatet.

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"]])

I eksempelet over ser du tre typer sammenføyninger:

  • Left join: beholder alle punkter (skoler), og legger til nabolagsinformasjon der det er tilgjengelig;
  • Right join: beholder alle polygoner (nabolag), og legger til skoler som finnes innenfor dem;
  • Inner join: beholder kun punkter som er innenfor et nabolag.

Valg av riktig sammenføyningstype avhenger av analyseformålet. For eksempel, hvis du vil ha med alle skoler uavhengig av om de ligger i et nabolag, bruk en left join. Hvis du vil se alle nabolag og skolene de inneholder, bruk en right join. Hvis du kun er interessert i skoler som ligger i nabolag, bruk en inner join.

question mark

Hvilket utsagn om romlige joins i geopandas er korrekt?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 1

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 2. Kapittel 1
some-alt