Я намагаюся знайти, де кілька ліній перетинають полігон для двох різних геоданих кадрів:
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])
Ось так виглядають наведені вище геодетафрейми (один має багатокутник, а інший - дві лінії). Мені здається, ніби обидві лінії перетинають багатокутник:
Однак пересічний вихід дуже заплутаний:
print(line_gdf.intersects(poly_gdf))
0 Правда
1 Неправдивий
print(line1.intersects(polygon))
print(line2.intersects(polygon))
Правда
Правда
Чому geopandas
intersect
метод дає інший вихід до стандартного shapely
?
Я використовую Python 3.5.3 та Geopandas 0.2.1 все на Anaconda.
print(line.intersects(polygon))
був помилковим. Я оновив питання, посилаючись на line1
яке я мав на увазі спочатку.
line_gdf.info
підтверджує, що у вас є лише один стовпець геометрії. Я тупаю. Я піду, якщо щось знайду.
print(line.intersects(polygon))
ви отримуєте доступ до змінної, яка не визначена, наскільки я бачу. Ви вказалиline1
іline2
раніше в коді. Я не знаю, чому це поверне Правду.