¿Cómo puedo obtener un array de todos los nombres de capas visibles de forma automática utilizando expresiones de QGIS? En principio debería funcionar con la variable @map_layers
. El uso de la siguiente expresión funciona bien para lo que quiero hacer, pero sólo de forma semimanual:
array (
layer_property(
array_get (
@map_layers ,
0
),
'name'),
layer_property(
array_get (
@map_layers ,
1
),
'name'
)
)
Tengo que añadir manualmente un array_get (@map_layers, [index])
para cada capa. Me gustaría más bien iterar y obtener todas las capas visibles de forma automática, independientemente del número de capas visibles. En un primer paso, calculo el número de capas visibles: array_length (array_first (array ( @map_layers )))
(abreviado no_visible
en la siguiente expresión).
Donde estoy atascado es en la iteración para crear el nombre de la capa para cada capa visible. He probado la siguiente expresión, pero no devuelve ningún resultado: No feature was found on this layer to evaluate the expression
.
array_foreach (
generate_series(0,[no_visible]),
layer_property (
array_get (
@map_layers ,
@element
),
'name'
)
)
¿Qué estoy haciendo mal?
Actualización: La expresión en sí parece correcta, aunque la ofrecida por @lejedi76 es más elegante para conseguir el mismo objetivo. Sin embargo, el comportamiento de QGIS es bastante erróneo cuando se utiliza cualquiera de estas expresiones para seleccionar varias capas (raster) a la vez como entrada para una herramienta en modo batch - ver https://gis.stackexchange.com/a/385917/88814 para más detalles.