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
intersect
metoda 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 line1
tego, co pierwotnie miałem na myśli.
line_gdf.info
potwierdza, ż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śline1
iline2
wcześniej w kodzie. Nie wiem, dlaczego to zwróci Prawdę.