我正在尝试使用纬度和经度信息找到点几何的最近邻居。经过多次搜索后,我得出结论,使用基于kd树的appproach将是最好的选择。到目前为止,我已经尝试了三种不同的kdtree方法,其中没有一种方法有效。
1.使用墨卡(UTM)投影。这是最不实用的,因为距离计算特别错误,因为这些点遍布全球。
2.使用经纬度系统协调自身。 KdTree在lat和long之间交替切换平面。这有一个固有的问题,因为纬度是平行的,因此是等距的,但经度不是。因此,计算与分裂平面的距离是纬度的函数。但是按照定义分割平面只有一个维度 - 它分裂的那个维度。
3.通过将lat-long转换为xyz来使用笛卡尔坐标。笛卡尔坐标不会产生与使用lat-long计算的距离相同的最近邻居。在xyz平面上紧密间隔的点在纬度较长的平面上变得更远,反之亦然。
是否有人知道这个问题的不同方法和一个有效的方法?非常感谢!
编辑:我对第三种方法错了。它实际上运作得很好。
答案 0 :(得分:0)
我已经成功实现了墨卡托投影和四核。将x坐标和y坐标转换为二进制并交错。然后将其视为基数为4的数字。