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.

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.


7
Você também pode usar a função arcpy.CreateUniqueName .
12264 Alex Markov

Muito conveniente! Eu não sabia que isso existia.
Bluefoot
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.