Exemple #1
0
def MyKdtreeTest():
    data_pts = np.arange(25)
    kdtree2 = kdtree.KDTree(data_pts, leafsize=15)
    query_pts2 = np.arange(28, 27, -1)
    dist2, idx2 = kdtree2.query(query_pts2, 2)
    #assert idx[0] == 400
    #assert dist[0] == 0
    #assert idx[1] == 390

    #num_list = np.arange(12).reshape(6,2)
    num_list = np.array([[2, 13], [5, 4], [14, 7], [18, 21], [7, 2], [2, 9],
                         [12, 13], [15, 4], [14, 27], [8, 11], [7, 12],
                         [12, 9], [22, 3], [5, 24], [4, 27], [8, 21], [7, 22],
                         [22, 9], [32, 13], [35, 4], [14, 37], [38, 11],
                         [37, 12], [32, 39], [22, 33], [35, 24], [24, 27],
                         [28, 21], [27, 22], [22, 29], [32, 13], [35, 14],
                         [14, 37], [38, 21], [37, 32], [12, 39], [32, 33],
                         [5, 1], [22, 33], [11, 12], [22, 30], [12, 21],
                         [23, 33], [41, 24]])  #定义矩阵
    mytree = kdtree.KDTree(num_list)

    testp = np.array([[35, 28]])  #定义矩阵
    find_p_num = 6
    dist, idx = mytree.query(testp, find_p_num)

    plt.scatter(num_list.T[0], num_list.T[1], c='g')
    plt.scatter(testp[0][0], testp[0][1], c='r')
    for i in range(find_p_num):
        plt.scatter(num_list[idx[0][i]][0],
                    num_list[idx[0][i]][1],
                    marker='x',
                    c='r')
    plt.show()
def matched_path_distances_normalized(sk_paths,
                                      mesh_paths,
                                      sk_inds_list,
                                      sk_rs,
                                      r_min=50,
                                      from_path='skel'):
    '''
    Compute euclidean distances between all paired paths.
    '''
    path_distances = []
    for sk_path, mesh_path, sk_inds in zip(sk_paths, mesh_paths, sk_inds_list):
        if from_path == 'mesh':
            ds, c_skinds = kdtree.KDTree(sk_path).query(mesh_path)
            ds_norm = ds / np.clip(sk_rs[c_skinds], r_min, None)
        elif from_path == 'skel':
            ds, c_minds = kdtree.KDTree(mesh_path).query(sk_path)
            ds_norm = ds / np.clip(sk_rs[sk_inds], r_min, None)
        path_distances.append(ds_norm)
    return path_distances
 def _build_kdtree(self):
     """
     Build the kdtree and saves it in the self.kdtree attribute
     """
     if self.kd_tree_name == 'pykdtree' and pykdtree_installed:
         self.kdtree = pykd.KDTree(self.coords)
     elif scipy_installed:
         self.kdtree = sc_spat.cKDTree(self.coords)
     else:
         raise Exception("No supported kdtree implementation installed.\
                          Please install pykdtree or scipy.")
 def __init__(self, points):
     points = np.array(points)
     self.point_count = len(points)
     self.kdtree = kdtree.KDTree(points)