Drop a flight log onto 3D Map Explorer and watch the trajectory animate across the terrain against a scrubable timeline. The dispatcher sniffs the file - ArduPilot .tlog (MAVLink stream), .bin/.log (dataflash), or DJI DatCon .csv - routes to the right reader, and serves the time-animated track for post-flight analysis. The same log store feeds PPK and the fleet manager.
FlightLogReader sniffs the extension (and, for ambiguous cases, a few magic bytes) and routes to the format-specific reader. Every reader is non-throwing - an unparseable input returns null and the caller surfaces a clean error. Nothing crashes the host.
.tlog โ ArduPilotTlogReader - MAVLink stream with timestamps..bin / .log โ ArduPilotBinReader - binary + text dataflash variants..dat (DJI) โ DjiDatReader - honest stub; flagged as not-yet-implemented..csv โ DjiCsvReader - DatCon export, the practical DJI path.// upload log โ sniff โ parse โ store { "file": "flight-043.tlog" } โ routed to ArduPilotTlogReader GET /api/flightlog/logs/{id}/track { "points": [[34.05,-118.25,120,1690000000]], "startUtc": "2026-07-31T14:00Z" } โ time-animated on the map
Flight-log replay isn't a one-off viewer - it's the trajectory source two other UAS features build on. Load a log once; replay it, post-process it for centimeter accuracy, and credit its hours to the fleet registry.
Track served per-log; scrub the timeline and watch position/attitude move across the terrain.
PpkService reads the recorded trajectory straight from the log store for post-processing.
Logged flights roll up into aircraft flight-hour totals and maintenance thresholds.
Unparseable logs return null + a clean error - never crash the in-process server.
DJI .dat reader is stubbed and flagged - DatCon .csv is the supported DJI path today.
Ingest, list, fetch track, delete - full CRUD over REST.
| Capability | Endpoint | Notes |
|---|---|---|
| Ingest log | POST /api/flightlog/ingest | Sniffs extension/magic bytes โ routes to reader |
| List logs | GET /api/flightlog/logs | Stored flight logs |
| Log detail | GET /api/flightlog/logs/{id} | Metadata + summary |
| Time track | GET /api/flightlog/logs/{id}/track | Time-animated trajectory points |
| Delete | DELETE /api/flightlog/logs/{id} |
Format support reflects FlightLogReader / ArduPilotTlogReader / DjiCsvReader on the current build. DJI native .dat is an honest stub - use DatCon-exported .csv for DJI logs today.
Ingest .tlog / .bin / .csv, replay the trajectory against a timeline, and feed PPK and the fleet registry from one store.