我正在測試geopandas以使某些事情變得非常簡單:使用t he difference method可以刪除圓內的GeoDataFrame的某些點。Geopandas:多邊形和點之間的差異()方法
這裏是我的腳本的開頭:
%matplotlib inline
# previous line is because I used ipynb
import pandas as pd
import geopandas as gp
from shapely.geometry import Point
[...]
points_df = gp.GeoDataFrame(csv_file, crs=None, geometry=geometry)
這裏的points_df的第一行:
Name Adress geometry
0 place1 street1 POINT (6.182674 48.694416)
1 place2 street2 POINT (6.177306 48.689889)
2 place3 street3 POINT (6.18 48.69600000000001)
3 place4 street4 POINT (6.1819 48.6938)
4 place5 street5 POINT (6.175694 48.690833)
然後,我補充一點,將包含第一GeoDF的幾點:
base = points_df.plot(marker='o', color='red', markersize=5)
center_coord = [Point(6.18, 48.689900)]
center = gp.GeoDataFrame(crs=None, geometry=center_coord)
center.plot(ax=base, color = 'blue',markersize=5)
circle = center.buffer(0.015)
circle.plot(ax=base, color = 'green')
下面是iPython筆記本顯示的結果:
現在,目標是刪除綠色圓圈內的紅點。要做到這一點,我認爲差異化方法就足夠了。但是,當我寫:
selection = points_df['geometry'].difference(circle)
selection.plot(color = 'green', markersize=5)
結果是......與points_df什麼都沒有改變:
我猜差()方法與多邊形GeoDataFrames只能之間的組合點和多邊形是不可能的。但也許我錯過了一些東西!
在這種情況下,測試圓中點的存在的函數是否會比差異方法更好?
再次謝謝schlump ;-)!我有一個問題在我的機器上安裝rtree,但我相信你的答案是好的,所以我驗證它:-) – Raphadasilva
謝謝:)。 Yeha我也有一些輕微的問題讓Geopandas在一切順利運行... – schlump