Координаты пересечения линий и полигонов

Я работаю с 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)
Другие вопросы по тегам