uso simultâneo do espaço de trabalho in_memory no arcpy

8

Eu estou usando um script python que está eliminando pequenos polígonos de uma classe de recurso. esse script cria classes de recursos temporárias com nomes fixos (codificados) no espaço de trabalho "in_memory". exemplo:

arcpy.CopyFeatures_management("in_fc","in_memory/item_a")

é um script bastante reutilizável, então eu o uso em muitos pontos de uma cadeia de geoprocessamento.

estou em perigo de que o mesmo script chamado duas vezes de processos diferentes (ao mesmo tempo) tenha um conflito em, por exemplo "in_memory / item_a"? ou os espaços de trabalho "in_memory" são separados para cada processo?

Eu estou usando o ArcInfo 10.0.

Ben o urso
fonte

Respostas:

8

Para testar sua pergunta, escrevi um script rápido do qual executei duas cópias simultaneamente - uma como ferramenta de script no ArcMap e outra no Pythonwin. Para minha surpresa, não consegui executá-los ao mesmo tempo porque o espaço de trabalho "in_memory" foi compartilhado. Existe uma maneira de contornar isso, no entanto. Você pode adicionar uma verificação de saída para determinar se o arquivo na memória existe e nomear outra coisa, se houver:

i=0
check = 0
while check == 0:
    memoryFeat = "in_memory" + "\\" + "testMemoryFeature" + str(i)
    if arcpy.Exists(memoryFeat):
        i+=1
    else:
        check = 1

Isso tentará nomear seu recurso de memória testMemoryFeature0. Se esse recurso de memória já existir, ele tentará chamá-lo de testMemoryFeature1, e assim por diante, até encontrar um nome que seja suficiente.

pé azul
fonte
7
Você também pode usar a função arcpy.CreateUniqueName .
12264 Alex Markov
Muito conveniente! Eu não sabia que isso existia.
Bluefoot