我有一组折线(数量在数十万条左右,每条折线大约有200-300个顶点)。它们代表地图上的路径(如果有帮助,这些折线均来自Google Maps API),其中顶点是纬度/经度坐标。
现在我有一个查询折线,并且我必须找到查询折线与任何现有折线的“重叠部分”。结果本身将是折线,按最大到最小重叠排序。我只需要前100个结果左右。另一个问题是重叠不需要是精确的,但可以是近似的(即被视为重叠的线段部分不需要相互覆盖,只需要“接近”彼此)。
为了具体表示,在下面的图像左侧,蓝色折线(折线A)是数据库中的折线,红色折线(折线B)是查询折线。算法应确定如右侧所示的用粗黑线标记的折线。
我目前倾向于使用空间数据库(正在考虑的选项是PostgreSQL + PostGIS),但我不确定延迟是否可接受 - 查询需要立即返回结果。我的计算几何功力令人遗憾,但我想知道:是否有任何现有的算法或方法可以解决这个特定的问题?
提前致谢!