Computing source raster statistics Hung?

Dear WebODM community,

wondering if anyone can help me.

Currently, I believe my WebODM task is stuck. I flew a drone mission (DJI mavic pro) over a relatively flat terrain (estuary). 75% front and 70 side overlap at 60m above the ground. It was a large mission and I collected 755 images over 25ha. I had to separate the images into 2 smaller models as my computer does not have sufficient resources (I7 4 cores/8 threads and 16GB RAM) to process all at once (even if I use the split flag). The first submodel finished fine (after 6hours 30min) and everything is great. However, the second submodel (376 images) seems to be stuck.

The task runs through all the stages and eventually it prints:
“[INFO] Finished odm_orthophoto stage”
“[INFO] No more stages to run”
“Drone logo”

But then it starts to build raster statistics.
“Computing source raster statistics…”

After generating Base and Overview Tiles, it tries to add the georeferenced_model.laz file, and this is where I believe it is stuck. This is the last line of the log.
“14:00 - 97% - 60,387,328 - 258(0)M/h - 0W - 0R - 533A”

The overall process has taken 11 hours (still going) and the log file has not changed over the last 3-4 hours. In Task manager I see that the Hard drive Disk where Docker is installed is at 100% use (Reading), but the Vmmem Task only using about 3.5% CPU.

Am I being impatient? Should I just leave it? I have encountered this before in the past and gave up and just did not produce any data products for those missions.

I actually only want the DSM and orthophoto.tiff. Is there a way for me to enter the docker files extract/copy these?

Options: min-num-features: 10000, orthophoto-resolution: 2, dem-resolution: 2, ignore-gsd: true, dsm: true

I am using Chrome browser, Windows 10 Pro, WebODM in Docker.

Docker set up with 4 CPUs, 9984MB memory (cant go higher), 1536MB Swap, and 112GB max disk size (92.62GB used).

Regards,

Jurie

I’m not sure whether it’s stuck or not, but you can absolutely get to the docker instance and copy the data off. docker cp is the command you’ll use. I recommend the following:

Get a list of docker machines:
docker ps

(if the machine is no longer running, you can use the -a flag as docker ps -a)

It should look something like this:

CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                                         NAMES
4b0659fe6761        opendronemap/webodm_webapp   "/bin/bash -c 'chmod…"   38 hours ago        Up 38 hours         0.0.0.0:443->8000/tcp, 0.0.0.0:80->8080/tcp   webapp
0e26ebf918f2        opendronemap/webodm_webapp   "/bin/bash -c '/webo…"   38 hours ago        Up 38 hours                                                       worker
1954c5136d44        redis                        "docker-entrypoint.s…"   38 hours ago        Up 38 hours         6379/tcp                                      broker
bdc69502ca50        opendronemap/webodm_db       "docker-entrypoint.s…"   38 hours ago        Up 38 hours         0.0.0.0:32769->5432/tcp                       db
81f401a0e138        opendronemap/nodeodm         "/usr/bin/nodejs /va…"   38 hours ago        Up 38 hours         0.0.0.0:3000->3000/tcp                        webodm_node-odm_1

The NodeODM instance is the one that you want to connect to using docker exec using either the hash (the CONTAINER ID) or the NAME

docker exec -it webodm_node-odm_1 bash
[email protected]:/var/www#

From here, you can see into the data directory and see the task name (also visible in your WebODM interface), e.g.

ls /var/www/data/99002823-c48b-4af5-af1b-c0fef2ed8b56/
all.zip                images.json            odm_meshing/
cameras.json           img_list.txt           odm_orthophoto/
dsm_tiles/             mve/                   odm_texturing/
dtm_tiles/             odm_25dgeoreferencing/ odm_texturing_25d/
entwine_pointcloud/    odm_dem/               opensfm/
gcp/                   odm_filterpoints/      orthophoto_tiles/
images/                odm_georeferencing/

This tells us the structure we need for copying the data using docker cp, after exiting the docker machine:

exit
docker cp webodm_node-odm_1:/var/www/data/99002823-c48b-4af5-af1b-c0fef2ed8b56/odm_orthophoto/odm_orthophoto.tif .
docker cp webodm_node-odm_1:/var/www/data/99002823-c48b-4af5-af1b-c0fef2ed8b56/odm_dem/dtm.tif .

I hope this helps! If it works for you, maybe you could contribute a how-to at https://github.com/OpenDroneMap/docs/blob/publish/source/tutorials.rst

2 Likes

Thanks Stephen,
this is exactly what I needed. Worked great. I just had to specify the directory where I wanted to safe the output.
docker cp webodm_node-odm_1:/var/www/data/757a71fc-3e36-4d8e-a801-c93feb01cfdf/ C:/Users/KJTheron/Downloads/TEST/
Regards,
Jurie

1 Like

Ah yes. Perhaps unseen was a small dot . at the end of those commands to place the file in the current directory, but it’s often better practice to specify something more specific.

I am glad that helped!