Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我有一个很大的边界框列表,如何计算重复项?_C++_Algorithm_Geolocation_Theory - Fatal编程技术网

C++ 我有一个很大的边界框列表,如何计算重复项?

C++ 我有一个很大的边界框列表,如何计算重复项?,c++,algorithm,geolocation,theory,C++,Algorithm,Geolocation,Theory,我有一个边界框列表,我想知道如何计算哪些是多余的/重复的 原因是我有200万个这样的框,我发送给API,我想知道哪些是重叠的,这样我可以减少它们,使每个框只覆盖一块独特的土地,所以没有两个边界框覆盖同一块地理空间 我该如何计算,使这些边界框都覆盖了各自独特的地理空间 我用C++ BWT.< /P> < P>编写程序,你可以检查Xbox的顶点是否在另一个框中,以找出它是否重叠,但我想这不是最佳的解决方案。 < P>我认为这个任务比你想象的要复杂。p> 您必须拆分现有的框,直到不存在重叠,然后删除另

我有一个边界框列表,我想知道如何计算哪些是多余的/重复的

原因是我有200万个这样的框,我发送给API,我想知道哪些是重叠的,这样我可以减少它们,使每个框只覆盖一块独特的土地,所以没有两个边界框覆盖同一块地理空间

我该如何计算,使这些边界框都覆盖了各自独特的地理空间


我用C++ BWT.< /P> < P>编写程序,你可以检查Xbox的顶点是否在另一个框中,以找出它是否重叠,但我想这不是最佳的解决方案。

< P>我认为这个任务比你想象的要复杂。p> 您必须拆分现有的框,直到不存在重叠,然后删除另一个框中包含的所有框

与其给你一个解决方案,我建议你检查一下你是否可以接受:

1) 移除完全包含在另一个盒子中的盒子。
2) 保持(部分)重叠框的原样

对于200万,您需要一个空间索引(四叉树),以获得一个框附近所有框的列表

如果必须避免任何重叠,则必须继续思考结果如何?
A) 重叠矩形的并集,因此不再是矩形,而是多边形。

或者B)结果应该是矩形。

您希望如何处理重叠?我知道这不是您想要的答案,但这可能会让您感兴趣:我希望这样,如果一个边界框的面积被其他边界框覆盖了50%以上(尽管这个百分比可以更改),那么它应该删除它。当然,我会画一个图像:)在油漆上为你画这样的东西@JamesCampbell在这里,“prune”是指“变小”还是“去掉”?是的,它非常复杂,我提出的一个解决方案是,这些边界框实际上是从位于它们中心的地理位置点计算出来的。所以我可以从这个中心点算起一个半径,尽可能填满盒子。如果任何其他中心点在该半径内,那么我移除它们和它们相关的方框,然后我将仅依靠潜在的少量重叠来不影响结果或对结果产生不利影响,这是您上面提到的操作:)听起来不错,如果您采用简单但足够的方法,通常可以节省大量资金。