如何使用sjoin合并两个GeoDataFrame,而不会出现错误

时间:2018-07-02 14:11:16

标签: python-3.x geopandas

我试图完成两个GeodataFrames之间的空间连接,但是出现此错误:

ValueError: You are trying to merge on object and int64 columns. If you wish to proceed you should use pd.concat.

这是我的代码/计划,导致我犯了该错误;

两个数据框分别命名为tag_dfcpr_df,其中包含纬度和经度值,因此我首先为两者创建了一个地理数据框;

tag_df['coordinates']=list(zip(tag_df.Longitude,tag_df.Latitude))
tag_df['coordinates']=tag_df['coordinates'].apply(Point)
tag_gdf=gpd.GeoDataFrame(tag_df,geometry='coordinates',crs={'init' :'epsg:4326'})

cpr_df['coordinates']=list(zip(cpr_df.sample_longitude_decimal,cpr_df.sample_latitude_decimal))
cpr_df['coordinates']=cpr_df['coordinates'].apply(Point)
cpr_gdf=gpd.GeoDataFrame(cpr_df,geometry='coordinates',crs={'init' :'epsg:4326'})

然后我为cpr_gdf创建了一个5海里的缓冲区:

cpr_gdf['p_buffer']=cpr_gdf['coordinates'].buffer(5*(1/60))

我现在想进行空间连接,以查找哪些tag_gdf值位于哪些缓冲的cpr_gdf值中;

tag_in_cpr=sjoin(tag_gdf,cpr_gdf,how='left',op='within')

哪个出现此错误:

ValueError: You are trying to merge on object and int64 columns. If you wish to proceed you should use pd.concat

任何帮助都会很棒。

0 个答案:

没有答案