我认为这应该很容易,但是我正在努力寻找方法。
我有一个2D纬度/经度点数组,我想通过选择满足2D误差的条件下的值来切出该数组以创建多边形。
这是我尝试的一个简单示例:
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位置的元组:
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)]
我正在苦苦挣扎的是如何将其变成一个形状多边形。我不能仅将这些坐标传递给Polygon,因为它们不是形状的外部坐标,它们还包括内部点。这是一个非常简单的示例,但是我的实际示例变得更加复杂。