Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Spatiaaliset Liitokset Geopandasilla | Spatiaalisen Analyysin Tekniikat
Paikkatietoanalyysi Pythonilla

Spatiaaliset Liitokset Geopandasilla

Pyyhkäise näyttääksesi valikon

Aineistojen yhdistäminen spatiaalisten suhteiden perusteella on tehokas tapa yhdistää paikkatietoaineistoja pelkkien attribuuttien sijaan. geopandas-kirjastolla voit helposti suorittaa spatiaalisen yhdistämisen ja vastata kysymyksiin, kuten "Mitkä pisteet sijaitsevat missäkin polygonissa?" tai "Mitkä kohteet ovat lähimpänä toisiaan?" Tärkein työkalu tähän geopandas-kirjastossa on sjoin()-metodi, joka yhdistää kaksi GeoDataFrame-objektia arvioimalla niiden spatiaalista suhdetta.

Oletetaan, että sinulla on kaksi paikkatietoaineistoa: toinen sisältää koulujen sijainnit (pisteinä) ja toinen kaupunginosien rajat (polygoneina). Spatiaalisen yhdistämisen avulla voit selvittää, missä kaupunginosassa kukin koulu sijaitsee tai laskea koulujen määrän kaupunginosittain.

sjoin()-kirjaston geopandas-metodilla voit määrittää, minkälaista spatiaalista suhdetta yhdistämisessä käytetään, kuten within, contains tai intersects. Lisäksi voit valita yhdistämistyypin — left, right tai inner — joka määrittää, miten kummankin aineiston rivit yhdistetään ja säilytetään tuloksessa.

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

Yllä olevassa esimerkissä näkyy kolme yhdistämistyyppiä:

  • Left join: säilyttää kaikki pisteet (koulut) ja lisää kaupunginosan tiedon, jos saatavilla;
  • Right join: säilyttää kaikki polygonit (kaupunginosat) ja lisää niihin sisältyvät koulut;
  • Inner join: säilyttää vain ne pisteet, jotka sijaitsevat kaupunginosassa.

Oikean yhdistämistyypin valinta riippuu analyysin tavoitteista. Jos haluat kaikki koulut riippumatta siitä, sijaitsevatko ne kaupunginosassa, käytä left join -yhdistämistä. Jos haluat nähdä kaikki kaupunginosat ja niihin kuuluvat koulut, käytä right join -yhdistämistä. Jos kiinnostavat vain kaupunginosissa sijaitsevat koulut, käytä inner join -yhdistämistä.

question mark

Mikä seuraavista väittämistä geopandas-kirjaston spatiaalista liitosta koskien on oikein?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 1

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 2. Luku 1
some-alt