Class RBush<T>

Type Parameters

  • T

Constructors

  • Constructs an RBush, a high-performance 2D spatial index for points and rectangles. Based on an optimized R-tree data structure with bulk-insertion support.

    Type Parameters

    • T

    Parameters

    • Optional maxEntries: number

      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.

    Returns RBush<T>

Methods

  • Returns all items contained in the tree.

    Returns T[]

  • Removes all items.

    Returns RBush<T>

  • Returns true if there are any items intersecting the given bounding box, otherwise false.

    Parameters

    • box: BBox

      The bounding box in which to search.

    Returns boolean

  • Compares the minimum x coordinate of two items. Returns -1 if a's x-coordinate is smaller, 1 if b's x coordinate is smaller, or 0 if they're equal.

    By default, RBush assumes the format of data points to be an object with minX, minY, maxX, and maxY. However, you can specify a custom item format by overriding toBBox(), compareMinX(), and compareMinY().

    Parameters

    • a: T

      The first item to compare.

    • b: T

      The second item to compare.

    Returns number

    Example

    class MyRBush<T> extends RBush<T> {
    toBBox([x, y]) { return { minX: x, minY: y, maxX: x, maxY: y }; }
    compareMinX(a, b) { return a.x - b.x; }
    compareMinY(a, b) { return a.y - b.y; }
    }
    const tree = new MyRBush<[number, number]>();
    tree.insert([20, 50]); // accepts [x, y] points
  • Compares the minimum y coordinate of two items. Returns -1 if a's x-coordinate is smaller, 1 if b's x coordinate is smaller, or 0 if they're equal.

    By default, RBush assumes the format of data points to be an object with minX, minY, maxX, and maxY. However, you can specify a custom item format by overriding toBBox(), compareMinX(), and compareMinY().

    Parameters

    • a: T

      The first item to compare.

    • b: T

      The second item to compare.

    Returns number

    Example

    class MyRBush<T> extends RBush<T> {
    toBBox([x, y]) { return { minX: x, minY: y, maxX: x, maxY: y }; }
    compareMinX(a, b) { return a.x - b.x; }
    compareMinY(a, b) { return a.y - b.y; }
    }
    const tree = new MyRBush<[number, number]>();
    tree.insert([20, 50]); // accepts [x, y] points
  • Imports previously exported data into the tree (i.e., data that was emitted by toJSON()).

    Importing and exporting as JSON allows you to use RBush on both the server (using Node.js) and the browser combined, e.g. first indexing the data on the server and and then importing the resulting tree data on the client for searching.

    Note that the maxEntries option from the constructor must be the same in both trees for export/import to work properly.

    Parameters

    • data: any

      The previously exported JSON data.

    Returns RBush<T>

  • Inserts an item. To insert many items at once, use load().

    Parameters

    • item: T

      The item to insert.

    Returns RBush<T>

  • Bulk-inserts the given items into the tree.

    Bulk insertion is usually ~2-3 times faster than inserting items one by one. After bulk loading (bulk insertion into an empty tree), subsequent query performance is also ~20-30% better.

    Note that when you do bulk insertion into an existing tree, it bulk-loads the given data into a separate tree and inserts the smaller tree into the larger tree. This means that bulk insertion works very well for clustered data (where items in one update are close to each other), but makes query performance worse if the data is scattered.

    Parameters

    • items: readonly T[]

      The items to load.

    Returns RBush<T>

  • Removes a previously inserted item, comparing by reference.

    To remove all items, use clear().

    Parameters

    • item: T

      The item to remove.

    • Optional equals: ((a, b) => boolean)

      A custom function that allows comparing by value instead. Useful when you have only a copy of the object you need removed (e.g. loaded from server).

        • (a, b): boolean
        • Parameters

          • a: T
          • b: T

          Returns boolean

    Returns RBush<T>

  • Returns an array of data items (points or rectangles) that the given bounding box intersects.

    Note that the search method accepts a bounding box in {minX, minY, maxX, maxY} format regardless of the data format.

    Parameters

    • box: BBox

      The bounding box in which to search.

    Returns T[]

  • Returns the bounding box for the provided item.

    By default, RBush assumes the format of data points to be an object with minX, minY, maxX, and maxY. However, you can specify a custom item format by overriding toBBox(), compareMinX(), and compareMinY().

    Parameters

    • item: T

      The item whose bounding box should be returned.

    Returns BBox

    Example

    class MyRBush<T> extends RBush<T> {
    toBBox([x, y]) { return { minX: x, minY: y, maxX: x, maxY: y }; }
    compareMinX(a, b) { return a.x - b.x; }
    compareMinY(a, b) { return a.y - b.y; }
    }
    const tree = new MyRBush<[number, number]>();
    tree.insert([20, 50]); // accepts [x, y] points
  • Exports the tree's contents as a JSON object.

    Importing and exporting as JSON allows you to use RBush on both the server (using Node.js) and the browser combined, e.g. first indexing the data on the server and and then importing the resulting tree data on the client for searching.

    Note that the maxEntries option from the constructor must be the same in both trees for export/import to work properly.

    Returns any

Generated using TypeDoc