Gostaria do seguinte para selecionar (destacar) a camada "projeto" que cruza a grade e, em seguida, puxar um registro da "Grade" selecionada. Não preciso salvar a camada.
Nota: Executando o script no ArcMap na janela do Python Console.
import arcpy
# Make a layer from the feature class
arcpy.MakeFeatureLayer_management("project","project_lyr")
# Then add a selection to the layer based on location to features in another feature class
arcpy.SelectLayerByLocation_management("project_lyr","INTERSECT","Grid")
Esse código é executado e nenhum erro é fornecido, mas não seleciona (destaca) nenhum recurso. Alguma idéia do porquê? Também corre muito lento.
Basicamente, estou tentando fazer isso:
Isso roda muito rápido quase instantaneamente, mas eu quero fazer o mesmo usando python. Eu só preciso de um valor da tabela do recurso selecionado, não preciso de uma cópia da camada.
Parte da solução pode ser usar o espaço de trabalho na memória que é
Gravar dados no espaço de trabalho na memória geralmente é significativamente mais rápido do que gravar em outros formatos ...
Só não sei como implementar o espaço de trabalho na memória
fonte
import arcpy
comando demora um pouco para ser executado.arcpy.MakeFeatureLayer()
linha, poisproject
já é uma camada. Apenas façaarcpy.SelectLayerByLocation_management("project","INTERSECT","Grid")
.Respostas:
Boa pergunta!
Dmahr está certo, é mais rápido simplesmente selecionar a camada em vez de criar uma camada de recurso. Eu também adicionaria o restante das variáveis, mesmo que sejam opcionais.
Outra coisa que acho, é que executar coisas na janela python do ArcMap é sempre mais lento. Acho que se você escrever o código em um arquivo .py, adicioná-lo como um script à caixa de ferramentas e executá-lo, o processamento será mais rápido.
fonte