如何获取形状内的点列表,这是python中2个多边形之间的差异?

时间:2016-12-27 16:45:53

标签: python numpy

我有这两个存储在numpy数组中的多边形:

[[222 322] [250 313] [278 308] [294 312] [311 309] [331 317] [350 329] [331 352]
 [311 360] [293 361] [274 358]]

[[233 324] [276 326] [294 328] [311 327] [340 331] [311 334] [294 334]]

我需要获得这两个多边形之间的所有点

1 个答案:

答案 0 :(得分:0)

首先:pip install shapely

第二

from shapely.geometry import Polygon
poly1 = Polygon([(222, 322), (250, 313), (278, 308), (294, 312), (311, 309), (331, 317), (350, 329), (331, 352), (311, 360), (293, 361), (274, 358)])

poly1.area
>>> 4369.5

poly2 = poly2 = Polygon([(233, 324), (276, 326), (294, 328), (311, 327), (340,331), (311, 334), (294, 334)])

poly2.area
>>> 420.0

area_diff = poly1.area - poly2.area
area_diff

>>> 3949.5

这是你需要的吗?

编辑:

似乎你也想要剩下的区域。不是问题。以下是我们如何达成这一目标。

points = poly1.difference(poly2)
points.bounds
>>> (222.0, 308.0, 350.0, 361.0)

编辑2:

我意识到你现在可能需要剩余区域的所有要点,这可以完成。

list(points.exterior.coords)
>>> [(222.0, 322.0),
 (274.0, 358.0),
 (293.0, 361.0),
 (311.0, 360.0),
 (331.0, 352.0),
 (350.0, 329.0),
 (331.0, 317.0),
 (311.0, 309.0),
 (294.0, 312.0),
 (278.0, 308.0),
 (250.0, 313.0),
 (222.0, 322.0)]