Ahora que has visto las acciones por defecto en la lección anterior, es hora de definir tus propias acciones. Una acción es lo que ocurre cuando clicas en un elemento. Puedes añadir mucha funcionalidad extra a tu mapa, permitiendote obtener información adicional sobre un objeto, por ejemplo. ¡Asignar acciones puede añadir una nueva dimensión a tu mapa!
El objetivo de esta lección: Aprender como añadir acciones personalizadas.
Utiliza la capa propiedad_escolar que creaste anteriormente. Los materiales del curso incluyen fotos de cada una de las tres propiedades que digitalizaste. Lo siguiente que vamos a hacer será asociar cada propiedad con su imagen. Luego crearemos una acción que abra la imagen de una propiedad cuando se haga clic en la propiedad.
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 clic en la pestaña Campos.
Conmuta el modo de edición:
Añade una nueva columna:
Introduce los valores siguientes:
Después de haber creado el campo, haz clic en el botón Edición de líneas junto al nuevo campo.
Elije Nombre de archivo:
Haz clic en Aceptar en el cuadro de diálogo Propiedades de la capa.
Utiliza la herramienta Identificar para clicar en uno de los tres elementos en la capa propiedad_escolar.
Como estás en el modo edición, el cuadro de diálogo debería estar activado y verse así:
Haz clic en el botón de búsqueda (the ... junto al campo imagen).
Selecciona la ruta para tu imagen. Las imágenes están en exercise_data/school_property_photos/ y se nombran como los elementos a los que deberían estar asociadas.
Haz clic en Aceptar.
Asocia todas las imágenes con los elementos correctos utilizando este método.
Guarda tu cambios y sal del modo edición.
Abre el formulario Acciones de la capa propiedad_escolar.
En el panel Propiedades de acciones, introduce las palabras Mostrar imagen en el campo Nombre.
Qué hacer luego depende del sistema operativo que estés usando, así que elige el curso adecuado a seguir:
Haz clic en el menú desplegable Tipo y elige Abrir.
En Acción, escribe eog para el Gnome Image Viewer, o escribe display para usar ImageMagick. ¡Recuerda dejar un espacio después del 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:
Haz clic en el botón Insertar campo. QGIS añadirá la frase [% "imagen" %] en el campo Acción.
Haz clic en el botón Añadir a la lista de acciones.
Haz clic en Aceptar en el cuadro de diálogo Propiedades de la capa.
Ahora comprobaremos la nueva Acción:
Haz clic en la capa propiedad_escolar en Lista de capas para que quede seleccionada.
Encuentra el botón Ejecutar acción del objeto espacial (en la misma barra de herramientas que el botón Abrir tabla de atributos):
Haz clic en la flecha hacia abajo a la derecha del botón. Hay solo una acción definida para esta capa hasta el momento, la que acabas de crear.
Haz clic en el propio botón para activar la herramienta.
Utilizando esta herramienta, haz clic en cualquiera de las propiedades de escuela.
La imagen para esa propiedad se abrirá.
Digamos que estas buscando un mapa y quieres saber más sobre el área en la que está la granja. Supón que no sabes nada del área en cuestión y quieres encontrar información general sobre ella. Tu primer impulso, considerando que estás utilizando el ordenador justo ahora, sería buscar el nombre del área en Google. ¡Así que digámosle a QGIS que lo haga automáticamente por nosotros!
Abre la tabla de atributos para la capa landuse.
Estaremos usando el campo name para cada área de usos del terreno para buscar en Google.
Cierra la tabla de atributos.
Vuelve a Acciones en Propiedades de la capa.
En el campo Propiedades de acciones ‣ Nombre, escribe Busqueda en Google.
Qué hacer luego depende del sistema operativo que estés usando, así que elige el curso adecuado a seguir:
En Tipo, elige Abrir. Esto le dirá a Windows que abra una dirección de internet en tu buscador por defecto, como Internet Explorer.
En Acción, escribe xdg-open. Esto le dirá a Ubuntu que abra una dirección de internet en tu buscador por defecto, como Chrome o Firefox.
En Acción, escribe abrir. Esto le dirá a MacOS que abra una dirección de internet en tu buscador por defecto, como Safari.
Para cualquier comando que uses, necesitarás decirle qué dirección de internet abrir luego. Quieres ir a Google y buscar la frase automáticamente.
Normalmente cuando usas Google, introduces tu frase a buscar en la barra de Búsqueda de Google. Pero en este caso, quieres que tu ordenador lo haga por ti. Para decirle a Google que busque por algo (si no quieres utilizar su barra de búsqueda directamente) se le da al Buscador de Internet la dirección http://www.google.com/search?q=SEARCH_PHRASE, donde SEARCH_PHRASE es lo que tú quieres buscar. Como no sabemos qué frase buscar todavía, solo introduciremos la primera parte (sin la frase de búsqueda).
En el campo Acción, escribe http://www.google.com/search?q=. ¡Recuerda dejar un espacio después de tu comando inicial antes de escribirlo!
Ahora quieres que QGIS le diga al buscador que busque en Google el valor de name para cualquier elemento en el que quieras clicar.
Selecciona el campo name.
Haz clic en Insertar campo:
Esto dirá a QGIS que añada la siguiente frase:
Lo que significa que QGIS abrirá el buscador y lo enviará a la dirección http://www.google.com/search?q=[% "name" %]. Pero [% "name" %] dirá al QGIS que use los contenidos del campo name como frase a buscar.
Así que si, por ejemplo, el área de usos del territorio en el que cliques se llama Marloth Nature Reserve, QGIS enviará al buscador a http://www.google.com/search?q=Marloth%20Nature%20Reserve, lo que hará que tu buscador vaya a Goolge para que busque “Marloth Nature Reserve”.
Si no lo has hecho todavía, ajusta todo como se ha explicado anteriormente.
Haz clic en el botón Añadir a la lista de acciones. La nueva acción aparecerá en la lista arriba.
Haz clic en Aceptar en el cuadro de diálogo Propiedades de la capa.
Ahora para comprobar la nueva acción.
Con la capa guilabel:landuse activa en Lista de capas, haz clic en el botón Ejecutar acción del objeto espacial.
Haz clic en cualquier área de usos del territorio que puedas ver en el mapa. Tu buscador se abrirá automáticamente y comenzará una búsqueda en Google de la ciudad que está escrita como el valor name del área.
Nota
Si tu acción no funciona, comprueba que todo está correctamente introducido; ¡ Los errores tipográficos son muy comunes en este tipo de trabajos!
Anteriormente, has visto como abrir una página web en un buscador externo. Hay algunas desventajas con este enfoque que añaden cierta dependencia desconocida –¿tendrá el usuario final el software requerido para ejecutar la acción en su sistema? Como has visto, ni siquiera es probable que utilizen el mismo tipo de comandos base para el mismo tipo de acción, si no sabes qué SO estarán utilizando. Con algunas versiones de SO, puede que los comandos anteriores no funcionen en absoluto. Esto podría ser un problema insuperable.
Sin embargo, QGIS está construido sobre la base de la increíblemente potente y versátil librería de Qt4. ¡Además, las acciones de QGIS pueden ser comandos Python arbitrarios, clasificados en tokens (es decir, utilizar información variable basada en contenidos de atributo de un campo)!
Ahora verás cómo usar una acción python para mostrar una página web. Es la misma idea general que abrir una página en un buscador externo, pero no requiere buscador en el sistema del usuario ya que utiliza la clase Qt4 QWebView (que es un widget html basado en un webkit) para visualizar el contenido en una ventana emergente.
En lugar de Google, utilicemos Wikipedia esta vez. Así la URL que solicites será así:
http://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.
Set up a new action using the following properties for the action: * Type: Python * Name: Wikipedia * Action (all on one line):
from PyQt4.QtCore import QUrl; from PyQt4.QtWebKit import QWebView; myWV = QWebView(None); myWV.load(QUrl('http://wikipedia.org/wiki/[% "name" %]')); myWV.show()
Hay un par de cosas ocurriendo 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 atributo actual cuando la acción se invoque (como anteriormente).
El código simplemente crea una nueva instancia, ajusta su URL, y luego llama show() para hacerla 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.
Podrías igualmente utilizar el enfoque para visualizar una imagen sin requerir que el usuario tenga un particular visor de imágenes en su sistema.
Prueba a utilizar los métodos descritos anteriormente para cargar una página de Wikipedia utilizando la acción Wikipedia que acabas de crear.
Las acciones te permiten dar a tu mapa funcionalidades extra, siendo útiles para el usuario final, que verá el mismo mapa en QGIS. Debido al hecho de que puedes utilizar comandos Shell para cualquier sistema operativo, a parte de Python, ¡el cielo es el límite respecto a las funciones que podrías incorporar!
Ahora que has creado todo tipo de datos vectoriales, aprenderás a analizar los datos para solucionar problemas. Ese es el tema del módulo siguiente.