Uzamsal birleştirme listesi enlem, boylam ve çokgen Python
Sep 02 2020
WGS84'te enlem, enlem sütunları olan bir veri çerçevem var.
Ayrıca, ülke adının öznitelik tablosunda yer aldığı tüm ülkelerin sınırları ile çokgen katmanım (GeoJSON, bunu bir SHP'ye de dönüştürebilirim) var.
Veri çerçevesine, her lat, lon için ülke adını alacağım bir sütun eklemek istiyorum.
Bunu yapmanın etkili yolu ne olabilir (2000 enlem boylam çiftim olduğunu varsayarak)?
GÜNCELLEME:
@BERA sayesinde bu işlevi oluşturdum:
import geopandas as gpd
from shapely.geometry import Point
df_countries = gpd.read_file(r"C:\countries.geojson")
def get_countries(df, lat_col, lon_col,df_countries):
df_latlon = df[[lat_col,lon_col]].copy()
df_latlon['Coordinates'] = list(zip(df_latlon[lon_col], df_latlon[lat_col]))
df_latlon['Coordinates'] = df_latlon['Coordinates'].apply(Point)
df_latlon = gpd.GeoDataFrame(df_latlon, geometry='Coordinates')
df_latlon = df_latlon.set_crs(epsg=4326)
df_latlon = gpd.sjoin(df_latlon, df_countries[['CNTRY_NAME','geometry']], how='left')
return df_latlon
Yanıtlar
2 BERA Sep 02 2020 at 13:08
Uzamsal Birleştirme:
import geopandas as gpd
dfpoints = gpd.read_file(r"C:\folder\bs_riks.shp")
dfpolys = gpd.read_file(r"C:\folder\ak_riks.shp")
df = gpd.sjoin(dfpoints, dfpolys, how='left')
#or: df = gpd.sjoin(dfpoints, dfpolys[['CNTRY_NAME','geometry']], how='left') #If you dont want all attributes from the polygons
Koordinatların bir pandas df'sine sahipseniz, aşağıdaki gibi jeopandalar oluşturun: Koordinatlarla bir DataFrame'den bir GeoDataFrame oluşturma
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'