我有一个包含多边形的GeoDataFrame(约30个)和一个包含点的GeoDataFrame(约10k个)。
我希望在我的点的GeoDataFrame中创建30个新列(带有适当的多边形名称),如果该点位于多边形中,则为简单布尔值True/False。
举个例子,这是多边形的GeoDataFrame:
id geometry
foo POLYGON ((-0.18353,51.51022, -0.18421,51.50767, -0.18253,51.50744, -0.1794,51.50914))
bar POLYGON ((-0.17003,51.50739, -0.16904,51.50604, -0.16488,51.50615, -0.1613,51.5091))
点的 GeoDataFrame 如下所示:
counter points
1 ((-0.17987,51.50974))
2 ((-0.16507,51.50925))
预期输出:
counter points foo bar
1 ((-0.17987,51.50974)) False False
1 ((-0.16507,51.50925)) False False
我可以通过手动方式完成此操作:
foo = df_poly.loc[df_poly.id=='foo']
df_points['foo'] = df_points['points'].map(lambda x: True if foo.contains(x).any()==True else False
但是既然我有30个多边形,我想知道是否有更好的方法。感谢任何帮助!