No ArcGIS Desktop, existe uma ferramenta chamada Create Layer from Selected Features . Usando esta ferramenta, posso converter uma seleção em uma camada no ArcMap.
Meu palpite é que haja uma "lista de recursos" incorporada à camada em algum lugar que isola os recursos a serem mostrados no mapa.
Eu teria pensado que a "lista de recursos" teria sido armazenada em uma where
cláusula em uma consulta de definição como uma lista de objectids
. Por exemplo: where objectid in(123,456,789,...)
. No entanto, este não é o caso.
Se a camada não possui uma WHERE
consulta de cláusula ou definição, como é armazenada a lista de recursos?
Respostas:
Criar camada a partir de recursos selecionados NÃO cria uma camada DINÂMICA . A camada resultante não é dinâmica. É baseado em um FIDset.
Se você alterar os dados de origem, os FIDs mudarão e sua camada de seleção será interrompida.
Não há cláusula where em uma camada de seleção. É baseado no FIDset (os FIDs que foram selecionados quando você usou 'Criar camada a partir dos recursos selecionados').
Observe que, se você adicionar ou remover registros dos dados de origem, os FIDs serão alterados e sua camada de seleção exibirá registros incorretos.
Você está confundindo a camada de seleção com uma camada de consulta, que armazena uma cláusula where e é dinâmica.
EDIT: A lista de recursos para uma camada de seleção é armazenada na memória. É uma prática ruim usar camadas de seleção que não sejam para trabalho temporário, pois não há como recuperar a seleção original depois que a camada de seleção é interrompida.
Para encontrar a lista de recursos em uma camada de seleção, você pode usar muitos métodos diferentes, incluindo o SearchCursor, para criar uma lista de IDs.
Algo assim:
Do comentário por crmackey :
Também existe uma maneira integrada de descrever para obter o FIDSet. Esta é uma sequência, mas é fácil de converter em uma lista:
fonte
FIDSet
. Esta é uma string, mas é fácil de converter em uma lista:OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
A melhor maneira de entender como
Create Layer from Selected Features
é essa referência que me deparei Crie uma camada temporária para selecionar recursosO mecanismo que pode ler esse espaço em disco seria como acessar o "conjunto de resultados"
Além disso, conforme mencionado anteriormente e a Esri o cobre Trabalhando com recursos selecionados ,
Além disso, aqui estão mais discussões como uma leitura geral, Usando o espaço de trabalho na memória , relacionado ao
in_memory
espaço de trabalho. Isso é destinado apenas a informações adicionais se você estiver interessado.fonte
Meu palpite é que, a camada de
Create Layer From Selected Features
não é baseada em umaWHERE
cláusula ou uma condição lógica, porque o conjunto de seleção pode ser criado sem envolver a lógica.Por exemplo, você pode adicionar / excluir manualmente todos os recursos do conjunto de seleção usando o menu principal arrastando uma caixa, que pode ser de um dos anteriores Selecionar por atributos / local.
Meu palpite é que o conjunto de seleção (
IFeatureSelection
) é apenas um conjunto extenso de resultados (contendo cópias dos IDs da camada original), em vez das regras que definem o conjunto de resultados. Daí o aviso na documentação vinculada de que os IDs podem se tornar inválidos se os IDs da camada original forem alterados.fonte