Submitting an ODM job
A MappingJob is the unit of work for ARGUS photogrammetry. One job = one image set →
one processing run → one bundle of artifacts. Jobs are scoped to an operationId and
flow through the ODM worker stages on the backend.
Creating a job
From the org Mapping feature (/en/mapping/) or the operation’s
mapping tile:
- Click New mapping job.
- Set the name (required).
- Pick Outputs (
MappingOutputType, multi-select):orthomosaic— 2D ortho (GeoTIFF / COG).3d_model— textured 3D mesh (OBJ + glTF).point_cloud— LAS / LAZ.dem/dsm— elevation / surface.ndvi— vegetation index (requires NIR band).thermal_map— thermal mosaic.
- Pick Quality (
MappingQuality):preview— fast low-res validation.low— quick, reduced detail.medium— default.high— high detail, longer runtime.ultra— maximum detail.
- Optionally set CRS — presets
EPSG:4326(WGS 84),EPSG:3857(Web Mercator),EPSG:3395(World Mercator), or leave blank to let ODM auto-detect. - Click Create job. Status becomes
pending.
The tile also offers Clone job on any existing job to prefill the form with the same outputs / quality / CRS — handy for re-running after tweaks.
Uploading source images
With the job selected, drag photos onto the drop zone or use the file picker. Accepted: JPG / JPEG / PNG / TIF / TIFF / DNG.
Upload behaviour:
- Files upload one-at-a-time with per-file byte-level progress.
- The overall bar is a smoothed blend: completed files contribute 1 each, the in-flight file contributes its byte-level fraction (avoids the staircase effect on large images).
- Status sits at
uploadinguntil every file lands. A failure surfaces onMappingJob.error; fix and re-upload.
When images are in place, click Start processing. Status flips to queued.
Auto-creation from a mapping mission
A DroneMission with pattern: 'mapping' and autoProcessOnCompletion: true
(default) spawns a job on the backend as soon as the mission reaches dji_completed.
The mission’s captured media is wired up as the job source — no manual upload step.
Disable the flag on the planner if you want to curate the image set first.
Processing stages
The worker walks the ODM pipeline. MappingJob.steps[] streams per-stage timestamps
and progress:
| Stage | What’s happening |
|---|---|
queued | Waiting for an ODM worker slot. |
initialising | Downloading images from S3 into the worker. |
matching | SIFT / feature matching between overlapping photos. |
sfm | Structure-from-motion — camera poses + sparse cloud. |
dense | Dense point-cloud reconstruction. |
meshing | Mesh from the dense cloud. |
texturing | Texture baking onto the mesh. |
tiling | 3D Tiles / COG generation for in-app preview. |
completed | Outputs ready; artifacts[] populated. |
failed | Terminal; error carries the last-log excerpt. |
cancelled | User-cancelled; partial outputs discarded. |
Overall progress (0-100) is updated in sync with step progress.
Outputs
Once completed:
- Artifact list — each
MappingArtifactcarriestype,format,sizeBytes,bounds([west, south, east, north]),thumbnailUrl, and — for 3D — atilesetUrl. - Download — the UI calls
getArtifactDownloadUrl(jobId, type)which returns a presigned S3 URL. Fallback is the legacy baked-inartifact.url. - Preview — thumbnails inline; 3D tilesets load into the ops-map 3D view.
- Archive — an
archivepseudo-artifact bundles the full ODMall.zip.
Cancel / delete / re-run
- Cancel a running job — the worker is told to stop; status goes to
cancelled. - Delete — removes the job and its S3 artifacts.
- Re-run — use Clone job to produce a new job from the same settings. ODM runs do not mutate in place.