Outdated version of the documentation. Find the latest one here.

6.4. Lesson: Acciones

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.

6.4.1. basic Follow Along: Abrir una Imagen

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.

6.4.2. 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.

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

  • Haz clic en la pestaña Campos.

  • Conmuta el modo de edición:

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

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

../../../_images/column_settings.png
  • 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:

../../../_images/select_file_name.png
  • 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í:

../../../_images/school_property_no_image.png
  • 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.

6.4.3. basic Follow Along: Creando una Acció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.

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

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

6.4.3.1. Windows

  • Haz clic en el menú desplegable Tipo y elige Abrir.

6.4.3.2. Ubuntu Linux

  • En Acción, escribe eog para el Gnome Image Viewer, o escribe display para usar ImageMagick. ¡Recuerda dejar un espacio después del comando!

6.4.3.3. MacOS

  • Haz clic en el menú desplegable Tipo y elige Mac.

  • Bajo Acción, escribir abrir. ¡Recuerde colocar un espacio después del comando!

6.4.3.4. Continúa 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:

../../../_images/select_image.png
  • 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:

  • Click on the school_property layer in the Layers list so that it is highlighted.

  • Encuentra el botón Ejecutar acción del objeto espacial (en la misma barra de herramientas que el botón Abrir tabla de atributos):

    actionRun

  • 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á.

6.4.4. moderate Follow Along: Buscando en Internet

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:

6.4.4.1. 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.

6.4.4.2. Ubuntu Linux

  • 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.

6.4.4.3. MacOS

  • En Acción, escribe abrir. Esto le dirá a MacOS que abra una dirección de internet en tu buscador por defecto, como Safari.

6.4.4.4. Continúa escribiendo el comando

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.

Usually when you use Google, you enter your search phrase into the Google Search bar. But in this case, you want your computer to do this for you. The way you tell Google to search for something (if you don’t want to use its search bar directly) is by giving your Internet browser the address http://www.google.com/search?q=SEARCH_PHRASE, where SEARCH_PHRASE is what you want to search for. Since we don’t know what phrase to search for yet, we’ll just enter the first part (without the search phrase).

  • In the Action field, write http://www.google.com/search?q=. Remember to add a space after your initial command before writing this in!

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:

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

Esto dirá a QGIS que añada la siguiente frase:

../../../_images/google_search_entry.png

What this means is that QGIS is going to open the browser and send it to the address http://www.google.com/search?q=[% "name" %]. But [% "name" %] tells QGIS to use the contents of the name field as the phrase to search for.

So if, for example, the landuse area you click on is named Marloth Nature Reserve, then QGIS is going to send the browser to http://www.google.com/search?q=Marloth%20Nature%20Reserve, which will cause your browser to visit Google, which will in turn search for “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.

  • With the landuse layer active in the Layers list, click on the Run feature action button.
  • 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!

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

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.

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

    • Tipo: Python

    • Nombre: 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()
../../../_images/python_action_example.png

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.

6.4.6. In Conclusion

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!

6.4.7. What’s Next?

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.