鉴于大量的linesegments,你如何有效地找到与矩形相交的所有线段?典型的应用是GIS数据库,查找属于当前视野范围内的所有道路。对于点,这可以通过将点存储在KD树中来有效地完成,但是线段的相应数据结构是什么?
如果算法考虑线宽,则奖励,但零宽度算法完全可以。
答案 0 :(得分:2)
您可以使用细分树,例如CGAL中存在的细分树: dD Range and Segment Trees。该数据结构可用于所有维度,包括维度2.
答案 1 :(得分:1)
将矩形视为一组4个线段。 你现在有一组n + 4个线段。 在线段上应用扫描线算法。 如果两个线段来自不同的集合,则仅执行交叉点。即一个段,是frm矩形,另一个是来自数据库。 此外,您可以从矩形的第一个顶点开始扫描线处理,并在完全处理所有矩形线时结束。
您还可以搜索空间散列和线光栅化(用于使用行数据填充空间单元格) 。这可能会更快。
答案 2 :(得分:0)
另一种可能的数据结构是R-tree。特别是priority R-tree将为您提供运行时间的保证上限,但启发式变体在实践中可能更快。