Point clustering for 2D spatial indexing. Incorporates optimized quad-tree data structure.
constcluster=require('point-cluster')letids=cluster(points)// get point ids in the indicated rangeletselectedIds=ids.range([10,10,20,20])// get levels of details: list of ids subranges for rendering purposesletlod=ids.range([10,10,20,20],{lod: true})Create index for the set of 2d points based on options.
pointsis an array of[x,y, x,y, ...]or[[x,y], [x,y], ...]coordinates.idsis Uint32Array with point ids sorted by zoom levels, suitable for WebGL buffer, subranging or alike.options
| Option | Default | Description |
|---|---|---|
bounds | 'auto' | Data range, if different from points bounds, eg. in case of subdata. |
depth | 256 | Max number of levels. Points below the indicated level are grouped into single level. |
output | 'array' | Output data array or data format. For available formats see dtype. |
Get point ids from the indicated range.
boxcan be any rectangle object, eg.[l, t, r, b], see parse-rect.options
| Option | Default | Description |
|---|---|---|
lod | false | Makes result a list of level details instead of ids, useful for obtaining subranges to render. |
px | 0 | Min pixel size in data dimension (number or [width, height] couple) to search for, to ignore lower levels. |
level | null | Max level to limit search. |
letlevels=ids.range([0,0,100,100],{lod: true,d: dataRange/canvas.width})levels.forEach([from,to]=>{// offset and count point to range in `ids` arrayrender(ids.subarray(from,to))})- snap-points-2d − grouping points by pixels.
- kdgrass − minimal kd-tree implementation.
- regl-scatter2d − highly performant scatter2d plot.
© 2017 Dmitry Yv. MIT License
Development supported by plot.ly.
