我在PostgreSQL中有两个大型数据库(500k到3M行),每个都包含一组GPS lat long。我需要将一个数据库中的所有坐标与另一个数据库中的坐标进行比较,找到相距不超过300米的点。
我开始使用PostgreSQL,因为我听说过它的空间索引,它可以加速几何相关的任务。想法是使用空间索引,例如R树,只检查已确定彼此接近的节点,而不是每次检查整个数据库O(n ^ 2)
然而,我无法找到与此相关的任何内容。 *编辑:我不是在寻找距离计算算法,我正在寻找优化来加速我的2个表中位置的比较。所以这不是一个重复的问题。
答案 0 :(得分:0)
在这里给小费。
距离是静态函数(计算)的结果,它输入了2组long和lat。
使用您可以在互联网上找到的公式,找出距离大于300公里的偏差(纬度和长度之和)。
该点与极点越接近,偏差越大,距赤道点越近,偏差越小。因此,根据它们与赤道的接近程度将划分分为3-4个不同的区域,然后计算其他坐标必须有多么不同,以确定距离高于300km,然后仅与剩余的坐标一起工作。
这将极大地提高您计划执行的任何类型搜索的性能。
祝你好运!