En ArcGIS Desktop, hay una herramienta llamada Crear capa a partir de características seleccionadas . Con esta herramienta, puedo convertir una selección en una capa en ArcMap.
Supongo que hay una "lista de características" que está incrustada en la capa en algún lugar que aísla qué características mostrar en el mapa.
Pensé que la "lista de características" se habría almacenado en una where
cláusula en una consulta de definición como una lista de objectids
. Por ejemplo: where objectid in(123,456,789,...)
. Sin embargo, éste no es el caso.
Si la capa no tiene una consulta de WHERE
cláusula o definición, ¿cómo se almacena la lista de características?
Respuestas:
Crear capa a partir de características seleccionadas NO crea una capa DINÁMICA . La capa resultante no es dinámica en absoluto. Se basa en un FIDset.
Si cambia los datos de origen, los FID cambiarán y su capa de selección se romperá.
No hay cláusula where en una capa de selección. Se basa en FIDset (los FID que se seleccionaron cuando usó 'Crear capa a partir de entidades seleccionadas').
Tenga en cuenta que si agrega o elimina registros de los datos de origen, los FID cambiarán y su capa de selección mostrará registros incorrectos.
Está confundiendo la capa de selección con una capa de consulta, que almacena una cláusula where y es dinámica.
EDITAR: la lista de características para una capa de selección se almacena en la memoria. Es una mala práctica usar capas de selección que no sean para el trabajo temporal, ya que no hay forma de recuperar la selección original una vez que se rompe la capa de selección.
Para encontrar la lista de características en una capa de selección, puede usar muchos métodos diferentes, incluido SearchCursor, para crear una lista de ID.
Algo como esto:
Del comentario de crmackey :
También hay una forma incorporada con describe para obtener el FIDSet. Esta es una cadena, pero es fácil de convertir en una lista:
fuente
FIDSet
. Esta es una cadena, pero es fácil de convertir en una lista:OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
De la mejor manera que he entendido, ¿cómo
Create Layer from Selected Features
es esta referencia que encontré? Crear una capa temporal para seleccionar entidadesEl mecanismo que puede leer ese espacio en disco sería cómo acceder al "conjunto de resultados"
Además, como se mencionó anteriormente y Esri lo cubre Trabajando con funciones seleccionadas ,
Además, aquí hay más discusión como lectura general, Uso del espacio de trabajo en memoria , relacionado con el
in_memory
espacio de trabajo. Esto es solo para obtener información adicional si estaba interesado.fuente
Supongo que la capa de
Create Layer From Selected Features
no se basa en unaWHERE
cláusula o una condición lógica, porque el conjunto de selección se puede crear sin involucrar lógica.Por ejemplo, puede agregar / eliminar manualmente cualquier función del conjunto de selección utilizando el menú principal, por ejemplo, arrastrando un cuadro, que puede ser de uno de los anteriores Seleccionar por atributos / ubicación.
Supongo que el conjunto de selección (
IFeatureSelection
) es solo un amplio conjunto de resultados (que contiene copias de los ID de la capa original), en lugar de las reglas que definen el conjunto de resultados. De ahí la advertencia en la documentación vinculada de que los ID pueden volverse inválidos si los ID de la capa original cambian.fuente