DEM generation on singularity (docker) run


#1

Hi. Firstly I’ll admit I’m new to all of this - I’m trying to run OpenDroneMap using the docker image, however through Singularity (that is the only container support available) and it seems to work fine, in that there are no obvious errors. However, on my own dataset it doesn’t create DEM. I thought then I’d try this with the Bellus dataset, and again, all seems to go through smoothly, but it still reports “DEM will not be generated”.

Should the Bellus sample create a DEM? If not, is there one that does that I can test. Should the docker image create a DEM ‘out of the box’ or is there some configuration that is required?

Has anyone tried running this through Singularity? For reference, I’m basically running singularity run -B docker://opendronemap/opendronemap

Sorry if I’ve missed something in the doc/on this forum already, I have looked!

Many thanks,

Chris


#2

One step forward - it seems Singularity doesn’t treat bind mounting the same as Docker, so while the directories worked the single file didn’t, so ODM wasn’t picking up my yaml file asking for DEM. No worries, I’ve now passed --dsm to the run command, and it works…for a bit:

INFO] Classify: False
[INFO] Create DSM: True
[INFO] Create DTM: False
[INFO] DEM input file /code/odm_georeferencing/odm_georeferenced_model.laz found: True
[INFO] Creating …/…/…/…/code/odm_dem/dsm_r0.1 [idw] from 1 files
[DEBUG] running pdal pipeline -i /tmp/tmp0ygIf1.json > /dev/null 2>&1
Traceback (most recent call last):
File “/code/run.py”, line 47, in
plasm.execute(niter=1)
File “/code/scripts/odm_dem.py”, line 108, in process
verbose=args.verbose
File “/code/opendm/dem/commands.py”, line 32, in create_dems
radius=rad, outdir=outdir, suffix=suffix, resolution=resolution, **kwargs))
File “/code/opendm/dem/commands.py”, line 82, in create_dem
pdal.run_pipeline(json, verbose=verbose)
File “/code/opendm/dem/pdal.py”, line 222, in run_pipeline
out = system.run(’ ‘.join(cmd) + ’ > /dev/null 2>&1’)
File “/code/opendm/system.py”, line 34, in run
raise Exception(“Child returned {}”.format(retcode))
Exception: Child returned 1

(this output is from odm_data_aukerman-master)


#3

Final update - all is working. It was just a case of also binding the open_dem directory - I’m not sure if this is expected anyway under a Docker workflow, but is definitely needed for Singularity. The take home from this though is the ODM Docker container runs pretty nicely in Singularity!

Thanks!


#4

Yes, with docker you wound need to bind your dem directory as well. Glad you got there, and thanks for the update!