如何在c ++中检测地图中给定位置的区域?

时间:2016-11-19 19:02:05

标签: c++ maps area

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

enter image description here

假设图像是我的地图,并且有2个地方有一个给定区域,一个是黄色,另一个是绿色,所以如果我问我的应用:“哪个地方覆盖了1到3区域A到F?“它应该告诉我两个地方,等等。

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

1 个答案:

答案 0 :(得分:1)

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