Algorithm 确定矩形是否完全被一组多边形覆盖所需的算法

Algorithm 确定矩形是否完全被一组多边形覆盖所需的算法,algorithm,data-structures,Algorithm,Data Structures,给定一组多边形p和一个矩形区域a,我需要验证a是否完全被p覆盖 多边形的数量和复杂性以及总面积A都非常大,因此,基于多边形联合的方法可能无法及时工作。为了让事情变得简单一点,我定义了“a”为我关心的覆盖范围内最小区域的大小。我曾想过建立一个2D段树状结构,在2D中重复分割区域(每个区域正方形分成4个子正方形,直到子正方形大小为a'),但由于我们在这里处理多边形,我不确定这是否足够有效。您可以使用多边形相交或差异而不是并集: 将A本身视为多边形,每次拾取多边形p'并将A细化为-p',然后检查A是否

给定一组多边形p和一个矩形区域a,我需要验证a是否完全被p覆盖


多边形的数量和复杂性以及总面积A都非常大,因此,基于多边形联合的方法可能无法及时工作。为了让事情变得简单一点,我定义了“a”为我关心的覆盖范围内最小区域的大小。我曾想过建立一个2D段树状结构,在2D中重复分割区域(每个区域正方形分成4个子正方形,直到子正方形大小为a'),但由于我们在这里处理多边形,我不确定这是否足够有效。

您可以使用多边形相交或差异而不是并集:


将A本身视为多边形,每次拾取多边形p'并将A细化为-p',然后检查A是否为空。检查完所有多边形后,您可以确定A是否被P覆盖。

什么是限制?多边形数,最小-最大坐标(目标多边形和所有其他多边形)。我想这可能会有所帮助:[1]我有超过50K个多边形,A的大小相当大。为了增加更多的上下文,我不得不将A分成14倍,以达到A'(即)A=4^14*A'的大小@TonyMorris我正在处理的多边形非常复杂,有内部孔等。。。我使用了第三方库来查找联盟(如文章中所述),但没有任何用处。另一方面,找出一个矩形是否落在这些多边形中运行得更快,这就是我尝试2D分段树方法的原因。在旁注中,我们如何实际实现2D分段树?与一维树相比,我在这里看到的问题是,在一维树中,我们知道查询的范围在遍历深度并返回结果时只拆分两次。但是在2D中,这似乎不是针对二维段树的CASI,你应该首先考虑片段的X投影,得到1D段树,然后树的每个节点也是节点X范围内的段的Y投影上的1D段树。是的,我正要说同样的话。我很快就开始使用该解决方案,但通过a-P解决方案运行时,使用复杂多边形创建并集的问题又回来了。