我有这两个存储在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]]
我需要获得这两个多边形之间的所有点
答案 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)]