Próbuję znaleźć miejsce, w którym wiele linii przecina wielokąt dla dwóch różnych ramek geodanych:
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])
Tak wyglądają powyższe ramki danych (jedna ma wielokąt, a druga dwie linie). Wydaje mi się, że obie linie przecinają wielokąt:
Jednak wynik przecięcia jest bardzo mylący:
print(line_gdf.intersects(poly_gdf))
0 Prawda
1 False
print(line1.intersects(polygon))
print(line2.intersects(polygon))
Prawdziwe
Prawdziwe
Dlaczego geopandas intersectmetoda daje inny wynik niż standardowy shapely?
Używam Python 3.5.3 i Geopandas 0.2.1 wszystkie na Anaconda.
print(line.intersects(polygon))był literówką. Zaktualizowałem pytanie, aby odnieść się do line1tego, co pierwotnie miałem na myśli.
line_gdf.infopotwierdza, że masz tylko jedną kolumnę geometrii. Jestem zakłopotany. Sprawdzę, jeśli coś znajdę.

print(line.intersects(polygon))że masz dostęp do zmiennej, która nie jest zdefiniowana tak daleko, jak widzę. Zdefiniowałeśline1iline2wcześniej w kodzie. Nie wiem, dlaczego to zwróci Prawdę.