5.4. Lesson: Acciones

Ahora que ha visto una acción predeterminada en la lección anterior, es hora de definir sus propias acciones.

Una acción es algo que sucede cuando haces click en una función. Puede agregar una gran cantidad de funcionalidades adicionales a su mapa, permitiéndole recuperar información adicional sobre un objeto, por ejemplo. ¡Asignar acciones puede agregar una dimensión completamente nueva a su mapa!

El objetivo de esta lección: Aprender como añadir acciones personalizadas.

En esta lección usará la capa school_property que creó anteriormente. Los datos de muestra incluyen fotos de cada una de las tres propiedades que digitalizó. Lo que vamos a hacer es asociar cada propiedad con su imagen. Luego crearemos una acción que abrirá la imagen de una propiedad al hacer click en la propiedad.

5.4.1. basic Follow Along: Añadir un Campo para Imágenes

La capa `` school_property`` todavía no tiene forma de asociar una imagen con una propiedad. Primero crearemos un campo para este propósito.

  1. Abre el cuadro de diálogo Propiedades de la capa.

  2. Haz click en la pestaña Campos.

  3. Conmuta el modo de edición:

    ../../../_images/toggle_editing_mode.png
  4. Añade una nueva columna:

    ../../../_images/add_new_column.png
  5. Introduce los valores siguientes:

    ../../../_images/column_settings.png
  6. Una vez creado el campo, vaya a la pestaña Formulario de atributos y seleccione el campo``imagen``.

  7. Ajuste Tipo de control como Adjunto:

    ../../../_images/select_file_name.png
  8. Click en Aceptar en el diálogo Propiedades de capa.

  9. Utiliza la herramienta Identificar para clickar en uno de los tres elementos en la capa school_property.

    Como todavía está en modo de edición, el cuadro de diálogo debe estar activo y tener este aspecto:

    ../../../_images/school_property_no_image.png
  10. Haz click en el botón de búsqueda ( junto al campo imagen).

  11. Seleccione la ruta para su imagen. Las imágenes están en exercise_data/school_property_photos/ y tienen el mismo nombre que las entidades con las que deberían estar asociadas.

  12. Haz click en Aceptar.

  13. Asocia todas las imágenes con los elementos correctos utilizando este método.

  14. Guarda tus cambios y sal del modo edición.

5.4.2. basic Follow Along: Creando una Acción

  1. Abra la pestaña Acciones para la capa school_property, y haga click en el botón signPlus Añadir una nueva acción.

    ../../../_images/layer_actions.png
  2. En el cuadro de diálogo Añadir nueva acción, ingrese las palabras``Mostrar imagen`` en el campo Description:

    ../../../_images/show_image_action.png

    Qué hacer luego depende del sistema operativo que estés usando, así que elige el método adecuado a seguir:

    • Windows

      Haz click en el menú desplegable Tipo y elige Abrir.

    • Ubuntu Linux

      En Acción, escriba eog para el Gnome Image Viewer, o escriba display para usar ImageMagick. ¡Recuerde poner un espacio después del comando!

    • MacOS

      1. Haz click en el menú desplegable Tipo y elige Mac.

      2. En Acción, escriba open. ¡Recuerde poner un espacio después del comando!

    Ahora puedes continuar escribiendo el comando.

    Quieres abrir la imagen y QGIS sabe dónde está. Todo lo que necesita es decirle a la Acción dónde está la imagen.

  3. Selecciona imagen en la lista:

    ../../../_images/select_image.png
  4. Haga click en el botón Insertar campo. QGIS agregará la frase [%"image"%] en el campo Texto de la Acción.

  5. Haz click en el botón Aceptar para cerrar el diálogo Agregar nueva acción

  6. Haga click en Aceptar para cerrar el diálogo Propiedades de capa

Ahora es momento de probar la nueva acción:

  1. Click en la capa school_property en el panel Capas para que quede resaltado.

  2. Encuentre el botón actionRun Ejecutar acción de objeto (en la Barra de Herramientas de Atributos).

  3. Haga click en la flecha hacia abajo a la derecha de este botón. Hasta ahora solo hay una acción definida para esta capa, que es la que acaba de crear.

    ../../../_images/run_feature_action_select.png
  4. Haz click en el propio botón para activar la herramienta.

  5. Para utilizar esta herramienta, haz click en cualquiera de las tres propiedades de la escuela.

    La imagen de esa propiedad debería abrirse.

5.4.3. |modérate| Follow Along: Buscando en Internet

Digamos que estamos mirando el mapa y queremos saber más sobre el área en la que se encuentra una granja. Suponga que no sabe nada del área en cuestión y desea encontrar información general al respecto. Su primer impulso, teniendo en cuenta que está utilizando una computadora en este momento, probablemente sería buscar en Google el nombre del área. ¡Entonces digamos a QGIS que haga eso automáticamente por nosotros!

  1. Abre la tabla de atributos para la capa landuse.

    Utilizaremos el campo name para cada una de nuestras áreas de uso del suelo a buscar en Google.

  2. Cierra la tabla de atributos.

  3. Vuelve a Acciones en Propiedades de la capa.

  4. Click en el botón Crear acciones predeterminadas para añadir un número de acciones predeterminadas.

  5. Borra todas las cciones salvo la acción Abrir URL con el título corto Buscar en la web usando el botón de abajo signMinus Eliminar la acción seleccionada.

  6. Doble click en la acción restante para editarla

  7. Cambie la Descripción`a ``Buscar en Google`, y borre el contenido del campo Título corto.

  8. Comprueba que Lienzo está entre los Alcances de acción marcados.

    Qué hacer luego depende del sistema operativo que estés usando, así que elige el método adecuado a seguir:

    • Windows

      En Tipo, elige Abrir. Esto le dirá a Windows que abra una dirección de internet en tu buscador por defecto, como Internet Explorer.

    • Ubuntu Linux

      En Acción, escribe xdg-open. Esto le indicará a Ubuntu de abrir la dirección de internet en su navegador por defecto, como Chrome o Firefox.

    • MacOS

      En Acción. escribe open. Esto le indicará a MacOS de abrir una dirección de internet en su navegador predeterminado, como Safari.

    Ahora puede continuar escribiendo el comando

    Para cualquier comando que uses, necesitarás decirle qué dirección de internet abrir despues. Quieres que vaya a Google y buscar la frase automáticamente.

    Por lo general, cuando usa Google, ingresa su frase de búsqueda en la barra de Búsqueda de Google. Pero en este caso, desea que su computadora haga esto por usted. La forma en que le dice a Google que busque algo (si no desea utilizar su barra de búsqueda directamente) es dando a su navegador de Internet la dirección https://www.google.com/search?q=SEARCH_PHRASE, donde SEARCH_PHRASE` es lo que desea buscar. Como todavía no sabemos qué frase buscar, ingresaremos la primera parte (sin la frase de búsqueda).

  9. En el campo Acción , escriba https://www.google.com/search?q=. Recuerde añadir un espacio despues de su comando inicial antes de antes de escribir esto!

    Ahora desea que QGIS le diga al navegador que le pida a Google buscar el valor de name para cualquier entidad en la que pueda hacer click.

  10. Selecciona el campo name.

  11. Click en el botón Insertar:

    ../../../_images/google_search_action.png

    Lo que esto significa es que QGIS va a abrir el navegador y le envía la dirección https://www.google.com/search?q=[% "name" %]. [% "name" %] le manda a QGIS usar el contenido del campo name como frase a buscar.

    Entonces, si, por ejemplo, el área de uso del suelo en la que hace click se llama Marloth Nature Reserve, QGIS le va a mandar al navegador https://www.google.com/search?q=Marloth%20Nature%20Reserve, que provocará que su navegador active la busqueda para «Marloth Nature Reserve».

  12. Si aún no lo ha hecho, configure todo como se explicó anteriormente.

  13. Haz click en el botón Aceptar para cerrar el diálogo Agregar nueva acción

  14. Haga click en Aceptar para cerrar el diálogo Propiedades de capa

Ahora para comprobar la nueva acción.

  1. Con la capa landuse activa en el panel de Capas, click en la flecha hacia abajo a la derecha del botón actionRun Ejecutar acción de objeto, y seleccione la única opción (Buscar en Google) definida para esta capa.

  2. Haga click en cualquier área de uso del suelo que pueda ver en el mapa. Su navegador ahora se abrirá e iniciará una búsqueda en Google del lugar que está registrado como el valor de name de esa área.

Nota

Si tu acción no funciona, comprueba que todo fué correctamente introducido; ¡Los errores tipográficos son muy comunes en este tipo de trabajos!

5.4.4. hard Follow Along: Abrir una Página Web Directamente en QGIS

Arriba, ha visto cómo abrir una página web en un navegador externo. Hay algunas deficiencias con este enfoque, ya que agrega una dependencia incognoscible: ¿tendrá el usuario final el software necesario para ejecutar la acción en su sistema? Como has visto, ni siquiera tienen necesariamente el mismo tipo de comando base para el mismo tipo de acción, si no sabes qué sistema operativo usarán. Con algunas versiones del sistema operativo, los comandos anteriores para abrir el navegador podrían no funcionar en absoluto. Este podría ser un problema insuperable.

Sin embargo, QGIS se encuentra en la parte superior de la biblioteca Qt increíblemente poderosa y versátil. Además, las acciones de QGIS pueden ser arbitrarias, tokenizadas (es decir, usar información variable basada en el contenido de un atributo de campo) ¡comandos de Python!

Ahora verá cómo usar una acción de Python para mostrar una página web. Es la misma idea general que abrir un sitio en un navegador externo, pero no requiere ningún navegador en el sistema del usuario, ya que utiliza la clase Qt QWebView (que es un widget html basado en webkit) para mostrar el contenido en una ventana emergente .

Usemos Wikipedia esta vez. Entonces, la URL que solicite se verá así:

https://wikipedia.org/wiki/SEARCH_PHRASE

Para crear la acción de capa:

  1. Abre el cuadro de diálogo Propiedades de la capa y ve directamente a la pestaña Acciones.

  2. Configure una nueva acción utilizando las siguientes propiedades para la acción:

    • Tipo: Python

    • Descripción: Wikipedia

    • Texto de la acción (todo en una línea):

      from qgis.PyQt.QtCore import QUrl; from qgis.PyQt.QtWebKitWidgets import QWebView; myWV = QWebView(None); myWV.load(QUrl('https://wikipedia.org/wiki/[%name%]')); myWV.show()
      
    ../../../_images/python_action_example.png

    Hay un par de cosas sucediendo aquí:

    • Todos los códigos python están en una sola línea con puntos y comas que separan los comandos (en lugar de nuevas líneas, la forma normal de separar comandos Python).

    • [%name%] será reemplazado por el valor del atributo real cuando se invoque la acción (como antes).

    • El código simplemente crea una nueva instancia de QWebView, establece su URL y luego llama a show() para que sea visible como una ventana en el escritorio del usuario.

    Nota que este es de alguna forma un ejemplo inventado. Python trabaja con sangrías con significado semántico, así que separar cosas con puntos y comas no es la mejor forma de escribirlo. Así, en el mundo real, sería más probable importar la lógica de un módulo de Python y luego utilizar una función con un atributo de campo como parámetro.

    También podría usar este enfoque para mostrar una imagen sin requerir que los usuarios tengan un visor de imágenes en particular en su sistema.

  3. Intente utilizar los métodos descritos anteriormente para cargar una página de Wikipedia utilizando la acción de Wikipedia que acaba de crear.

5.4.5. In Conclusion

Las acciones le permiten dar a su mapa una funcionalidad adicional, útil para el usuario final que ve el mismo mapa en QGIS. Debido al hecho de que puede usar comandos de shell para cualquier sistema operativo, así como Python, ¡el cielo es el límite en términos de las funciones que podría incorporar!

5.4.6. What’s Next?

Ahora que ha realizado todo tipo de creación de datos vectoriales, aprenderá a analizar los datos para resolver problemas. Ese es el tema del próximo módulo.