python sklearn KDTree with haversine distance
Question: I try to create a KD tree of WGS84 coordinates and find neighbors within a
certain radius

    
    
    from sklearn.neighbors.dist_metrics import DistanceMetric
    from sklearn.neighbors.kd_tree import KDTree    
    T = KDTree([[47.8665, 8.90123]], metric=DistanceMetric.get_metric('haversine'))
    

But get the following error:

    
    
    ValueError: metric HaversineDistance is not valid for KDTree
    

How can I use haversine distance in a KD-Tree?


Answer: `KDTree.valid_metrics`

Output -

    
    
    ['p',
     'l1',
     'chebyshev',
     'manhattan',
     'minkowski',
     'cityblock',
     'l2',
     'euclidean',
     'infinity']
    

Which tells, you can't use `haversine` with KDTree. The reason behind it is
`haversine` distance gives you
[Orthodromic](https://en.wikipedia.org/wiki/Great-circle_distance) distance
which is the distance measure used when your points are represented in a
sphere. But in a kdTree the points are organised in a tree which makes it
invalid to use.

