The processing leg of the UAS loop. 3D Map Explorer drives photogrammetry two ways: a local OpenDroneMap CLI sidecar that turns a folder of photos into an orthomosaic + DSM entirely on your workstation, and a WebODM / NodeODM cloud import that pulls finished products from a remote processing node. Air-gapped SfM when you need it, elastic cloud when you don't.
OdmCliHost spawns the standalone OpenDroneMap CLI — the open-source photogrammetry toolchain behind WebODM/NodeODM — as a pure subprocess. No HTTP sidecar, no Docker requirement on the desktop. ODM is not bundled: install it, put it on PATH or set Ortho:OdmPath, or drop the tree into runtimes/win-x64/odm/. The health probe uses odm --version (ODM, unlike some tools, answers it).
--version so the UI can flag a missing/stale install.# photos in → orthomosaic + DSM out $ odm --project-dir ./sortie-12 \ --orthophoto-resolution 5 \ --dsm → odm_orthophoto.tif → dsm.tif → loaded as raster layer, served as tiles
When the workstation isn't the right place to grind a 2,000-photo sortie, process on a WebODM / NodeODM node and import the results. WebOdmService manages connection profiles (credentials stored, never echoed in list responses), browses projects and tasks, and imports assets back into the platform.
Named profiles — base URL, username, password (secrets held, not listed).
POST /profiles/{id}/test → reachability + project count.
List projects + tasks per profile; pull thumbnails to preview.
POST /import — bring the orthomosaic/DSM into the platform's raster pipeline.
Profile list omits passwords; insecure-skip-verify available for self-signed nodes.
Per-task thumbnail fetch for quick visual QA before importing.
| Capability | Endpoint | Notes |
|---|---|---|
| Capability discovery | GET /api/webodm/capabilities | { available, configured, reason } |
| Profiles CRUD | GET · POST · DELETE /api/webodm/profiles[/{id}] | Connection profiles |
| Test profile | POST /api/webodm/profiles/{id}/test | Probe → ok + projectCount |
| List projects | GET /api/webodm/profiles/{id}/projects | |
| List tasks | GET …/projects/{pid}/tasks | Per-project task list |
| Task thumbnail | GET …/tasks/{tid}/thumbnail | Preview image |
| Import assets | POST /api/webodm/import | Pull orthomosaic/DSM into the platform |
Local processing reflects OdmCliHost; cloud import reflects WebOdmRoutes / WebOdmService. OpenDroneMap is not bundled — install separately from opendronemap.org. Output quality depends on photo overlap, GPS accuracy (pair with RTK/PPK), and ODM version.
Local ODM CLI sidecar for air-gapped SfM, or WebODM cloud import for elastic scale. Either way the orthomosaic lands in the platform's raster pipeline.