空間結合リストlat、lonおよびmultipolygon Python

Sep 02 2020

WGS84にlat、lon列のデータフレームがあります。

また、国の名前が属性テーブルにあるすべての国の境界を持つマルチポリゴンレイヤー(GeoJSON、SHPに変換することもできます)があります。

データフレームに列を追加したいと思います。各緯度、経度には国名があります。

それを行うための効率的な方法は何でしょうか(2000 lat lonペアがあると仮定します)?

更新:

@BERAのおかげで、私はこの関数を作成しました:

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

回答

2 BERA Sep 02 2020 at 13:08

空間結合:

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

座標のパンダdfがある場合は、次のようにジオパンダを作成します。座標を使用してDataFrameからGeoDataFrameを作成する