A pure Python QuadTree spatial index for GIS or rendering usage.
PyQuadTree is a pure Python spatial index for GIS or rendering usage. It stores and quickly retrieves items from a 2x2 rectangular grid area, and grows in depth and detail as more items are added. The actual quad tree implementation is adapted from Matt Rasmussen’s compbio library and extended for geospatial use.
Python 2 and 3.
PyQuadTree is written in pure Python and has no dependencies.
Installing PyQuadTree can be done by opening your terminal or commandline and typing:
pip install pyqtree
Alternatively, you can simply download the “pyqtree.py” file and place it anywhere Python can import it, such as the Python site-packages folder.
Start your script by importing the module.
Setup the spatial index, giving it a bounding box area to keep track of. The bounding box being in a four-tuple: (xmin,ymin,xmax,ymax).
spindex = pyqtree.Index(bbox=[0,0,100,100])
Populate the index with items that you want to be retrieved at a later point, along with each item’s geographic bbox.
# this example assumes you have a list of items with bbox attribute for item in items: spindex.insert(item=item, bbox=item.bbox)
Then when you have a region of interest and you wish to retrieve items from that region, just use the index’s intersect method. This quickly gives you a list of the stored items whose bboxes intersects your region of interests.
overlapbbox = (51,51,86,86) matches = spindex.intersect(overlapbbox)
There are other things that can be done as well, but that’s it for the main usage!
This code is free to share, use, reuse, and modify according to the MIT license, see LICENSE.txt.
Karim Bahgat (2015)