【问题标题】:How to find the Area of Overlapping Rectangles如何找到重叠矩形的面积
【发布时间】:2018-08-09 07:19:43
【问题描述】:

我正在尝试获取没有交集的重叠矩形区域。矩形的可视化如下所示:

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA--------------BBB
AAAAAAAAAAAAAAAA--------------BBB
AAAAAAAAAAAAAAAA--------------BBB
AAAAAAAAAAAAAAAA--------------BBB
                BBBBBBBBBBBBBBBBB
                BBBBBBBBBBBBBBBBB
                BBBBBBBBBBBBBBBBB
                BBBBBB-----------CCCCCCCC
                BBBBBB-----------CCCCCCCC
                BBBBBB-----------CCCCCCCC
                      CCCCCCCCCCCCCCCCCCC
                      CCCCCCCCCCCCCCCCCCC
                      CCCCCCCCCCCCCCCCCCC
                      CCCCCCCCCCCCCCCCCCC

我正在关注url 的答案,目前以下代码对我有帮助:

import numpy as np

A = np.zeros((100, 100))
B = np.zeros((100, 100))

A[rect1.top : rect1.bottom,  rect1.left : rect1.right] = 1
B[rect2.top : rect2.bottom,  rect2.left : rect2.right] = 1

area_of_union     = np.sum((A + B) > 0)
area_of_intersect = np.sum((A + B) > 1)

获取矩形面积(具有 3 个或更多矩形)的最有效方法是什么,我如何在 python 中做到这一点?任何帮助将不胜感激。

【问题讨论】:

  • 请解释数据是如何表示的,并可能提供它的样本/示例。

标签: python optimization area aabb


【解决方案1】:

如果您可以访问 Rectangles 的角,您可以使用 shapely 模块并使用一些集合操作,例如差异和联合。 Documentation 表示操作高度优化。

from shapely.geometry import Polygon, Point

# define rectangles as polygons using their border points
A = Polygon(((0, 0), (2, 0), (2, 2), (0, 2)))

B = Polygon(((-1, -1), (-1, 1), (1, 1), (1, -1)))

C = Polygon(((0, 0), (-2, 0), (-2, -2), (0, -2)))

print(A.area)  # 4.0
print(B.area)  # 4.0
print(C.area)  # 4.0

b_without_a = B.difference(A)
b_without_c = B.difference(C)

print(b_without_a.area)  # 3.0
print(b_without_c.area)  # 3.0

total = b_without_a.intersection(b_without_c)

print(total.area)  # 2.0

【讨论】:

    猜你喜欢
    • 2021-03-12
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 2015-07-18
    • 2012-03-28
    相关资源
    最近更新 更多