Danh sách tham gia không gian lat, lon và multipolygon Python
Sep 02 2020
Tôi có một khung dữ liệu với các cột vĩ độ, kinh độ trong WGS84.
Tôi cũng có một lớp đa đa giác (GeoJSON, tôi cũng có thể chuyển nó thành SHP) với ranh giới của tất cả các quốc gia, trong đó tên của quốc gia nằm trong bảng thuộc tính.
Tôi muốn thêm vào khung dữ liệu một cột mà đối với mỗi vĩ độ, tôi sẽ có tên quốc gia.
Cách hiệu quả để làm điều đó là gì (giả sử tôi có 2000 cặp lat lon)?
CẬP NHẬT:
Cảm ơn @BERA, tôi đã tạo chức năng này:
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
Trả lời
2 BERA Sep 02 2020 at 13:08
Tham gia không gian:
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
Nếu bạn có df gấu trúc trong số các coords, hãy tạo geopandas như sau: Tạo GeoDataFrame từ DataFrame có tọa độ