Линия, пересекающая многоугольник:

Учитывая следующий код:
Код: Выделить всё
import geopandas as gp
from shapely.geometry import LineString, Polygon
# Draw a polygon that is 100 x 100 units, starting at coordinates 0, 0
polygon = Polygon([(50, 0), (50, 100), (100, 100), (100, 0)])
# Convert the polygon to a geodataframe
polygon = gp.GeoDataFrame(index=[0], crs='EPSG:4326', geometry=[polygon])
# Draw a horizontal line that starts at coordinates 50, 0 and is 200 units long
line = LineString([(0, 50), (75, 50), (70, 35), (55, 40), (250, 50)])
# Convert the line to a geodataframe
line = gp.GeoDataFrame(index=[0], crs='EPSG:4326', geometry=[line])
print(line)
# Intersect the line with the polygon
intersection = line.intersection(polygon)
print(intersection)
0 LINESTRING (0.00000 50.00000, 75.00000 50.0000...
0 МНОГОСТРОЧНАЯ СТРОКА ((50.00000 50.00000, 75.00000 ...
После пересечения мне возвращается мультилиния вместо строки. Линия разделяется многоугольником (желательно), но также разделяется. разбивается на несколько строк, где оно самопересекается (нежелательно).
Я безуспешно пытался повторно соединить многострочную строку с помощью унарного объединения.
Я не уверен, что еще я могу сделать, чтобы сохранить только часть линии, содержащуюся в многоугольнике, как одну линию. Есть мысли, как это можно сделать?>
Подробнее здесь: https://stackoverflow.com/questions/793 ... -geopandas
Мобильная версия