A C extension for doing quad trees (spatial indexing) in Python.
first you need to make a new tree:
import quadtree
quadtree = quadtree.QuadTree(0,0,1000,1000)
then you can add some data at different (x,y) locations:
quadtree.addpoint(1,1,'abc')
quadtree.addpoint(1,2,'def')
quadtree.addpoint(1,3,'ghi')
if you want to find a list of things within 5 units of the location (1,1):
quadtree.listnearby(1,1,5) --> ['ghi','def','abc']
quadtree.listnearby(1,1,2.1) --> ['def','abc']
you can also map a function to points given a location and a radius:
def fun(arg):
print arg[0]
quadtree.maptonearby(fun,1,1,.1) --> (prints) abc
and lastly, you can delete a thing from the quadtree, given the thing and it's location:
x = 5
quadtree.addpoint(5,5,x)
quadtree.deletepoint(5,5,x)