编程语言
首页 > 编程语言> > python – 计算两个矩形之间的重叠区域

python – 计算两个矩形之间的重叠区域

作者:互联网

我想计算红色和蓝色矩形之间的重叠区域“THE GREY REGION”.

每个矩形由其四个角坐标定义.重叠区域的结果单位是单位平方.

我无法想象我该怎么办?

任何有创意的评论将不胜感激.

解决方法:

这种类型的交叉点很容易通过“最小值”和“最大值”的想法来完成.要写出来,需要一个矩形的特定概念,并且,为了清楚起见,我将使用一个命名元组:

from collections import namedtuple
Rectangle = namedtuple('Rectangle', 'xmin ymin xmax ymax')

ra = Rectangle(3., 3., 5., 5.)
rb = Rectangle(1., 1., 4., 3.5)
# intersection here is (3, 3, 4, 3.5), or an area of 1*.5=.5

def area(a, b):  # returns None if rectangles don't intersect
    dx = min(a.xmax, b.xmax) - max(a.xmin, b.xmin)
    dy = min(a.ymax, b.ymax) - max(a.ymin, b.ymin)
    if (dx>=0) and (dy>=0):
        return dx*dy

print area(ra, rb)
#  0.5 

如果你不喜欢namedtuple表示法,你可以使用:

dx = max(a[0], b[0]) - min(a[2], b[2])

等等,或者你喜欢的任何表示法.

标签:shapely,python,numpy,matplotlib,polygon
来源: https://codeday.me/bug/20190930/1834982.html