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. 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.
Abre el cuadro de diálogo Propiedades de la capa.
Haz click en la pestaña Campos.
Conmuta el modo de edición:
Añade una nueva columna:
Introduce los valores siguientes:
Una vez creado el campo, vaya a la pestaña Formulario de atributos y seleccione el campo``imagen``.
Ajuste Tipo de control como Adjunto:
Click en Aceptar en el diálogo Propiedades de capa.
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:
Haz click en el botón de búsqueda ( … junto al campo imagen).
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.Haz click en Aceptar.
Asocia todas las imágenes con los elementos correctos utilizando este método.
Guarda tus cambios y sal del modo edición.
5.4.2. Follow Along: Creando una Acción¶
Abra la pestaña Acciones para la capa school_property, y haga click en el botón Añadir una nueva acción.
En el cuadro de diálogo Añadir nueva acción, ingrese las palabras``Mostrar imagen`` en el campo Description:
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 escribadisplay
para usar ImageMagick. ¡Recuerde poner un espacio después del comando!MacOS
Haz click en el menú desplegable Tipo y elige Mac.
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.
Selecciona imagen en la lista:
Haga click en el botón Insertar campo. QGIS agregará la frase
[%"image"%]
en el campo Texto de la Acción.Haz click en el botón Aceptar para cerrar el diálogo Agregar nueva acción
Haga click en Aceptar para cerrar el diálogo Propiedades de capa
Ahora es momento de probar la nueva acción:
Click en la capa school_property en el panel Capas para que quede resaltado.
Encuentre el botón Ejecutar acción de objeto (en la Barra de Herramientas de Atributos).
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.
Haz click en el propio botón para activar la herramienta.
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!
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.Cierra la tabla de atributos.
Vuelve a Acciones en Propiedades de la capa.
Click en el botón Crear acciones predeterminadas para añadir un número de acciones predeterminadas.
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 Eliminar la acción seleccionada.
Doble click en la acción restante para editarla
Cambie la Descripción`a ``Buscar en Google`, y borre el contenido del campo Título corto.
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
, dondeSEARCH_PHRASE`
es lo que desea buscar. Como todavía no sabemos qué frase buscar, ingresaremos la primera parte (sin la frase de búsqueda).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.Selecciona el campo name.
Click en el botón Insertar:
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 camponame
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 navegadorhttps://www.google.com/search?q=Marloth%20Nature%20Reserve
, que provocará que su navegador active la busqueda para «Marloth Nature Reserve».Si aún no lo ha hecho, configure todo como se explicó anteriormente.
Haz click en el botón Aceptar para cerrar el diálogo Agregar nueva acción
Haga click en Aceptar para cerrar el diálogo Propiedades de capa
Ahora para comprobar la nueva acción.
Con la capa landuse activa en el panel de Capas, click en la flecha hacia abajo a la derecha del botón Ejecutar acción de objeto, y seleccione la única opción (
Buscar en Google
) definida para esta capa.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. 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:
Abre el cuadro de diálogo Propiedades de la capa y ve directamente a la pestaña Acciones.
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()
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 ashow()
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.
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.