Herramienta Crear capa a partir de características seleccionadas: ¿Cómo se almacena la lista de características?

12

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 whereclá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 WHEREcláusula o definición, ¿cómo se almacena la lista de características?

Wilson
fuente
2
Hay una gran diferencia entre el elemento del menú y la herramienta de geoprocesamiento. Lo que estás hablando es anterior. Puede usar los datos almacenados en fidset para crear sus capas.
FelixIP
2
Estoy bastante seguro de que no hay una cláusula WHERE almacenada cuando crea una Capa de selección y que una vez que se crea, NO puede encontrar la selección original utilizada para crearla. Espero haber demostrado que estoy equivocado en la forma de una respuesta porque estaba lidiando con una capa de selección muy antigua recientemente y descubrir la selección original de características utilizadas para crearla hubiera sido útil.
Dan C
1
Fidset es propiedad de la capa. Es ; cadena separada para almacenar los FID de selección.
FelixIP
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á. Esto no es nada como una capa de consulta, que almacena una cláusula
where

Respuestas:

14

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:

OIDlist = []
with arcpy.da.SearchCursor(layer, 'OBJECTID') as scur:
    for row in scur:
        OIDlist.append(row[0])

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:

OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
jbalk
fuente
1
También hay una forma integrada con describe para obtener el FIDSet. Esta es una cadena, pero es fácil de convertir en una lista: OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
crmackey
11

De la mejor manera que he entendido, ¿cómo Create Layer from Selected Featureses esta referencia que encontré? Crear una capa temporal para seleccionar entidades

Crear una capa temporal le permite hacer cosas, como hacer selecciones, sin afectar la fuente de datos original. Esta capa no aparecerá en el contenido de ArcCatalog, porque se crea en la memoria y simplemente hace referencia a los datos almacenados en el disco. Estas capas se pueden usar como entradas para otras herramientas de geoprocesamiento dentro de su sesión de trabajo. Una vez que salga de la aplicación, se eliminarán las capas en memoria.

La herramienta Crear capa de entidades se encuentra en el conjunto de herramientas Capas y vistas de tabla, dentro de la caja de herramientas Herramientas de administración de datos. Haga clic con el botón derecho en la herramienta Crear capa de entidades y haga clic en Abrir, o haga doble clic para abrir la herramienta.

El 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 ,

En este ejemplo, la capa que se crea a partir de entidades seleccionadas solo es útil como un conjunto de datos de trabajo temporal (por ejemplo, para usar como entrada en un modelo de geoprocesamiento). La nueva capa hace una lista de los FeatureID (FID) u ObjectID (OID) de las características seleccionadas y se invalidará cuando la fuente de datos original se actualice o cambie .

Además, aquí hay más discusión como lectura general, Uso del espacio de trabajo en memoria , relacionado con el in_memoryespacio de trabajo. Esto es solo para obtener información adicional si estaba interesado.

whyzar
fuente
2

Supongo que la capa de Create Layer From Selected Featuresno se basa en una WHEREclá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.

tinlyx
fuente