miércoles, 30 de diciembre de 2015

Usando Variables en QGIS 2.12 - Ejemplos prácticos.






Quisiera tratar en esta última entrada del presente año, sobre una de las novedades que nos vino con la última versión del QGIS, me refiero a la "Variables", sobre todo desde el punto de vista práctico, por lo tanto, estuve probando su potencial estos días y cada vez encuentro más aplicaciones posibles, trataré de presentar un resumen de lo que hasta ahora pude experimentar.

Variables personalizadas:


En esta nueva versión del QGIS 2.12, se brinda un nuevo concepto con el uso de variables personalizadas en el motor de expresiones, el cual se presenta a varios niveles, esto es importante mencionar, por ejemplo se habrán fijado que si ingresamos a las propiedades de alguna de nuestras capas y luego dentro de "Variables", veremos los tres niveles: Global (1), Proyecto (2) y Capa (3).

Figura 1: Niveles de las variables

Nota: Las capas que estaré empleando para mostrar las ventajas del uso de variables en el QGIS, son las mismas que ya venimos trabajando en entradas anteriores. 

En primer lugar, para acceder al primer nivel (Global), debemos ir a "Opciones", el cual podemos acceder desde "Configuraciones" dentro de la barra de menú. Una vez que nos dirigimos a "Variables", veremos que solo se muestra las variables a este nivel, con datos por defecto que nos permite por ejemplo conocer la versión del software que estamos empleando (Figura 2). En nuestro caso vamos a agregar dos nuevas variables, para ello simplemente hacemos clic en el botón con el signo "+". En esta parte es interesante incorporar variables que identifican por ejemplo a una organización,  al área responsable o podría ser también a personas involucradas.

Figura 2: Variables a nivel Global


Para acceder a las variables del nivel de proyecto, debemos ir a "Propiedades del proyecto", luego de entrar a "Variables", podremos apreciar que es posible incorporar nuevas variables. En nuestro caso vamos a incorporar algunas variables ligados por ejemplo tipo de fuente (label_font), asimismo a colores en los estilos (project_color1, project_color2 y project_color3), para generar estos últimos, nos dirigimos primero a "Estilos predeterminados" y añadimos los colores a considerar (Figura 3), luego de nombrar las variables ingresamos como valor el código de colores elegidos (Figura 4).

Figura 3: Seleccionando los colores a considerar para las variables.



Figura 4: Variables sobre colores a nivel de Proyecto


Generando Estilos y Etiquetas personalizadas con variables

Una de las principales ventajas de usar variables es la posibilidad de tener un elemento más en nuestro editor de expresiones que nos permite personalizar estilos y etiquetas. Es decir que cuando generamos una variable como por ejemplo el tipo de fuente, el mismo se expresa así: @label_font .

Figura 5: Vista de variables en el constructor de expresiones.



EJEMPLO 1:  Supongamos que tenemos datos de población de centros poblados y queremos representarlo por puntos que varíen de tamaño en función a sus valores, pero además que cambie de color aquellos que representan los valores más altos de acuerdo a un rango. 

Para lograr todo lo mencionado, primero vamos a generar un estilo en nuestra capa de puntos (select_ccpp_huanuco.shp), considerando un estilo graduado que solo toma valores numéricos, en este caso se va a usar el campo de población (POB07), además la simbología se va a diferenciar por tamaño (Size) y la división de clases va ser empleando "Ruptura naturales (Jenks)". 

Figura 6: Generando un estilo previo a una capa de puntos.



Como verán hasta ahora no hemos empleado las variables, pero tal como se aprecia en la Figura 4, ya se han generado tres variables para identificar colores. Ahora lo que vamos hacer es activar estas variables en donde corresponde, es decir en nuestro símbolo. 


Figura 7: Activando el uso de variables para la coloración del símbolo.


Luego procedemos a editar nuestro constructor de expresiones para lograr el cambio de colores de acuerdo a los valores existentes de población, por lo tanto, podemos emplear condicionales, en específico la expresión CASE, el cual nos permite crear una condición inicial que los valores de población mayores a 12,000 empleen la variable @project_color3, el cual de acuerdo a la Figura 3, representa al color rojo (#ff0000), en caso no se cumpla esa condición se usará como color de fondo el código #ffcb00.

Figura 8: Construyendo una expresión con variables y usando condicionales.

Luego de realizar todos estos pasos vamos a obtener nuestro primer resultado, en donde los puntos de mayor tamaño representan los centros poblados con mayor población y están diferenciados por una coloración rojiza.

Figura 8: Resultado de emplear variables en la generación de estilos.



EJEMPLO 2: Se requiere emplear variables para que el tamaño de fuente de las etiquetas de una capa de polígonos, varíen en función a la escala que se muestra en el escritorio, es decir a una escala mayor el tamaño de fuentes debe ser menor y en una escala menor el tamaño sera mayor, asimismo tener la opción de modificar la fuentes de varias capas al mismo tiempo.

Empezares por el último requerimiento; por lo tanto, en esta parte es importante mencionar que una principales ventajas de emplear variables es que, al definir una variable como el tipo de fuente, si en un determinado momento se decide cambiarlo y contamos con varias capas, sería un trabajo arduo hacerlo uno por uno, pero al emplear variables a nivel de Proyecto, solamente con indicarle otro estilo de fuente, la misma varía en todas las capas que fueron activadas para que funcionen con variables (Figura 9). Tal como se aprecia en la Figuras 4 y 5, ya contamos con una variable denominada @label_font, el cual podemos ir variando, en nuestro caso representará el valor de "Courier", ustedes por su parte pueden ir probando otros estilos de fuentes y verán como cambia en todas las capas que presentan etiquetas.

Figura 9: Activando las variables para modificar el tipo de fuente.


Para la capa de polígonos a trabajar (selec_prov_huanuco.shp) representa un grupo de provincias del departamento de Huánuco,  en donde las etiquetas que indican el nombre de dichas provincias van a variar su tamaño en función a la escala. Para lograr esto, a nivel de Capa, vamos a generar dos variables: font_size1 y font_size2. Cada uno representa un tamaño de fuente distinta tal como se aprecia en la Figura 10.

Figura 10: Variables que indican tamaños de fuente a nivel de Capa

Como siguiente paso nos vamos a las propiedades de la capa en mención y dentro de Etiquetas nos dirigimos a la parte del tamaño de fuente, activamos la opción de uso de variables y dentro del constructor de expresiones generamos una que cumpla lo que requerimos. En este caso podemos emplear como en el ejemplo anterior el condicional CASE, asimismo buscamos la función de escala ($scale), para precisar este valor como inicio del condición, luego empleamos las variables recientemente generadas para completar la expresión requerida.

Figura 11: Construyendo una expresión con variables para modificar tamaños 
de fuentes en función a la escala


Finalmente cuando modificamos la escala de presentación del mapa podremos ver la diferencia en el tamaño de fuentes.


Figura 12: Resultado que muestra los diferentes tamaños de fuentes de las etiquetas 
en función a su escala de presentación



Algo muy similar podemos hacer por ejemplo con otra capa de polígonos (select_dist_huanuco.shp), que representa en este caso a ámbito menores como son los distritos. En este caso nos planteamos que necesitamos que los anchos de los bordes puedan modificarse con la escala de presentación, para ello generamos a nivel de esta capa dos variables, los cuales representan distintos anchos de borde.

Figura 13: Variables que representan distintos anchos de borde de 
una capa de polígonos.


Finalmente seguimos el mismo procedimiento anterior, empleando el constructor de expresiones y podremos obtener el resultado requerido.


Figura 14: Expresión para contar con distintos anchos de borde 
en función a la escala de presentación.


EJEMPLO 3: Se han generado varios mapas en el diseñador de impresión (print composer), y sobre todos ellos se han colocado a modo de etiquetas datos sobre el proyecto realizado. Debido a que se han realizado algunas modificaciones al proyecto es indispensable que para todos los diseños de impresión, se vaya modificando los datos de las versiones mientras se van actualizando.

Existe la posibilidad de que tengamos varios mapas creados en nuestro diseñador de impresiones y a veces necesitamos cambiar algunos datos propios del proyecto, en especial las versiones que se vienen manejando, a fin de no hacerlo manualmente uno por uno, vamos a emplear las variables.
Para poder lograr lo requerido es importante que a nivel Global y del Proyecto generemos las variables que necesitamos incluir como una etiqueta de información dentro de nuestro mapa, claro que algunas ya existen por defecto como por ejemplo la versión del QGIS y la ruta de nuestro proyecto, por lo tanto podemos incluir otras variables como el creador del mapa y datos sobre la oficina que lo está generando.

Figura 15: Empleo de variables dentro de nuestro diseñador de impresión de mapas.


Una vez realizado todo esto, solamente vamos a requerir modificar en este caso las versiones dentro de las variables a nivel de proyecto, para que se modifiquen en todos los mapas del proyecto que se realizaron.

Figura 16: Variable que indica la versión del proyecto.


Muy bien, por ahora es todo lo que quería mostrarles, tal como lo menciona el creador de esta herramienta Nyall Dawson, el uso de variables a nivel de Capa puede tener cientos de aplicaciones, es cuestión de ir explorando y ver que más podemos hacer.

Bueno, este sería la última entrada de este año, espero escribir más seguido el próximo año, agradezco algunos comentarios que me animan a seguir haciendo esto y a personas muy especiales que me motivan en todo momento. 
Hasta la próxima...

Referencias:






2 comentarios:

JOG dijo...

Hola Carlos, he visto que en la página principal de tu blog hay un link "riego" sin embargo no enlaza con una página. Me parece muy interesante tu blog. Me dedico a la ingeniería agronómica,en concreto al regadío (en España) y quería saber si estás usando las herramientas SIG en relación con la agricultura y el regadio.

Nada más, un saludo.

Jesús.

carlos carbajal dijo...

Hola Jesús, te comento que soy Ing. Agrónomo y hace unos años atrás estuve muy dedicado al tema de riego, sobre todo el riego superficial tecnificado, muy buena tu observación sobre que no existe ningún link sobre el tema, lo acabo de generar para que puedas acceder al contenido de mi tesis. Por otro lado, si bien es cierto que en los últimos tiempos estoy dedicado a los temas sobre Sistemas de Información Geográfica, creo que se complementa mucho sobre todo por las múltiples aplicaciones en el campo de la agricultura, aunque quizá no publiqué aplicaciones para temas específicos de riego, es un reto interesante.
Saludos,