gis-tools-ts
Version:
A collection of geospatial tools primarily designed for WGS84, Web Mercator, and S2.
74 lines • 3.13 kB
TypeScript
import type { BBox } from '../index.js';
/** Function describing how to access the minX, minY, maxX, and maxY properties */
export type BoxIndexAccessor<T> = (item: T) => BBox;
/**
* # BoxIndex
*
* ## Description
* An Index for points and rectangles
*
* A really fast static spatial index for 2D points and rectangles in JavaScript.
* Uses either a fast simple Hilbert curve algorithm or a more complex Hilbert curve (S2) algorithm.
*
* This is a partial port/typescript port of the [flatbush](https://github.com/mourner/flatbush)
* codebase.
*
* ## Usage
* ```ts
* import { BoxIndex } from 'gis-tools-ts';
* import type { BoxIndexAccessor } from 'gis-tools-ts';
*
* interface Item { minX: number; minY: number; maxX: number; maxY: number }
*
* // define how to access the minX, minY, maxX, and maxY properties
* const accessor: BoxIndexAccessor<Item> = (item: Item) => [item.minX, item.minY, item.maxX, item.maxY];
* // create the index
* const flatbush = new BoxIndex<Item>(items, accessor);
*
* // make a bounding box query
* const found = index.search(minX, minY, maxX, maxY);
*
* // make a k-nearest-neighbors query
* const neighborIds = index.neighbors(x, y, 5);
* ```
*
* ## Links
* - <https://github.com/mourner/flatbush>
*/
export declare class BoxIndex<T> {
#private;
private readonly items;
private readonly accessor;
minX: number;
minY: number;
maxX: number;
maxY: number;
/**
* Create a BoxIndex index that will hold a given number of items.
* @param items - The items to index.
* @param accessor - A function for accessing the minX, minY, maxX, and maxY properties of the items.
* @param [nodeSize] Size of the tree node (16 by default).
*/
constructor(items: T[], accessor: BoxIndexAccessor<T>, nodeSize?: number);
/**
* Search the index by a bounding box.
* @param minX - The minimum x coordinate of the query point.
* @param minY - The minimum y coordinate of the query point.
* @param maxX - The maximum x coordinate of the query point.
* @param maxY - The maximum y coordinate of the query point.
* @param [filterFn] An optional function that is called on every found item; if supplied, only items for which this function returns true will be included in the results array.
* @returns An array of indices of items intersecting or touching the given bounding box.
*/
search(minX: number, minY: number, maxX: number, maxY: number, filterFn?: (item: T) => boolean): T[];
/**
* Search items in order of distance from the given point.
* @param x - The x coordinate of the query point.
* @param y - The y coordinate of the query point.
* @param [maxResults] - The maximum number of results to return.
* @param [maxDistance] - The maximum distance to search.
* @param [filterFn] An optional function for filtering the results.
* @returns An array of indices of items found.
*/
neighbors(x: number, y: number, maxResults?: number, maxDistance?: number, filterFn?: (item: T) => boolean): T[];
}
//# sourceMappingURL=boxIndex.d.ts.map