clustering-system

Group geotagged photos into hierarchical map clusters across zoom levels.

132|42|Updated Aug 19, 2020
One-click install
npx skills add https://github.com/OpenLitterMap/openlittermap-web --skill clustering-system
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: clustering-system
Source: https://github.com/OpenLitterMap/openlittermap-web/tree/main/.ai/skills/clustering-system
Command: npx skills add https://github.com/OpenLitterMap/openlittermap-web --skill clustering-system

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

ClusteringSystem provides scalable, hierarchical clustering of geotagged photos for map visualizations, reducing rendering load and improving user experience by grouping nearby items into multi-level clusters.

Core Features & Use Cases

  • Hierarchical grid-based clustering across 9 zoom levels to balance detail and performance.
  • Global and per-team clustering with a unified storage model and strict verification thresholds.
  • Public GeoJSON API endpoints for map rendering and a team-scoped API for authenticated access.
  • Dirty-tile tracking and incremental updates via PhotoObserver and scheduled processes to keep clusters in sync with new data.

Quick Start

Start by rebuilding all clusters with the clustering:update command and then fetch the clusters from the public API to render the map.

Frequently Asked Questions about clustering-system

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I cluster geotagged photos for map visualization at multiple zoom levels?

Group geotagged photos into scalable map clusters using a hierarchical grid-based approach across 9 zoom levels. This reduces rendering load by grouping nearby items into multi-level clusters for simplified visualization.

How does dirty-tile tracking keep map clusters in sync with new data?

Dirty-tile tracking identifies modified grid tiles when new geotagged photos are added, allowing scheduled incremental updates to reprocess only affected clusters instead of rebuilding the entire map.

How do I get GeoJSON output from clustered map data for a specific team?

Fetch clustered data via team-scoped GeoJSON API endpoints for authenticated access, or use public endpoints for global map rendering. Both return clustered geographic features formatted for visualization.

Can I use this clustering system with a Laravel backend for large-scale maps?

Yes, the system integrates with Laravel backends to manage global and per-team clustering. It uses a unified storage model with tile-key management and strict verification thresholds to handle large-scale maps efficiently.

What is the best way to rebuild all map clusters after initial setup?

Execute the clustering:update command to perform a full rebuild of all clusters. This processes every geotagged photo and regenerates the complete hierarchical grid structure from scratch.

Why does my GeoJSON API return overlapping clusters on the map?

Overlapping clusters may occur if dirty tiles are not fully processed during incremental updates. Run a full rebuild command to regenerate the entire hierarchical grid and synchronize all cluster boundaries.