ODM e ODX da riga di comando con Docker
In questa pagina
WebODM e OpenDroneMap Desktop sono interfacce; il lavoro lo fa il motore. Puoi saltare l'interfaccia e parlare direttamente con il motore dal terminale: è ciò che fanno chi automatizza elaborazioni ricorrenti, chi lavora su server senza desktop e chi vuole controllare ogni singola opzione. In questa guida usi Docker per lanciare ODX (il motore della linea WebODM) o ODM (il motore della linea OpenDroneMap) su una cartella di immagini.
Una precisazione necessaria. Dal 6 aprile 2026 esistono due motori con la stessa origine: ODX, mantenuto da UAV4GEO per WebODM e distribuito come immagine webodm/odm, e ODM 3.6.0, mantenuto dalla nonprofit OpenDroneMap Inc. e distribuito come opendronemap/odm. Alla data della separazione erano identici; da allora divergono. La sintassi è la stessa, cambia il nome dell'immagine. Per il quadro completo vedi Ecosistema WebODM e OpenDroneMap nel 2026; per capire come individuare le differenze reali tra i due motori vedi Opzioni a confronto.
Quando preferire la riga di comando all'interfaccia#
| Situazione | Meglio l'interfaccia (WebODM, OpenDroneMap Desktop) | Meglio la riga di comando |
|---|---|---|
| Uso occasionale, visualizzazione risultati | Sì | |
| Più persone, condivisione dei progetti | Sì | |
| Server senza desktop, accesso solo SSH | Sì | |
| Decine di progetti con le stesse opzioni | Sì | |
| Integrazione in script, cron, pipeline GIS | Sì | |
| Controllo puntuale su ogni opzione | Possibile | Immediato |
La riga di comando non produce mappe navigabili né viste 3D nel browser: ottieni i file, che poi apri in QGIS, CloudCompare o in un'interfaccia. Se ti servono l'interfaccia e l'automazione insieme, la strada è un nodo di elaborazione con la sua API: vedi NodeODX/NodeODM, ClusterODX/ClusterODM e nodi di elaborazione.
Struttura delle cartelle#
Il motore si aspetta una cartella di lavoro che contiene una sottocartella per ogni progetto, e dentro ciascuna una cartella images con le foto. Per un progetto chiamato progetto:
/home/utente/datasets/
└── progetto/
└── images/
├── DJI_0001.JPG
├── DJI_0002.JPG
└── ...
Le immagini vanno in /home/utente/datasets/progetto/images. Se hai un file di punti di controllo a terra (GCP), mettilo nella cartella del progetto: il formato è descritto nella guida Punti di controllo GCP. Gli output verranno scritti in sottocartelle di progetto/, accanto a images.
Procedura#
1. Scaricare l'immagine Docker#
Scarica l'immagine del motore. Il nome dell'immagine è l'unica cosa che cambia tra le due linee; il download è di alcuni GB e va fatto una sola volta.
Per ODX, il motore della linea WebODM, l'immagine è webodm/odm. Verifica il tag disponibile su Docker Hub e nella documentazione WebODM prima di usarla in produzione: la scheda di riferimento di questo sito non riporta un tag verificato.
docker pull webodm/odm
Per ODM, il motore della linea OpenDroneMap, l'immagine è opendronemap/odm (versione 3.6.0 alla data di verifica).
docker pull opendronemap/odm
2. Lanciare l'elaborazione#
Il comando monta la cartella dei dataset dentro il container (opzione -v) e indica il nome del progetto da elaborare. --project-path /datasets dice al motore dove cercare la cartella progetto. La sintassi è identica nelle due linee.
docker run -ti --rm -v /home/utente/datasets:/datasets webodm/odm --project-path /datasets progetto
Stessa sintassi del comando documentato per ODM; verifica il tag dell'immagine su Docker Hub e su docs.webodm.org.
docker run -ti --rm -v /home/utente/datasets:/datasets opendronemap/odm --project-path /datasets progetto
Comando documentato su docs.opendronemap.org/installation.
Sostituisci /home/utente/datasets con il tuo percorso reale e progetto con il nome della cartella. Il terminale mostra il log dell'elaborazione fase per fase: lettura delle immagini, estrazione feature, matching, ricostruzione, nuvola densa, mesh, texture, georeferenziazione, DEM, ortofoto, report. Con --rm il container si autodistrugge alla fine, ma i risultati restano nella cartella montata.

Negli esempi che seguono usiamo una variabile di shell per il nome dell'immagine, così i comandi sono copiabili per entrambe le linee. Imposta la variabile una volta sola nel terminale:
IMG=webodm/odm # linea WebODM / ODX
# oppure
IMG=opendronemap/odm # linea OpenDroneMap / ODM
3. Aggiungere opzioni#
Le opzioni si aggiungono in coda al comando, dopo il nome dell'immagine. Sono le stesse che le interfacce mostrano nel pannello Opzioni; i nomi e i default sono in docs.webodm.org/options-flags per ODX e in docs.opendronemap.org/arguments per ODM. Al 6 aprile 2026 gli elenchi erano identici; per scoprire le differenze introdotte da allora esegui --help su ciascuna immagine, come spiegato in Opzioni a confronto. Un esempio che produce anche DSM e DTM, con ortofoto a 2 cm/px e nuvola in formato LAS:
docker run -ti --rm -v /home/utente/datasets:/datasets $IMG --project-path /datasets progetto --dsm --dtm --orthophoto-resolution 2 --pc-las
Le opzioni che userai più spesso da riga di comando:
| Opzione | Effetto | Default |
|---|---|---|
--dsm, --dtm |
Genera i modelli di elevazione | disattivati |
--orthophoto-resolution, --dem-resolution |
Risoluzione in cm/px | 5 |
--feature-quality, --pc-quality |
Qualità di feature e nuvola densa | high, medium |
--fast-orthophoto |
Salta la nuvola densa, solo ortofoto rapida | disattivato |
--skip-3dmodel, --skip-orthophoto, --skip-report |
Salta fasi non necessarie | disattivati |
--gcp, --geo |
File GCP o posizioni camera esterne | nessuno |
--pc-las, --pc-copc, --cog, --gltf, --3d-tiles |
Formati aggiuntivi di output | disattivati |
--max-concurrency |
Processi paralleli | 4 |
--optimize-disk-space |
Elimina i file intermedi | disattivato |
--rerun-from, --end-with |
Riprende da una fase o si ferma a una fase |
Il riferimento completo, con consigli in italiano per ogni opzione, è nella Guida completa alle opzioni.
4. Trovare gli output#
Al termine, nella cartella progetto/ compaiono le sottocartelle dei risultati, ciascuna dedicata a un prodotto: ortofoto, modelli di elevazione (se richiesti), nuvola di punti georeferenziata, modello 3D con texture e report di qualità in PDF. I nomi esatti delle cartelle e dei file, con il dettaglio di ogni formato, sono nella pagina Outputs della documentazione OpenDroneMap per ODM e su docs.webodm.org per ODX: consultale prima di scrivere script che li leggono, perché alcuni file dipendono dalle opzioni scelte (per esempio dtm.tif esiste solo con --dtm) e perché i due motori potrebbero divergere nel tempo.
Le guide della sezione Output spiegano come usare ogni prodotto: Ortofoto, DSM, DTM e curve di livello, Nuvola di punti, Modello 3D.
Elaborare più progetti in batch#
Il vantaggio vero della riga di comando è la ripetibilità. Con una cartella per ogni progetto, un ciclo di shell li elabora uno dopo l'altro con le stesse opzioni. Questo esempio itera su tutte le sottocartelle di datasets e lancia il motore per ciascuna:
for p in /home/utente/datasets/*/; do
nome=$(basename "$p")
docker run -ti --rm -v /home/utente/datasets:/datasets $IMG --project-path /datasets "$nome" --dsm --dtm
done
Prima di lanciarlo su una notte intera, provalo su due progetti piccoli. Un batch su più progetti in parallelo raramente conviene: la RAM è il limite, e due elaborazioni contemporanee si contendono la stessa memoria. Meglio in sequenza.
Per riprendere un progetto interrotto senza ripartire da zero, --rerun-from accetta il nome della fase da cui ricominciare; --end-with ferma l'elaborazione a una fase precisa, utile per controllare la ricostruzione prima di investire ore nella nuvola densa. I nomi delle fasi sono nella documentazione delle opzioni.
Come verificare quale motore stai usando#
Con due immagini dalla sintassi identica è facile perdere traccia di quale motore ha prodotto un risultato. Prima di confrontare output o di scrivere una relazione tecnica, verifica il motore e la versione in tre modi.
- Chiedi la versione al motore. L'opzione
--versionè nell'elenco degli argomenti di entrambi i motori. Sostituisci il nome dell'immagine con quella che vuoi controllare:
docker run --rm webodm/odm --version
docker run --rm opendronemap/odm --version
Annota la stringa restituita: indica il nome del motore e la versione così come li dichiara l'immagine.
- Interroga l'immagine con Docker.
docker inspectmostra il repository da cui proviene l'immagine, il digest e la data di creazione, indipendentemente da come il motore si presenta:
docker inspect webodm/odm --format '{{.RepoTags}} {{.Created}}'
docker inspect opendronemap/odm --format '{{.RepoTags}} {{.Created}}'
- Confronta gli elenchi di opzioni.
docker run --rm webodm/odm --helpedocker run --rm opendronemap/odm --helpelencano le opzioni di ciascun motore: le differenze, se ci sono, sono la traccia più concreta della divergenza. Il metodo completo è in Opzioni a confronto.
Nelle relazioni tecniche e nelle richieste di aiuto riporta sempre immagine, tag e output di --version: le due community rispondono su motori diversi.
Installazione nativa (senza Docker)#
Docker è la strada consigliata, ma il motore si installa anche in modo nativo. La procedura è documentata dalla linea OpenDroneMap; per ODX la scheda di riferimento di questo sito non riporta una procedura nativa verificata.
Per ODX consulta docs.webodm.org: non riportiamo comandi non verificati. Se ti serve il motore fuori da Docker sulla linea WebODM, gli installer nativi di WebODM per Windows e macOS includono il nodo di elaborazione (Windows, macOS).
Per ODM: su Ubuntu 24.04 con bash configure.sh install dal repository clonato; su macOS con bash configure_macos.sh install (richiede Xcode e Homebrew); su Windows con l'installer delle release. Le istruzioni aggiornate sono su docs.opendronemap.org/installation.
La procedura nativa è più fragile agli aggiornamenti di sistema e la consigliamo solo a chi ha una ragione precisa.
Come verificare
Hai finito quando:
- Il log termina senza righe di errore e senza
Cannot process dataset. - Nella cartella del progetto compare la sottocartella dell'ortofoto con un file GeoTIFF apribile in QGIS.
- Il report PDF è presente e mostra tutte le immagini come ricostruite (vedi Leggere il report di qualità).
- Sai dire quale motore e quale versione hanno prodotto il risultato (
--version).
Problemi frequenti#
"Cannot process dataset" o poche feature. Il dataset ha problemi (sovrapposizione insufficiente, immagini sfocate, superfici uniformi). Controlla l'acquisizione con la guida Acquisire le immagini.
Il processo viene ucciso senza messaggio. Quasi sempre è la memoria: il sistema termina il container quando la RAM finisce. Riduci --pc-quality e --feature-quality, oppure ridimensiona le immagini, oppure usa una macchina più grande.
Permesso negato su Docker (Linux). Il tuo utente non è nel gruppo docker: sudo usermod -aG docker $USER, poi esci e rientra nella shell.
Il percorso con spazi non funziona. Racchiudi i percorsi tra virgolette e, su Windows/WSL2, usa i percorsi Linux (/mnt/c/...).
Il catalogo completo è nella guida Errori comuni.
Prossimi passi#
- Opzioni a confronto: come individuare con
--helple differenze reali tra ODX e ODM. - Guida completa alle opzioni: tutte le opzioni con default e consigli.
- Dataset grandi e split-merge: oltre 1.000 immagini con
--splite--split-overlap. - NodeODX/NodeODM, ClusterODX/ClusterODM e nodi di elaborazione: esporre il motore via API invece che da terminale.
Fonti
- WebODM — Documentazione ufficiale (docs.webodm.org)(link esterno)
- WebODM — Options and flags (docs.webodm.org)(link esterno)
- Repository WebODM/WebODM su GitHub(link esterno)
- OpenDroneMap — Installation (docs.opendronemap.org)(link esterno)
- OpenDroneMap — Arguments (docs.opendronemap.org)(link esterno)
- OpenDroneMap — Outputs (docs.opendronemap.org)(link esterno)
- Repository OpenDroneMap/ODM su GitHub(link esterno)
Guide correlate
Opzioni di ODM e ODX a confronto: come trovare le differenze
Confronto ODM/ODX · Avanzato · Entrambe le linee
Repository, immagini Docker e migrazioni tra le due linee
Confronto ODM/ODX · Avanzato · Entrambe le linee
WebODM e OpenDroneMap nel 2026: chi fa cosa dopo la separazione
Iniziare · Base · Entrambe le linee
Tutte le opzioni di WebODM e ODM: riferimento completo
Parametri avanzati · Avanzato · Entrambe le linee
NodeODX/NodeODM, ClusterODX/ClusterODM e nodi remoti
Installazione · Avanzato · Entrambe le linee
Requisiti hardware WebODM e OpenDroneMap: RAM, CPU, disco, GPU
Iniziare · Base · Entrambe le linee
Errori comuni di WebODM e OpenDroneMap: significato e rimedi
Risoluzione problemi · Intermedio · Entrambe le linee