将经纬度点的2D数组转换为Shapely多边形?

时间:2019-02-10 16:40:27

标签: python geometry shapely

我认为这应该很容易,但是我正在努力寻找方法。

我有一个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,因为它们不是形状的外部坐标,它们还包括内部点。这是一个非常简单的示例,但是我的实际示例变得更加复杂。

0 个答案:

没有答案