STINUUM is a JavaScript library to visualize and analyze moving objects on Cesium. STINUUM imports OGC Moving Features JSON data and supports animated maps as well as static maps and a space-time cube for navigating the trajectory of moving objects over space and time. The main characteristics of STINUUM are as follows:
- Diverse geometry types to represent movements
- Multiscale data analysis in space and time
- Highly accessibility and lightweight deployment
The current version of STINUUM supports only the OGC Moving Features JSON format.
The OGC Moving Features JSON format is described in OGC 19-045r3 Section 7.
Requires Node.js 22.12 or newer.
npm install
npm run devQuality checks:
npm run lint
npm run test
npm run build
npm run test:e2eThe Playwright command requires its Chromium browser to be installed with
npx playwright install chromium.
Raw MF-JSON will flow through validation and normalization before it reaches
visualization adapters. The normalized domain in src/mfjson remains
independent from Cesium and ECharts; those integrations belong under
src/visualization. React components consume application-ready models and a
single shared time store rather than parsing source documents.
This initial phase establishes the toolchain and module boundaries only. MF-JSON parsing, visualization adapters, and timeline behavior will be added in later focused tasks.
Place this directory at moving-features-visualizer/docker/.
The Vite/React project stays in the repository root.
Expected repository layout:
moving-features-visualizer/
├── src/
├── public/
├── package.json
├── package-lock.json
├── vite.config.ts
└── docker/
├── Dockerfile
├── Dockerfile.dockerignore
├── docker-compose.yml
├── nginx.conf
└── README.md
The workshop assumes these images have already been pulled:
docker pull ghcr.io/taehoonk/pygeoapi-mf-api:latest
docker pull ghcr.io/taehoonk/pygeoapi-mf-api-mobilitydb:latestThe Compose setup uses the mf-api.config.yml already included inside the
MF-API image, copying it to /pygeoapi/local.config.yml before startup.
docker compose -f docker/docker-compose.yml up --build -dOr from inside the docker directory:
cd docker
docker compose up --build -dOpen:
- Visualizer: http://localhost:9000
- MF API: http://localhost:5050
- MF API collections: http://localhost:5050/collections
- MobilityDB host port: 25432
From the repository root:
docker compose -f docker/docker-compose.yml psdocker compose -f docker/docker-compose.yml logs -fFor only the API:
docker compose -f docker/docker-compose.yml logs -f mf-apidocker compose -f docker/docker-compose.yml downThis removes the workshop MobilityDB volume. The database initialization bundled with the MobilityDB image runs again on the next start.
docker compose -f docker/docker-compose.yml down -v
docker compose -f docker/docker-compose.yml up --build -dDefaults are Visualizer 9000, MF API 5050, and MobilityDB 25432.
They can be overridden without editing the YAML:
VISUALIZER_PORT=9100 MF_API_PORT=5150 docker compose -f docker/docker-compose.yml up --build -dFor the workshop, keep the defaults unless a participant already uses one of these ports.