2012-02-29 74 views
3

我正在尋找一種在Python中進行基本地理空間搜索的簡約解決方案。 我們有一個大約10 k個位置的數據集,我們需要解決從給定位置到N公里範圍內的所有位置。我沒有尋找具有地理空間支持的顯式數據庫。我希望能夠繞過另一個外部解決方案。有什麼只會使用Python嗎?Python的簡約地理空間搜索解決方案

回答

2

Shapely似乎是一個很好的解決方案。它描述似乎與你在找什麼:

[勻稱]它可以讓你做了PostGIS十歲上下的東西使用Python數據庫的範圍之外。

它基於GEOS,它是一個廣泛使用的C++庫。

Here是將文檔

2

scipy.spatial有一個kd-tree實現,它可能是Python中最受歡迎的實現。

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數組,這是我所知道的,也是一個非常快速的方式,通過大數據集反向循環。我想這個解決方案非常簡約。下圖顯示了代碼中給出的數據的結果。

enter image description here

+0

這種線性算法可能工作好了OP的10K數據集,但比通常這一領域內應用的技術效率要低得多。 – 2012-02-29 22:46:13