Usando Docker em um servidor Linux
Linha de comando via PuTTy
Quando executo o ODM em uma mĂĄquina local, ele funciona bem com e sem divisĂŁo do conjunto de dados, usando
docker run -it --rm -v G: / test: / datasets / cĂłdigo opendronemap / odm --project-path / datasets
ou
docker run -it --rm -v G: / test: / datasets / cĂłdigo opendronemap / odm --project-path / datasets --split 10 --split-overlap 3
Contanto que eu tenha os dados em uma pasta local (disco rĂgido ou disco externo USB), ele faz tudo conforme o esperado
Mas quando eu o executo no servidor, ele funciona apenas sem o comando split:
docker run -it --rm -v / my-server / Pasta do projeto: / datasets / code opendronemap / odm --project-path / datasets
Funciona bem, mas assim que eu adicionar
--split 10 --split-overlap 3
ao cĂłdigo, recebo o seguinte erro:
[INFO] executando / code / SuperBuild / src / opensfm / bin / opensfm create_submodels> / var / www / data / 44a86e01-7ff1-4848-a6b6-711097026c96 / opensfm
Traceback (Ășltima chamada mais recente):
Arquivo â/ code / SuperBuild / src / opensfm / bin / opensfmâ, linha 34, em
command.run (args)
Arquivo â/code/SuperBuild/src/opensfm/opensfm/commands/create_submodels.pyâ, linha 37, em execução
meta_data.load_clusters_with_neighs ())
Arquivo â/code/SuperBuild/src/opensfm/opensfm/large/metadataset.pyâ, linha 154, em> create_submodels
os.symlink (src_relpath, dst)
OSError: [Errno 95] Operação não suportada
Traceback (Ășltima chamada mais recente):
Arquivo â/code/run.pyâ, linha 56, em
app.execute ()
Arquivo â/code/stages/odm_app.pyâ, linha 93, em execução
self.first_stage.run ()
Arquivo â/code/opendm/types.pyâ, linha 376, em execução
self.next_stage.run (saĂdas)
Arquivo â/code/opendm/types.pyâ, linha 357, em execução
self.process (self.args, outputs)
Arquivo â/code/stages/splitmerge.pyâ, linha 65, em processo
octx.run (âcreate_submodelsâ)
Arquivo â/code/opendm/osfm.pyâ, linha 21, em execução
(context.opensfm_path, command, self.opensfm_project_path))
Arquivo â/code/opendm/system.pyâ, linha 76, em execução
levantar exceção ("Criança retornou {}". formato (retcode))
Exceção: Criança devolveu 1
Parece que o opensfm tem problemas para ler / gravar a pasta de submodelos. Fui adicionado ao grupo de usuĂĄrios do docker, mas nĂŁo tenho direitos sudo quando executo o comando.
O comportamento esperado Ă© que o ODM crie as pastas do submodelo e processe o conjunto de dados em blocos, para que eu possa extrair a ortofoto e o DSM de cada submodelo para trabalhar com arquivos tif menores posteriormente
Execute o ODM com --split em um disco do servidor
Tenho conversado com o administrador do servidor e acho que encontramos o problema:
Symlinks tem problemas ao executar em um sistema de arquivos cifs, o que requer a adição do sinalizador mfsymlink ao comando de montagem, e é por isso que eu estava recebendo o erro. Depois de adicionar o sinalizador mfsymlink, o processo funciona bem. Estou executando um conjunto de dados maior agora para ter certeza, mas parece que agora estå corrigido.
Sim, isso faz todo o sentido. O uso pesado de links simbĂłlicos Ă© uma pegadinha definitiva para o sistema de arquivos.
Piero - vocĂȘ ainda considera isso um bug ou devemos solicitar que o x-ancin adicione algo aos documentos, se possĂvel?
NĂŁo acho que seja um bug, mas um problema do sistema de arquivos. Fechando.