Closed mbandy closed 7 years ago
Hi @mbandy, thanks for reporting the problem!
Is there a odm_orthophoto.tif
(not png) file in WebODM/app/media/project/[]/task/[]/assets/ ?
It's odd that node-odm keeps crashing, 150+ images are not a whole lot. Do you know what the cause of the crash is?
Hi!
There is indeed an odm_orthophoto.tif
in WebODM/app/media/project/[]/task/[]/assets/odm_orthophoto/
.
I have noticed though that there is usually a second .tif in that directory, for example odm_orthophoto_4326.tif
. I'm not sure where that one comes from, but I'm pretty sure ODM does not generate it. It's missing from the problem task I am reporting.
I'm not sure what the cause of the crash is. It always crashes during the opensfm step, usually with datasets approaching 250 photos. It is probably the well-known opensfm out of memory error. So I think it's an ODM problem, not a problem with node-ODM. However, WebODM does not recover gracefully when node-ODM is restarted and reruns the ODM process.
If you are using docker, you should try to increase the memory allocated to the docker machine.
As far as the orthophoto is concerned, the case you are describing should have never happened (in theory). If assets have been downloaded (in /assets/odm_orthophoto) it means that odm_orthophoto_4326.tif
should have been generated also.
orthophoto_path = os.path.realpath(self.assets_path("odm_orthophoto", "odm_orthophoto.tif"))
if os.path.exists(orthophoto_path):
orthophoto = GDALRaster(orthophoto_path, write=True)
# We need to transform to 4326 before we can store it
# as an offdb raster field
orthophoto_4326_path = os.path.realpath(self.assets_path("odm_orthophoto", "odm_orthophoto_4326.tif"))
self.orthophoto = orthophoto.transform(4326, 'GTiff', orthophoto_4326_path)
logger.info("Imported orthophoto {} for {}".format(orthophoto_4326_path, self))
I can't explain why everything was extracted from the all.zip archive, but the orthophoto was not set in the database. It should have, or it should have thrown an error.
When you manually modified the status to be completed, was it because WebODM errored out, or kept displaying error messages and never finished the task?
Is the output odm_orthophoto.tif
a valid GeoTIFF (can you import it in a software such as QGIS)?
It would help tremendously to have a copy of the WebODM console log in this case, to further narrow down the problem.
I should apologize and explain. Much of this is my own fault, and I'm not sure there is a bug at all. More like a suggested improvement to WebODM's error handling. Here is what happened, as I probably should have reported it originally:
node-ODM/data/
to WebODM/app/media/project/[]/task/[]/assets/
. That worked except for the orthophoto. This is the situation I described in my original post.odm_orthophoto.tif
to -t_srs 4326
and generated odm_orthophoto_4326.tif
manually. I then entered the path to that file in the "Administration" tab. Everything now functions as expected.My apologies for generating confusion. I think the only bug here is in WebODM's failure to gracefully manage a node-ODM crash, but I don't have any real insight into how to fix it.
Ahh that makes more sense :)
I will leave this open because WebODM should have reattached to the node-odm process once the process came back online.
I can't seem to be able to reproduce this error. If I start a node-odm process via webodm, kill the node-odm process, then restart the node-odm process, webodm successfully picks up the task where it left off.
@mbandy if you can find a way to reproduce the sync problem, please report it here. I will close this issue for now.
Thanks, @pierotofy. I'll try to recreate the error and I'll report the results here if they are useful.
Hi!
It is fairly common when processing larger datasets (150+ images) for node-OpenDroneMap to crash and need to be restarted. When restarted, node-ODM picks up where it left off, but WebODM never reacquires the output stream. In these cases I have set the task status to "Completed" manually. When this is done, the 3D products are available through the web interface but the orthophoto is not and the following error is displayed:
The odm_orthophoto and orthophoto tiles directories are present in
WebODM/app/media/project/[]/task/[]
... but I can't figure out how to get the web interface to recognize and display them. Any suggestions?