python - 用于经度/纬度的 KDTree

标签 python data-structures latitude-longitude kdtree

Python 中是否有任何包允许对球体表面的经度/纬度进行类似 kdtree 的操作? (这需要适当考虑球面距离,以及经度环绕)。

最佳答案

我相信来自 scikit-learn 的 BallTree 和 Haversine 指标应该可以为您解决问题。

举个例子:

from sklearn.neighbors import BallTree
import numpy as np
import pandas as pd

cities = pd.DataFrame(data={
    'name': [...],
    'lat': [...],
    'lon': [...]
})

query_lats = [...]
query_lons = [...]

bt = BallTree(np.deg2rad(cities[['lat', 'lon']].values), metric='haversine')
distances, indices = bt.query(np.deg2rad(np.c_[query_lats, query_lons]))

nearest_cities = cities['name'].iloc[indices]

请注意,这会返回假设半径为 1 的球体的距离 - 得到地球上的距离乘以半径 = 6371km

见:

关于python - 用于经度/纬度的 KDTree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10549402/

相关文章:

javascript - 如何更新多行字形的 ColumnDataSource 数据?

python - sklearn auc 分数 - diffmetrics.roc_auc_score & model_selection.cross_val_score

python - 计算2个张量所有元素之间的距离

java - 高效的 TableModel 实现

python - 确定信号超过预定义限制的时间

C#有序组合算法

MySQL存储 float

python - 使用python对地理定位的、不规则间隔的经度/纬度网格执行双线性插值的最快方法?

mysql - 当多边形的点为经纬度时,如何在MySQL数据库中计算多边形的面积?

java - 如何删除二叉树的叶子?