Crea livello dalle funzioni selezionate NON crea un livello DINAMICO . Il livello risultante non è affatto dinamico. Si basa su un FIDset.
Se modifichi i dati di origine, i FID cambieranno e il tuo livello di selezione si spezzerà.
Non esiste una clausola where in un livello di selezione. Si basa su FIDset (i FID che sono stati selezionati quando si utilizzava "Crea livello da funzioni selezionate").
Se si aggiungono o rimuovono record dai dati di origine, i FID cambieranno e il livello di selezione mostrerà record errati.
Stai confondendo il livello di selezione con un livello di query, che memorizza una clausola where ed è dinamico.
MODIFICA: l'elenco delle funzioni per un livello di selezione è memorizzato. È buona norma utilizzare livelli di selezione diversi da quelli per lavori temporanei in quanto non è possibile ripristinare la selezione originale una volta interrotto il livello di selezione.
Per trovare l'elenco di funzionalità in un livello di selezione, è possibile utilizzare molti metodi diversi tra cui SearchCursor per creare un elenco di ID.
Qualcosa come questo:
OIDlist = []
with arcpy.da.SearchCursor(layer, 'OBJECTID') as scur:
for row in scur:
OIDlist.append(row[0])
Dal commento di crmackey :
C'è anche un modo integrato con descrivi per ottenere il FIDSet. Questa è una stringa, ma è facile da convertire in un elenco:
OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))