Docker auf einem Linux-Server verwenden
Kommandozeile über PuTTy
Wenn ich ODM auf einem lokalen Computer ausführe, funktioniert es mit und ohne Aufteilen des Datasets mit
docker run -it --rm -v G:/test:/datasets/code opendronemap/odm --project-path /datasets
oder
docker run -it --rm -v G:/test:/datasets/code opendronemap/odm --project-path /datasets --split 10 --split-overlap 3
Solange ich die Daten in einem lokalen Ordner habe (entweder Festplatte oder externe USB-Festplatte), funktioniert alles wie erwartet
Aber wenn ich es auf dem Server ausführe, funktioniert es nur ohne den Split-Befehl:
docker run -it --rm -v /my-server/Project folder:/datasets/code opendronemap/odm --project-path /datasets
Funktioniert gut, aber sobald ich hinzufüge
--split 10 --split-overlap 3
zum Code erhalte ich folgende Fehlermeldung:
[INFO] Ausführen von /code/SuperBuild/src/opensfm/bin/opensfm create_submodels >/var/www/data/44a86e01-7ff1-4848-a6b6-711097026c96/opensfm
Traceback (letzter Anruf zuletzt):
Datei „/code/SuperBuild/src/opensfm/bin/opensfm“, Zeile 34, in
command.run(args)
Datei „/code/SuperBuild/src/opensfm/opensfm/commands/create_submodels.py“, Zeile 37, in run
meta_data.load_clusters_with_neighbors())
Datei „/code/SuperBuild/src/opensfm/opensfm/large/metadataset.py“, Zeile 154, in >create_submodels
os.symlink(src_relpath, dst)
OSError: [Errno 95] Vorgang nicht unterstützt
Traceback (letzter Anruf zuletzt):
Datei „/code/run.py“, Zeile 56, in
app.execute()
Datei „/code/stages/odm_app.py“, Zeile 93, in execute
self.first_stage.run()
Datei „/code/opendm/types.py“, Zeile 376, in Ausführung
self.next_stage.run(Ausgänge)
Datei „/code/opendm/types.py“, Zeile 357, in Ausführung
self.process(self.args, output)
Datei „/code/stages/splitmerge.py“, Zeile 65, in Bearbeitung
octx.run("create_submodels")
Datei „/code/opendm/osfm.py“, Zeile 21, in Ausführung
(context.opensfm_path, command, self.opensfm_project_path))
Datei „/code/opendm/system.py“, Zeile 76, in Ausführung
Raise Exception("Kind zurückgegeben {}".format(retcode))
Ausnahme: Kind zurückgegeben 1
Offenbar hat opensfm Probleme beim Lesen/Schreiben des Submodels-Ordners. Ich werde der Docker-Benutzergruppe hinzugefügt, habe aber keine Sudo-Rechte, wenn ich den Befehl ausführe.
Das erwartete Verhalten ist, dass ODM die Untermodellordner erstellt und den Datensatz in Blöcken verarbeitet, sodass ich dann das Orthofoto und das DSM jedes Untermodells extrahieren kann, um anschließend mit kleineren tif-Dateien zu arbeiten
Führen Sie ODM mit --split auf einer Serverfestplatte aus
Ich bin mit dem Serveradministrator hin und her gegangen und ich denke, wir haben das Problem gefunden:
Symlinks hat Probleme bei der Ausführung auf einem cifs-Dateisystem, das das Hinzufügen des mfsymlink-Flags zum Mount-Befehl erfordert, und deshalb wurde der Fehler angezeigt. Nach dem Hinzufügen des mfsymlink-Flags funktioniert der Vorgang einwandfrei. Ich betreibe jetzt ein größeres Dataset, um sicherzugehen, aber es scheint, als ob es jetzt behoben ist.
Ja, das macht absolut Sinn. Die starke Verwendung von Symlinks ist ein definitiver Fallstrick für das Dateisystem.
Piero – halten Sie das immer noch für einen Fehler, oder sollten wir bitten, dass x-ancin etwas zu den Dokumenten hinzufügt, wenn sie können?
Ich denke nicht, dass dies ein Fehler ist, sondern ein Problem mit dem Dateisystem. Schließen.