[ES]Desarrollar un Plugin QGIS: Trabajar Únicamente con las Entidades Seleccionadas

En QGIS, muchas operaciones solo deben aplicarse a una parte de los datos: un conjunto específico de entidades seleccionadas por el usuario.

En este artículo veremos cómo un plugin QGIS puede detectar, comprobar y procesar únicamente las entidades seleccionadas, sin correr el riesgo de modificar toda la capa por error.

El objetivo es doble: hacer los tratamientos más seguros y respetar la intención del usuario, manteniendo un código sencillo y accesible para principiantes.



Modificar una capa QGIS puede parecer arriesgado, especialmente cuando se empieza a desarrollar plugins. La guía Modificar una capa QGIS sin ponerla en peligro explica de forma sencilla cómo utilizar el modo de edición, validar o cancelar cambios y actualizar capas y atributos de manera segura. Comprender estos conceptos te ayudará a proteger tus datos mientras desarrollas plugins realmente útiles.


¿Por qué trabajar únicamente con las entidades seleccionadas?

En QGIS, los usuarios rara vez seleccionan entidades por casualidad.

Una selección suele expresar una intención muy clara:

«Quiero trabajar con estas entidades y no con las demás.»

Un plugin que ignora la selección actual y procesa toda la capa:

  • puede producir errores importantes,
  • reduce la confianza del usuario,
  • se vuelve peligroso de utilizar.

Como regla general, un plugin bien diseñado debe respetar la selección activa.


Cómo gestiona QGIS las selecciones de entidades

En QGIS:

  • la selección pertenece a la capa,
  • es temporal y puede cambiar en cualquier momento,
  • es accesible directamente mediante la API PyQGIS.

En todo momento, una capa vectorial sabe:

  • cuántas entidades están seleccionadas,
  • qué entidades están seleccionadas.

Esto convierte a la selección en una forma sencilla y fiable de trabajar sobre un subconjunto de datos.


Recuperar la capa activa

En la mayoría de los plugins, el primer paso consiste en recuperar la capa activa.

layer = iface.activeLayer()

La primera regla de seguridad es muy simple:

if not layer:
return

Si no hay una capa activa, no debe ejecutarse ninguna acción.


Comprobar si existen entidades seleccionadas

Antes de iniciar cualquier procesamiento, el plugin debe comprobar que el usuario ha seleccionado algo.

selected_features = layer.selectedFeatures()

if not selected_features:
# no hay entidades seleccionadas
return

En este punto, el plugin ya sabe si debe:

  • continuar con el procesamiento,
  • o detenerse de forma controlada.

Esta simple comprobación evita muchos errores de uso.


Procesar las entidades seleccionadas

El método selectedFeatures() devuelve una lista de objetos QgsFeature.

Por tanto, es posible recorrerlas fácilmente:

for feature in selected_features:
# procesar cada entidad

Cada entidad contiene:

  • sus atributos,
  • su geometría,
  • su identificador único.

Toda la información necesaria para realizar operaciones específicas sobre los datos seleccionados.


Un ejemplo sencillo: leer un atributo

Una vez obtenidas las entidades seleccionadas, es posible acceder a sus atributos igual que con cualquier otro objeto QgsFeature.

Por ejemplo:

for feature in selected_features:
value = feature[«population»]

En este ejemplo, el plugin lee el valor del campo population para cada entidad seleccionada.

Si el campo no existe, se producirá un error.

Por ello es importante comprobar previamente la estructura de la capa. Un plugin nunca debería asumir que un campo determinado está siempre presente.


Modificar atributos de forma segura

Para modificar entidades seleccionadas, la capa debe estar en modo edición.

Antes de realizar cambios, conviene comprobar si la edición ya está activada.

if not layer.isEditable():
layer.startEditing()

Después se pueden actualizar las entidades seleccionadas:

for feature in selected_features:
feature[«estado»] = «procesado»
layer.updateFeature(feature)

Y finalmente guardar los cambios:

layer.commitChanges()

Un plugin nunca debería modificar datos silenciosamente sin que el usuario lo sepa.

Más adelante veremos cómo solicitar una confirmación antes de validar los cambios.


Selección activa ≠ filtro ≠ capa temporal

QGIS ofrece varias formas de trabajar con un subconjunto de datos.

Aunque visualmente puedan parecer similares, su comportamiento dentro de un plugin es muy diferente.

Comprender estas diferencias es fundamental para desarrollar herramientas fiables.

Selección activa

La selección activa:

  • pertenece a la capa,
  • se muestra mediante resaltado visual,
  • es accesible mediante selectedFeatures(),
  • cambia cada vez que el usuario modifica la selección.

Es el mecanismo más seguro y explícito para la mayoría de los plugins.


Filtro de capa

Un filtro:

  • oculta las entidades que no cumplen una condición,
  • hace que la capa parezca más pequeña,
  • afecta a lo que ve el usuario.

Sin embargo, salvo que se tomen precauciones específicas, el plugin puede seguir accediendo a entidades ocultas por el filtro.

Un plugin mal diseñado puede modificar entidades que ni siquiera son visibles en pantalla.


Capa temporal

Una capa temporal:

  • suele ser el resultado de un proceso,
  • contiene una copia o subconjunto de los datos originales,
  • es independiente de la capa de origen,
  • puede desaparecer al cerrar el proyecto.

Las capas temporales son muy útiles para pruebas y análisis, pero no siempre son adecuadas para modificar los datos originales.


Lo que debes recordar

Estos tres conceptos son muy diferentes:

  • Selección = intención explícita del usuario
  • Filtro = vista parcial de los datos
  • Capa temporal = copia de trabajo

En la mayoría de los plugins orientados a tareas de negocio, la selección activa es el mejor punto de partida.


¿Qué ocurre si no hay entidades seleccionadas?

Tarde o temprano, todo desarrollador de plugins se enfrenta a la misma situación:

El usuario ejecuta la herramienta sin haber seleccionado ninguna entidad.

¿Qué debe hacer el plugin?

Existen dos enfoques habituales.

Opción 1 – Bloquear la acción

La solución más segura consiste en detener el procesamiento e informar al usuario.

Por ejemplo:

Seleccione al menos una entidad antes de ejecutar esta herramienta.

Este enfoque evita ambigüedades y previene modificaciones accidentales.

En la mayoría de los casos, es la opción más segura.

Opción 2 – Proponer una alternativa

Otra posibilidad consiste en preguntar al usuario qué desea hacer.

Por ejemplo:

No hay entidades seleccionadas. ¿Desea aplicar esta operación a toda la capa?

Este enfoque ofrece más flexibilidad sin quitar el control al usuario.

Lo importante es que el plugin nunca tome esta decisión por su cuenta.

El usuario siempre debe tener la última palabra.


Casos de uso habituales

Trabajar únicamente con entidades seleccionadas es fundamental para numerosas tareas SIG.

Por ejemplo:

  • recalcular un atributo sobre un subconjunto de entidades,
  • corregir geometrías específicas,
  • aplicar reglas de negocio sobre determinados objetos,
  • preparar datos antes de una exportación,
  • validar registros concretos.

En la práctica, una gran parte de los plugins profesionales deberían funcionar de esta manera.

Los usuarios esperan que la herramienta actúe únicamente sobre los elementos que han seleccionado.

¿Por qué es tan importante?

Respetar la selección activa no es un simple detalle técnico.

Es un principio de diseño.

Una selección representa una acción explícita realizada por el usuario.

Ignorarla suele generar confusión, resultados inesperados y pérdida de confianza en la herramienta.

Por el contrario, un plugin que respeta la selección activa se comporta de forma predecible y profesional.


Puntos clave para recordar

Antes de continuar, recuerda estas ideas fundamentales:

  • Una selección representa la intención del usuario.
  • Un plugin bien diseñado debe respetar esa intención.
  • El código necesario es simple y fácil de entender.
  • La seguridad proviene de buenas decisiones de diseño, no de la complejidad del código.

Muchos principiantes creen que desarrollar plugins seguros requiere programación avanzada.

En realidad, la mejor protección suele consistir en unas pocas comprobaciones sencillas realizadas en el momento adecuado.


Lo que has aprendido

Al finalizar este artículo, ya sabes:

  • cómo recuperar la capa activa,
  • cómo detectar entidades seleccionadas,
  • cómo procesar únicamente las entidades seleccionadas,
  • cómo modificar entidades seleccionadas de forma segura,
  • por qué selección, filtro y capa temporal son conceptos distintos.

Tu plugin ya puede trabajar sobre un subconjunto específico de datos en lugar de procesar toda la capa indiscriminadamente.

Este es un paso importante hacia el desarrollo de plugins QGIS más profesionales y fiables.


¿Y en el próximo artículo?

En el siguiente artículo veremos un tema estrechamente relacionado:

cómo modificar entidades sin poner en riesgo los datos.

Aprenderemos a:

  • trabajar de forma segura en modo edición,
  • confirmar o cancelar cambios,
  • proteger los datos del usuario,
  • desarrollar plugins en los que los usuarios puedan confiar.

Un plugin útil no es solo aquel que realiza correctamente una tarea, sino también aquel que protege los datos que modifica.


Si cet article vous a intéressé et que vous pensez qu'il pourrait bénéficier à d'autres personnes, n'hésitez pas à le partager sur vos réseaux sociaux en utilisant les boutons ci-dessous. Votre partage est apprécié !

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Are you human? Please solve:Captcha