Ich versuche herauszufinden, wo mehrere Linien ein Polygon für zwei verschiedene Geodatenrahmen schneiden:
from shapely.geometry import Polygon, LineString
import geopandas as gpd
polygon = Polygon([(0, 0), (1, 0), (1, 1), (0, 1), (0, 0)])
line1 = LineString([(0.5, 0.5), (0.7, 0.7)])
line2 = LineString([(0.9, 0.9), (0.2, 0.6)])
poly_gdf = gpd.GeoDataFrame(geometry=[polygon])
line_gdf = gpd.GeoDataFrame(geometry=[line1, line2])
So sehen die obigen Geodatenrahmen aus (einer hat ein Polygon und der andere hat zwei Linien). Es sieht für mich so aus, als ob beide Linien das Polygon schneiden:
Die Schnittmenge ist jedoch sehr verwirrend:
print(line_gdf.intersects(poly_gdf))
0 Richtig
1 Falsch
print(line1.intersects(polygon))
print(line2.intersects(polygon))
Wahr
Wahr
Warum gibt die geopandas
intersect
Methode eine andere Ausgabe als die Standardmethode aus shapely
?
Ich verwende Python 3.5.3 und Geopandas 0.2.1 alle auf Anaconda.
print(line.intersects(polygon))
war ein Tippfehler. Ich habe die Frage aktualisiert, um darauf zu verweisen, line1
was ich ursprünglich gemeint habe.
line_gdf.info
bestätigt, dass Sie nur eine einzige Geometriespalte haben. Ich bin ratlos. Ich werde nachgehen, wenn ich etwas finde.
print(line.intersects(polygon))
Sie greifen auf eine Variable zu, die meines Erachtens nicht definiert ist. Sie habenline1
undline2
früher im Code definiert. Ich weiß nicht, warum das True zurückgeben würde.