Minimalistic geospatial searching solution for Python

387 views Asked by At

I am looking for a minimalistic solution for doing basic geospatial search in Python. We have a dataset of roughly 10 k locations and we need to solve the find the all locations within a radius of N kilometers from a given location. I am not looking for explicit database with geospatial support. I hope to get around another external solution. Is there something that would use Python only?

3

There are 3 answers

0
Nic_tfm On BEST ANSWER

Shapely seems to be a good solution. Its description seems to correspond to what you're looking for :

[Shapely] It lets you do PostGIS-ish stuff outside the context of a database using Python.

It is based on GEOS, which a widely used C++ library.

Here is a link to the documentation

0
Mike Graham On

scipy.spatial has a kd-tree implementation that might be the most popular in Python.

1
Betrieb On

A self made solution without any external modules could be something like this:

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 contains those points which lie within the radius. This solution requires the data to be in a numpy array which is to my knowledge also a very fast way to go trough large data sets as oppose to for loops. I guess this solution is pretty much minimalistic. The plot below shows the outcome with the data given in the code.

enter image description here