developmentseed / developmentseed/cng-sandbox
feat(frontend): automatic clustering and labeling for point datasets
- Dominant language
- TypeScript
- Stars
- 3
- Forks
- 0
- Avg merge
- 2h 21m
- Merged PRs (30d)
- 3
Description
## Problem
Users exploring an unfamiliar point dataset have no way to quickly grasp its structure — where the clusters are, what regions contain what.
## Proposal
Adopt the auto-clustering + labeling approach from [Geospatial Atlas](https://github.com/do-me/geospatial-atlas) (Embedding Atlas research: https://arxiv.org/abs/2504.07285). Clusters are computed client-side from the visible extent; labels pulled from a user-chosen text column.
## Scope
- Works on point layers with at least one text-typed column
- Cluster computation runs in a web worker (don't block render)
- Labels render as map annotations with collision avoidance
- Users pick which column supplies labels (UI control)
## Dependencies
Best built on top of #216 (WebGPU point layer) so cluster computation and rendering share the same data path.
## References
- https://arxiv.org/abs/2504.07285 — the clustering algorithm paper
Contributor guide
Research direction
Start by reviewing dependency issue #216 and the Geospatial Atlas implementation, then read the linked Embedding Atlas paper to understand the proposed clustering approach. Map the visible-extent data flow, web worker boundary, point-layer label rendering, collision avoidance, and text-column selector. Done means point layers with a text column can be clustered and labeled without blocking rendering.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- data-visualization, frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100