RBush is a high-performance JavaScript library for 2D spatial indexing of points and rectangles. It's based on an optimized R-tree data structure with bulk insertion support. Spatial index is a special data structure for points and rectangles that allows you to perform queries like "all items within this bounding box" very efficiently (e.g. hundreds of times faster than looping over all items). It's most commonly used in maps and data visualizations. The demos contain visualization of trees generated from 50k bulk-loaded random points. Open web console to see benchmarks; click on buttons to insert or remove items; click to perform search under the cursor. An optional argument to RBush defines the maximum number of entries in a tree node. 9 (used by default) is a reasonable choice for most applications. Higher value means faster insertion and slower search, and vice versa.
Features
- RBush removes objects by reference
- RBush assumes the format of data points to be an object with minX, minY, maxX and maxY properties
- Bulk-Inserting Data
- Bulk insertion is usually ~2-3 times faster than inserting items one by one
- Importing and exporting as JSON allows you to use RBush on both the server (using Node.js) and the browser combined
- Non-recursive R-tree insertion with overlap minimizing split routine from R*-tree