É possível obter a camada retornada por uma ferramenta GRASS sem salvá-la no disco no QGIS?
Eu uso algumas ferramentas GRASS no console QGIS Python. Todas as ferramentas que eu uso retornar um dicionário com uma chave e um valor que contém string path, como este: {"output": "file/path"}
. Existe uma resposta aqui . Sugere usar essa corda em QgsVectorLayer
. Mas escrever / ler um arquivo de / para o disco consome muito tempo.
Eu tentei processing.runAndLoadResults
e processing.run
. Ambos adicionam uma camada. Mas antes de adicionar a camada, eles salvam a camada no disco e a adicionam.
processing.run("grass7:v.buffer", {..., 'output':'TEMPORARY_OUTPUT', ...})
# returns {'output': '/tmp/.../output.gpkg'} -> file path
processing.runAndLoadResults("grass7:v.buffer", , {..., 'output':'TEMPORARY_OUTPUT', ...})
# returns {'output': '/tmp/.../output.gpkg'} -> file path
Eu me pergunto, há uma maneira de obter a camada retornada / adicionada pela ferramenta GRASS sem salvar no disco (para usar na próxima ferramenta de processamento em um script Python)?
Respostas
Não acho que haja uma maneira de usar uma ferramenta GRASS no QGIS. Observei que as ferramentas GRASS que eu usava sempre retornavam o caminho do arquivo. A única maneira que consegui obter para obter a camada sem salvá-la foi usando as ferramentas de processamento nativas do QGIS via processing.run
método. Esta resposta explica como fazer.
Se você usar a camada de saída como camada intermediária, recomendo usar a ferramenta nativa equivalente (QGIS) (se existir) por meio da processing.run
qual retorna a QgsVectorLayer
instância sem salvá-la no disco. Caso contrário, sugiro que você execute uma ferramenta usando processing.run
e, em seguida, use QgsVectorLayer
para adicionar a saída à memória.