我有一个lat-long坐标数组,我试图使用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)
结果是一个坐标数组,如下所示:
^{pr2}$当我试图用哈弗辛公式来验证这些结果时,我看到第一个坐标是1.6英里
from haversine import haversine
haversine((39.676973877551, -104.966231826172),
(39.698840000000004, -104.975916),miles=True)
1.5961362762187963
Pysal没有使用haversine函数来计算query_ball_point方法的距离。它使用pysal.cg.球体.arcdist函数,这是不同的。在
1英里内有3个点
^{pr2}$根据哈弗辛公式,并非所有这些点都在1英里之内:
但根据pysal的arcdist公式,它们在1英里以内,半径为3958.756英里:
^{4}$相关问题 更多 >
编程相关推荐