我正在寻找一种在Python中进行基本地理空间搜索的简约解决方案。 我们有一个大约10 k位置的数据集,我们需要解决从给定位置找到半径N公里范围内的所有位置。我不是在寻找具有地理空间支持的显式数据库。我希望绕过另一个外部解决方案。有什么东西只会使用Python吗?
答案 0 :(得分:2)
scipy.spatial
有一个kd-tree实现,可能是Python中最受欢迎的实现。
答案 1 :(得分:2)
Shapely似乎是一个很好的解决方案。它的描述似乎符合您的要求:
[ Shapely ]它允许您使用Python在数据库上下文之外执行PostGIS-ish内容。
它基于GEOS,它是一个广泛使用的C ++库。
Here是文档的链接
答案 2 :(得分:0)
没有任何外部模块的自制解决方案可能是这样的:
import numpy as np
points = np.array([[22.22, 33.33],
[08.00, 05.00],
[03.12, 05.00],
[09.00, 08.00],
[-02.5, 03.00],
[0.00, -01.00],
[-10.0,-10.00],
[12.00, 12.00],
[-4.00, -6.00]])
r = 10.0 # Radius withing the points should lie
xm = 3 # Center x coordinate
ym = 8 # Center y coordinate
points_i = points[((points[:,0] - xm)**2 + (points[:,1] - ym)**2)**(1/2.0) < r]
points_i包含半径范围内的那些点。这个解决方案要求数据处于一个numpy数组中,据我所知,这也是一种非常快速的方法来通过大数据集来反对for循环。我想这个解决方案非常简约。下图显示了代码中给出的数据的结果。