如何在 C++ 中检测地图中给定位置的面积?

How to detect the area of a given place in a map in c++?

我正在开发一个项目,我需要检测给定区域是否被某个地方覆盖。例如:

假设该图像是我的地图,给定区域有 2 个地方,一个是黄色,另一个是绿色,所以如果我问我的应用程序:"Which places cover the area from 1 to 3 and from A to F?" 它应该告诉我两个地点等。

我正在考虑使用矩阵,但我需要加载 5 张地图,每一张都不同,例如,第二张地图从 H 开始到 M 结束,从 10 开始到 30 结束。所以我'我不确定还有什么用,有什么想法吗?

通常找到与其他区域重叠或相交的二维区域是称为 R 树的数据结构的工作。地点被输入到 R 树中。然后查询 rtree 以查看查询区域命中了哪些。您可以使用 C++ R-Tree 库并将这些位置放入内存中的 R-Tree 或者您可以将您的位置放在支持 R-Trees 的数据库中,例如 sqite。您可以将地点保存到数据库中,然后通过查询数据库将它们存入内存。 Sqlite 是进程内数据库。您不需要为此设置单独的服务器。