En esta pregunta de gis.stackexchange.com se plantea cómo almacenar en una variable externa a la función los valores de id correspondientes a los rasgos (features) que han sido seleccionados y en el orden estricto de su selección. Este requerimiento se basa en el hecho de que si se seleccionan todos los rasgos en un orden determinado y se imprimen sus ids la lista de valores corresponde, contrariamente a lo esperado, al orden en que fueron digitalizados.
La utilidad de la función aquí desarrollada estriba en el hecho de que si se refiere a una red de transporte, por ejemplo, las polilíneas reflejaran el orden en que fueron seleccionadas para confeccionar una determinada ruta.El código completo con mi nomenclatura es el siguiente:
1 2 3 4 5 6 7 8 9 10 11 | def onSelectionChanged(): try: id = iface.activeLayer().selectedFeatures()[0].id() ids.append(id) print (id) except IndexError: print ("no feature selected") ids = [] iface.activeLayer().selectionChanged.connect( onSelectionChanged ) |
La forma en la cual fue ejecutado el código de arriba, visualizada en la imagen siguiente, fue pensada para ser transladada a un plugin.
Primero, se ejecutó el código en la Python Console con el botón Run. A continuación, se seleccionaron los rasgos con el orden 0, 6, 1 y 2. Para verificar el orden se imprimió la variable ids cuyos valores estaban en la secuencia esperada: [0, 6, 1, 2]. Para resetear la función es necesario ejecutar la herramienta "Deselect" de la "Attributes Toolbar". Para una nueva secuencia se inicializa la lista ids = [] y se vuelve a hacer la selección. En la imagen se observa que ésta nueva secuencia correspondió a [5, 4, 6, 3, 7].
No hay comentarios:
Publicar un comentario