私は geopandas をテストして、非常に単純なものを作成しています。差分メソッドを使用して、円の内側にある GeoDataFrame のいくつかのポイントを削除します。
これが私のスクリプトの始まりです:
%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 で何も変わっていません:
difference() メソッドはポリゴン GeoDataFrames でのみ機能し、ポイントとポリゴンの混合は不可能だと思います。しかし、多分私は何かを逃した!
この場合、円内の点の存在をテストする関数は差分法よりも優れていますか?