是否有Python中的包可以在球面上执行类似于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]