point-cluster
Point clustering for 2D spatial indexing. Incorporates optimized quad-tree data structure.
const cluster = let ids = // get point ids in the indicated rangelet selectedIds = ids // get levels of details: list of ids subranges for rendering purposeslet lod = ids
API
ids = cluster(points, options?)
Create index for the set of 2d points
based on options
.
points
is an array of[x,y, x,y, ...]
or[[x,y], [x,y], ...]
coordinates.ids
is 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. |
<!-- node |
1 |
Min size of node, ie. tree traversal is stopped once the node contains less than the indicated number of points. --> |
<!-- sort |
'z' |
Sort values within levels by x -, y -coordinate, z -curve or r - point radius. z is the fastest for init, x or y are faster for lod and r is the most data-relevant. --> |
<!-- pick |
'first' |
'first' , 'last' or a function, returning point id for the level. --> |
result = ids.range(box?, options?)
Get point ids from the indicated range.
box
can 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. |
let levels = ids levels
Related
- snap-points-2d − grouping points by pixels.
- kdgrass − minimal kd-tree implementation.
- regl-scatter2d − highly performant scatter2d plot.
License
© 2017 Dmitry Yv. MIT License
Development supported by plot.ly.