(Python) Multipoint Shapely - Доступ к отдельным точкам - PullRequest
0 голосов
/ 27 июня 2018

Я работаю с библиотекой Shapely в Python. Я нахожу пересечение двух линий, возвращаемое значение задается как объект MultiPoint.

Как деконструировать объект, чтобы получить отдельные точки на пересечении?

Вот код:

from shapely.geometry import LineString, MultiLineString
a = LineString([(0, 1), (0, 2), (1, 1), (2, 0)])
b = LineString([(0, 0), (1, 1), (2, 1), (2, 0)])
x = a.intersection(b)

Выход:

print(x) 
MULTIPOINT (1 1, 2 0)

Так что в этом случае я бы искал способ извлечь точки пересечения (1,1) и (2,0).

Версия: Python 3.x

Большое спасибо!

1 Ответ

0 голосов
/ 27 июня 2018

Вы можете индексировать результирующий MultiPoint:

>>> str(x)
'MULTIPOINT (1 1, 2 0)'
>>> print(len(x))
2
>>> print(x[0].x)
1.0
>>> print(x[0].y)
1.0

Если вы хотите новый список с координатами, вы можете использовать:

>>> [(p.x, p.y) for p in x]
[(1.0, 1.0), (2.0, 0.0)]
...