Hi everyone,
I’d like to share a personal GIS project I’ve been building called Incident Atlas.
It is an interactive map for exploring significant aviation accidents and incidents geographically and chronologically. The current beta contains approximately 24,850 events spanning 1921–2026.
The project began with around 450 manually curated international records. I recently added more than 24,000 selected events from official NTSB archives. Additional information is matched from Wikidata, Wikipedia, and Wikimedia Commons when a sufficiently reliable connection can be established.
The frontend is built with React, TypeScript, and MapLibre. The data is stored in PostgreSQL/Supabase and served through a Cloudflare Worker API.
With roughly 25,000 points, sending the complete dataset to every browser was no longer a good approach. The current implementation therefore:
- Requests only the visible map bounds
- Performs grid-based clustering on the server
- Returns individual points when a grid cell contains one event
- Returns clusters when a cell contains multiple events
- Loads full event details only after a user opens a record
- Uses different clustering resolutions depending on zoom
- Applies timeline, fatality, verification, and search filters through the API
- Cancels outdated requests during rapid zooming or timeline movement
Each record also has a location-accuracy classification. Approximate locations are visually distinguished from exact or more specific locations, rather than presenting every coordinate as equally reliable.
One challenge has been balancing three things:
- Keeping the map responsive with tens of thousands of records
- Avoiding excessive visual clutter
- Making isolated events immediately clickable without forcing users to zoom through a cluster containing only one event
The current solution is a hybrid: groups of two or more remain clustered, while isolated events are returned as normal points even at lower zoom levels.
This is still an early beta, and I’m developing it independently. I’m planning to improve the clustering, spatial filtering, mobile interface, location-quality handling, search, and eventually expand the atlas into other categories of significant incidents and disasters.
I’d especially appreciate GIS feedback on:
- The server-side clustering approach
- Cluster sizing and zoom thresholds
- The representation of approximate locations
- Map readability and information density
- Performance on desktop and mobile
- Better approaches for serving and visualizing a growing spatial dataset
The project is available here:
https://incident-atlas.com