-
Notifications
You must be signed in to change notification settings - Fork 3
Sample Dashboards
GeoSet ships with a self-contained demo stack that loads real geospatial data and pre-built dashboards so you can explore the platform without setting up your own data sources.
The demo stack loads three datasets from public APIs:
| Dataset | Source | Table |
|---|---|---|
| US State Boundaries | Census Bureau API | census_state_boundaries |
| Active Wildfire Locations | NIFC ArcGIS API | nifc_wildfire_locations |
| Hurricane Best Track | NHC/NOAA API | nhc_best_track |
These datasets power two pre-built dashboards:
A multi-layer map combining:
- Storm Track Points — NHC best track observation points colored by max wind speed (yellow → red gradient)
- Storm Track Lines — aggregated best track lines per storm per year
- Census State Boundaries — US state boundary polygons
Includes native dashboard filters for Hurricane Season (year) and Hurricane Name (cascades from Season).
A multi-layer map combining:
- NIFC Wildfire Locations — active wildfire points colored by fire cause (Human, Natural, Undetermined)
- Census State Boundaries — US state boundary polygons
Includes a native dashboard filter for Fire Cause.
The demo uses a separate Docker Compose file (docker-compose-geoset.yml) that is fully independent from the main docker-compose.yml. It runs on different ports and separate volumes so the two stacks don't interfere.
# Start the demo stack
docker compose -f docker-compose-geoset.yml up
# Start with a full rebuild
docker compose -f docker-compose-geoset.yml up --build
# Stop
docker compose -f docker-compose-geoset.yml down
# Stop and wipe all data (full reset)
docker compose -f docker-compose-geoset.yml down -vAccess the demo at http://localhost:9001 with credentials admin / admin.
The data ingest container runs once and is idempotent — if the tables already have data, the scripts skip them.
Browser (:9001)
│
▼
superset-node-geoset ← Webpack dev server (hot reload)
│
▼ API calls
superset-geoset (:8088) ← Flask backend
│
├──▶ db-geoset ← PostgreSQL (Superset metadata)
└──▶ postgis (:5433) ← PostGIS (geospatial data)
│
▼
geoset-sample-data-ingest ← One-shot data loader
- Add a
CREATE TABLEstatement tosample-data/init.sql - Write an ingest script in
sample-data/that fetches and inserts the data. Useutils.pyfor the DB connection and callskip_if_populated()to keep it idempotent - Register the script in
sample-data/entrypoint.sh
- Build the chart in the Superset UI using your new dataset
- Export it from Charts → Actions → Export (downloads a ZIP with YAMLs)
- Copy the YAMLs into:
superset/examples/geoset_configs/charts/GeoSet/superset/examples/geoset_configs/datasets/geoset/
- Strip the
query_contextfield from the chart YAML (it contains instance-specific IDs)
- Build the dashboard in the Superset UI
- Export it from Dashboards → Actions → Export
- Copy the dashboard YAML into
superset/examples/geoset_configs/dashboards/
Multi Map charts reference sub-layer charts by integer ID in deck_slices. Since IDs vary per instance, use deck_slice_uuids with stable UUIDs in the YAML instead. The post-import hook resolves these to runtime IDs automatically.
docker compose -f docker-compose-geoset.yml up --buildThe importer walks the entire geoset_configs/ directory — all dashboards, charts, and datasets are picked up automatically.