我有一个经纬度坐标的数组,我想使用KDTree和scipy的
问题是
结果是一个类似以下坐标的数组:
query_ball_point
来返回指定纬度和经度的1英里半径内的所有数据点。问题是
query_ball_point
返回的点超出了指定的1英里半径。以下是我的代码:import pandas as pd
import scipy as sp
import geocoder
import pysal as psl
search_list = df['coordinates'].tolist()
tree = psl.cg.KDTree(search_list, distance_metric='Arc', radius=psl.cg.RADIUS_EARTH_MILES)
latlong = (39.698840000000004, -104.975916)
index = tree.query_ball_point(latlong,r=1)
结果是一个类似以下坐标的数组:
+---------------------------------------+
| coordinates |
+---------------------------------------+
| (39.676973877551, -104.966231826172) |
| (39.6777407534644, -104.988982458831) |
| ... |
+---------------------------------------+
当我尝试使用球面距离公式验证这些结果时,我发现第一个坐标相差1.6英里
from haversine import haversine
haversine((39.676973877551, -104.966231826172),
(39.698840000000004, -104.975916),miles=True)
1.5961362762187963