У меня есть линейная строка, которая охватывает различные полигоны, хранящиеся в виде GeoJsons.Я хочу разбить линию на отдельные части в каждой области многоугольника.Однако я пока не смог этого добиться.Это воспроизводимый пример того, что у меня пока есть:
from shapely.geometry import Point, LineString, Polygon
from shapely.ops import split
from matplotlib import pyplot as plt
poly = {
'type': "Feature",
'geometry': {
"type": "Polygon",
"coordinates": ([(2,2),(2,4),(4,4),(4,2)]),
},
'properties': {
'id': 'A'
}
}
line = {
'type': "Feature",
'geometry': {
"type": "Linestring",
"coordinates": ([(3,3),(5,1)]),
},
'properties': {
'id': 'A'
}
}
poly = Polygon(poly['geometry']['coordinates'])
line = LineString(line['geometry']['coordinates'])
x,y = poly.exterior.xy
x2,y2 = line.coords
plt.plot(x, y, x2, y2)
plt.show()
Этот код создает следующий квадратный многоугольник с пересекающейся линией строк:
IЗатем я попытался разбить линию через многоугольник, как показано ниже:
new_lines = split(line, poly)
Но я получаю следующий вывод, который кажется неправильным:
GEOMETRYCOLLECTION (LINESTRING (3 3, 4 2), LINESTRING (4 2, 5 1))
Я ожидал трилинии, одна существует внутри квадратного многоугольника, а затем две существующие отдельно вне многоугольника.