2012年10月18日 星期四 16:46
我有一个数量比较大的坐标点数据
需要不断的提取跟给定点距离最近的坐标值
以前数据量小,可以直接用循环遍历
现在数据量比较大了(需要遍历的数据也多了),
感觉速度明显降低
请问大家,除了遍历以外,还有不有,什么合适的算法
数据为三列(x,y,value)是没有排序的
查询数据(x,y)
之前使用的是
for i in date:
x,y=i
for j in 查询坐标:
x1,y1=j
if distance(x,x1,y,y1):
'write something'
请大家帮忙看看。谢谢
2012年10月18日 星期四 18:50
用KDTree,SciPy里面有相关的库:
http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.cKDTree.html#scipy.spatial.cKDTree
2012年10月18日 星期四 21:33
所有的二维点把平面分成若干个锐角三角形,你只需要把所有的三角形记录下来,然后,确定给定点在哪个三角形内(或者边上),这样只需要比较给定点和三角形的顶点之间的距离就可以了!
2012年10月20日 星期六 16:23
把数据按X排序得数组Ax
按Y排序得数组Ay
变化成A*路径算法,
有点不同的是每次确定新路径点,都要重新查询新点在另一数组中的索引值
Zeuux © 2024
京ICP备05028076号