我有一个简单的点地理数据框架,如下所示: name geometry0 Location1 POINT (9.71852 50.56186)1 Location2 POINT (9.72912 50.55847)另一方面,我有一个更复杂的 GeoDataFrame,它由多边形组成。我的目标是如果某个点位于多边形区域中,则使用其他 GDF 的一些信息更新我的点 GDF。所以我想使用 contains() 方法来检查哪些多边形包含一个点。我用一个简单的布尔掩码进行了测试:mask = polygons.contains(points.loc[0,'geometry'])selection = polygons.loc[mask]显然,选择返回一个与第一行 GDF 点匹配的多边形。我想考虑 GDF 的所有行,例如:mask = polygons.contains(points['geometry'])这个面具不起作用,我猜这是一个索引问题,但我不知道如何修复它......
1 回答
![?](http://img1.sycdn.imooc.com/533e4d5b0001d57502200203-100-100.jpg)
长风秋雁
TA贡献1757条经验 获得超7个赞
现在这实际上是预期的行为。GeoSeries.contains
是按行操作,这意味着如果您这样做polygons.contains(point)
,它将首先对齐两个 GeoSeries,然后检查第 0 行上的多边形是否包含第 0 行上的点等。
在你的情况下,这可能看起来类似于:
points_with_data = geopandas.sjoin(points, polygons, how='left')
添加回答
举报
0/150
提交
取消