Я думал, что это должно быть легко, но я изо всех сил пытаюсь понять, как это сделать.
У меня есть двумерный массив точек широты / долготы, и я хочу вырезать этот массивсоздать полигон, выбрав значения, которые удовлетворяют критериям в массиве 2-D.
Вот моя попытка на простом примере:
array([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 0., 0., 0., 0., 1.],
[1., 1., 1., 1., 1., 0., 0., 0., 0., 1.],
[1., 1., 1., 1., 1., 0., 0., 0., 0., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])
Я хочу вырезать секцию 0этот массив и превратить его в многоугольник.
Я могу найти индексы, где значение равно 0:
b = np.where(a==0)
(array([2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4]),
array([5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8]))
Я могу сжать их вверх, чтобы сформировать кортежи из x, y позиции Iхочу вырезать:
zip(b[0],b[1])
[(2, 5),
(2, 6),
(2, 7),
(2, 8),
(3, 5),
(3, 6),
(3, 7),
(3, 8),
(4, 5),
(4, 6),
(4, 7),
(4, 8)]
Я борюсь с тем, как превратить это в Shapely Polygon.Я не могу просто передать эти координаты в Polygon, поскольку они не являются внешними координатами фигуры, они также включают внутренние точки.Это довольно простой пример, но мои реальные примеры усложняются.