Координаты пересечения линий и полигонов
Я работаю с Python, Shapely и Fiona. Учитывая, что доступны два шейп-файла, шейп-файл линии и шейп-файл полигона.
Как получить шейп-файл конечного результата, состоящий из точек пересечения (обозначенных Q-метками) и их соответствующих координат?
1 ответ
Вам необходимо получить пересечение с внешней стороны многоугольника и линии. Если вместо этого вы используете пересечение с полигоном, результатом будет линия, поскольку полигоны имеют площадь. Кроме того, пересечение может быть линией, если они параллельны, так что вы также можете ожидать GeometryCollection
Вот что-то для начала:
from shapely.wkt import loads
poly = loads('POLYGON ((140 270, 300 270, 350 200, 300 150, 140 150, 100 200, 140 270))')
line = loads('LINESTRING (370 290, 270 120)')
intersection = poly.exterior.intersection(line)
if intersection.is_empty:
print("shapes don't intersect")
elif intersection.geom_type.startswith('Multi') or intersection.geom_type == 'GeometryCollection':
for shp in intersection:
print(shp)
else:
print(intersection)