Превратить двумерный массив точек широты и долготы в многоугольник Shapely? - PullRequest
0 голосов
/ 10 февраля 2019

Я думал, что это должно быть легко, но я изо всех сил пытаюсь понять, как это сделать.

У меня есть двумерный массив точек широты / долготы, и я хочу вырезать этот массивсоздать полигон, выбрав значения, которые удовлетворяют критериям в массиве 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, поскольку они не являются внешними координатами фигуры, они также включают внутренние точки.Это довольно простой пример, но мои реальные примеры усложняются.

...