Skip to content

SINTEF/GeoBed3D

Repository files navigation

GeoBed3D

3D GeoJSON viewer built on CesiumJS. Load GeoJSON files, explore them on a satellite terrain globe, and model causal dynamics with the FCM (Fuzzy Cognitive Map) tool.

License

Live demo: https://hcilab.no/geobed3d/ — password: Sintef0373

Open data

All data layers in GeoBed3D are sourced from free, open services — no proprietary data required.

Layer Source Where to get it
3D terrain Cesium World Terrain (via Cesium Ion) ion.cesium.com — free account
3D buildings Cesium OSM Buildings (via Cesium Ion) ion.cesium.com — free account
Roads, labels, outdoor basemap OpenStreetMap via Maptiler maptiler.com — free tier
Satellite imagery ESRI World Imagery (ArcGIS) No key required — used as default basemap
Live sun & atmosphere CesiumJS built-in No key required
Geotagged photos Wikimedia Commons No key required — fetched by location automatically
Live AIS ship traffic BarentsWatch barentswatch.no — free account, register an API client

Setup

1. Copy the config template and fill in your keys:

cp config.example.json config.json

Edit config.json:

Key Where to get it
CESIUM_TOKEN ion.cesium.com — free tier
MAPTILER_KEY maptiler.com — free tier
BW_CLIENT_ID / BW_CLIENT_SECRET barentswatch.no — free, format: email:AppName
SITE_PASSWORD Any string to password-protect the app; leave empty to disable

config.json is gitignored and never committed.

2. Run locally:

python3 server.py

Open http://localhost:8765.

Deployed (PHP host): upload all files including config.json alongside proxy.php. The app works without any keys — terrain and basemap fall back to flat/ESRI satellite.

Test files

Sample files are in test_files/:

File What it tests
test-geojson.geojson Standard GeoJSON — points, lines, polygons with styling properties
test-fcm.geojson FCM (Fuzzy Cognitive Map) format — nodes + edges for causal map animation

Drag and drop them into the viewer to try it out.

GeoJSON format

GeoBed3D reads standard GeoJSON with optional custom styling properties (color, title, note, noteimage, icon, etc.).

FCM (Fuzzy Cognitive Map)

Load a GeoJSON FeatureCollection where Point features are nodes and a top-level edges array defines weighted causal links. Hit FCM to animate propagation to equilibrium.

Future work

  • More open data — expand built-in data layers: weather, elevation profiles, administrative boundaries, and additional free global datasets
  • Live data integrations — connect to external APIs for real-time feeds beyond AIS: ocean sensors, metocean data, IoT streams, and vessel tracking services
  • Bathymetry and ocean focus — dedicated support for underwater terrain, seafloor mapping, and ocean data visualization as a first-class use case
  • Session persistence — save and restore the state of loaded layers, active toggles, and camera position across sessions
  • CMS / API layer — a backend content and data management layer for GeoBed3D, enabling organisations to publish, version, and serve geospatial datasets directly to the platform (Sanity.io? Pocketbase?)

Acknowledgements

This platform was created by the HCI group of SINTEF Digital and XR Lab Norway as a testbed for projects with geographical data and related visualizations.

About

3D GeoJSON viewer built on CesiumJS. A testbed to load GeoJSON files, explore them on a satellite terrain globe, and model causal dynamics with the FCM (Fuzzy Cognitive Map) tool.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors