Python的简约地理空间搜索解决方案

时间:2012-02-29 14:23:48

标签: python geocoding geospatial

我正在寻找一种在Python中进行基本地理空间搜索的简约解决方案。 我们有一个大约10 k位置的数据集,我们需要解决从给定位置找到半径N公里范围内的所有位置。我不是在寻找具有地理空间支持的显式数据库。我希望绕过另一个外部解决方案。有什么东西只会使用Python吗?

3 个答案:

答案 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循环。我想这个解决方案非常简约。下图显示了代码中给出的数据的结果。

enter image description here