Формированный многоугольник в бинарную маскуPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Формированный многоугольник в бинарную маску

Сообщение Anonymous »

Я видел этот вопрос, но не смог найти полного ответа. У меня есть простой фигурный многоугольник, называемый многоугольником. Я хотел бы извлечь этот многоугольник как двоичную маску (в идеале массив NumPy). Как бы мне это сделать?
Мне также удалось преобразовать форму из геопанд в геопанды, как показано здесь, поэтому извлечение маски из геопанд тоже сработает, но на самом деле мне это не удалось. к сожалению, найти тему по этому поводу.
РЕДАКТИРОВАТЬ:
Чтобы внести ясность: если вместо этого я буду использовать сетку координат, моя сетка содержит декартовы координаты x и y (неупорядоченные). соответствующие точкам, образующим контур формы. Это числа с плавающей запятой, поэтому решения, требующие ввода int, не будут работать. В идеале я хотел бы, чтобы отправной точкой был фигурный многоугольник, а не набор точек, но вместо этого я могу использовать неупорядоченный набор точек, если это предпочтительнее (или, альтернативно, каким-то образом извлечь вершины по часовой стрелке из фигурного многоугольника)Я попробовал метод Юсуке, описанный здесь, но маска, которую я получил, не совсем имеет смысла.
Метод Юсуке:
#%% create grid and plot
nx, ny = 100, 100
poly_verts = Plane1verts #this is a list of tuples containing cartesian coordinate pairs of the shape contour in x and y
# Create vertex coordinates for each grid cell...
# ( is at the top left of the grid in this system)
x, y = np.meshgrid(np.arange(nx), np.arange(ny))
x, y = x.flatten(), y.flatten()

points = np.vstack((x,y)).T

path = Path(poly_verts)
grid = path.contains_points(points)
grid = grid.reshape((ny,nx))

plt.imshow(grid)
plt.title('Grid plot')
plt.show()

результат маски:
Изображение

Это не то, чего я ожидал. Тогда как график геопанд, как описано ниже, показывает правильную форму.
#%% create shapely and plot for comparison
from shapely.geometry import Polygon
#convert the sets of points dict to a shapely object
polygon1_plane1=Polygon(Plane1vert_tuple)

p = gpd.GeoSeries(polygon1_plane1)
p.plot()
plt.show()

Результат в виде графика
Изображение

EDIT2:
вот копия координатной сетки, которую я использую в качестве списка кортежей
[(-8.982, -12.535), (-7.478, -12.535), (-5.975, -12.535), (-4.471, -12.535), (-4.471, -12.535), (-2.967, -11.031), (-1.463, -11.031), (-1.463, -11.031), (0.041, -9.527), (0.041, -9.527), (1.544, -8.023), (3.048, -8.023), (4.552, -8.023), (4.552, -8.023), (6.056, -6.52), (7.559, -6.52), (7.559, -6.52), (7.559, -5.016), (9.063, -3.512), (10.567, -3.512), (10.567, -3.512), (10.567, -2.008), (10.567, -0.505), (10.567, 0.999), (10.567, 2.503), (10.567, 4.007), (10.567, 4.007), (9.063, 5.51), (9.063, 5.51), (7.559, 7.014), (7.559, 7.014), (6.056, 8.518), (6.056, 8.518), (4.552, 10.022), (4.552, 11.526), (4.552, 11.526), (3.048, 11.526), (1.544, 11.526), (1.544, 11.526), (1.544, 10.022), (0.041, 8.518), (0.041, 8.518), (0.041, 7.014), (-1.463, 5.51), (-2.967, 5.51), (-4.471, 5.51), (-4.471, 5.51), (-5.975, 4.007), (-7.478, 4.007), (-8.982, 4.007), (-10.486, 4.007), (-11.99, 4.007), (-13.493, 4.007), (-13.493, 4.007), (-14.997, 2.503), (-14.997, 2.503), (-16.501, 0.999), (-18.005, 0.999), (-18.005, 0.999), (-18.005, -0.505), (-19.508, -2.008), (-19.508, -2.008), (-19.508, -3.512), (-19.508, -5.016), (-19.508, -5.016), (-18.005, -6.52), (-18.005, -8.023), (-18.005, -8.023), (-16.501, -9.527), (-16.501, -9.527), (-14.997, -9.527), (-13.493, -11.031), (-13.493, -11.031), (-11.99, -11.031), (-10.486, -12.535), (-10.486, -12.535)]


Подробнее здесь: https://stackoverflow.com/questions/677 ... inary-mask
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»