Find nearest neighbor with morton code
我已经实现了
我正在寻找的是找到最近的邻居(在
因此,例如:
1 2 3 4 5 6 7 | points=[(200,300),(500,150),(100,50)] mortonCodes = {} for p in points: mortonCodes[encode(p)] = p nearest = findNearestNeighbor(mortonCodes, (201,305)) print(nearest) # ---> should return (200,300) |
这可能吗?
您可以使用
使用查询点
现在,您为这两点创建莫顿代码。
在(210,305)的120范围内的所有点将具有morton代码
如果您有按morton编码排序的点列表,则应将搜索范围缩小很多。
请注意,该范围将包含误报!并非所有在最小和最大之间具有morton码的点都在给定的距离120内,因此您必须检查范围内的所有点"实际上"是否在正确的距离内。
如果您对空间搜索感兴趣,请查看PH树,它是类似于四叉树的空间索引,它使用morton顺序来优化树结构和搜索。