我有一個簡單的點地理數據框架,如下所示: 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 回答

長風秋雁
TA貢獻1757條經驗 獲得超7個贊
現在這實際上是預期的行為。GeoSeries.contains
是按行操作,這意味著如果您這樣做polygons.contains(point)
,它將首先對齊兩個 GeoSeries,然后檢查第 0 行上的多邊形是否包含第 0 行上的點等。
在你的情況下,這可能看起來類似于:
points_with_data = geopandas.sjoin(points, polygons, how='left')
添加回答
舉報
0/150
提交
取消