Ich teste Geopandas, um etwas ganz einfaches zu machen: Verwenden Sie t he difference method, um einige Punkte eines GeoDataFrame zu löschen, die innerhalb eines Kreises sind.Geopandas: Unterschied() Methode zwischen Polygon und Punkten
Hier ist der Anfang von meinem Skript:
%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)
Hier die ersten Reihen von 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)
Dann füge ich einen Punkt, der mehrere Punkte des ersten GeoDF enthalten:
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')
Hier ist das vom iPython-Notebook angezeigte Ergebnis:
Jetzt ist das Ziel, rote Punkte innerhalb des grünen Kreises zu löschen. Um das zu tun, dachte ich, dass die Differenzmethode ausreicht. Aber wenn ich schreibe:
selection = points_df['geometry'].difference(circle)
selection.plot(color = 'green', markersize=5)
Das Ergebnis ist, dass ... nichts mit points_df geändert:
Ich denke, dass die Differenz() -Methode nur mit Polygonen GeoDataFrames arbeitet und die Mischung zwischen Punkte und Polygone sind nicht möglich. Aber vielleicht habe ich etwas verpasst!
Ist eine Funktion zum Testen des Vorhandenseins eines Punktes im Kreis in diesem Fall besser als die Differenzmethode?
Danke wieder schlump ;-)! Ich habe ein Problem, um rtree auf meinem Rechner zu installieren, aber ich bin mir sicher, dass deine Antwort gut ist, also bestätige ich es :-) – Raphadasilva
Danke :). Yeha ich hatte auch ein paar kleine Probleme, um Geopandas mit allem reibungslos laufen zu lassen ... – schlump