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:






lunes, 7 de diciembre de 2015

Formularios personalizados en QGIS 2.12, Parte 2

Tal como lo anunciamos en la anterior entrada, ahora vamos a continuar tratando el tema de los formularios personalizados. El objetivo ahora será enlazar datos externos que nos permitan mostrarlos dentro de nuestra tabla de atributos.

Uso del Plugin Form Value Relation


Hace unos días atrás pude apreciar que existía un plugin nuevo denominado Form Value Relation, luego de ver cómo se podría aplicar con nuestros datos, decidí mostrarlo en esta segunda parte sobre formularios personalizados. Tal como se muestra en la Figura 1, el plugin lo puedes instalar desde la administración e instalación de complementos del QGIS.

Figura 1: Instalación del Plugin Form Value Relation


Una vez que lo tenemos instalado ya estamos listos para emplearlo, por lo tanto para el siguiente ejercicio vamos a necesitar datos externos, para este caso van hacer de tipo CSV. Para quienes deseen practicar lo pueden descargar desde aquí.

Ahora ya dentro del QGIS podemos ir como ya sabemos a propiedades de nuestra capa anteriormente trabajada (ccpp_huanuco_base), en esta oportunidad vamos a modificar el campo "NOMCCPP", para ello ingresamos a su respectivo control de edición, dentro del mismo veremos que en la parte inferior de la lista de controles existe "Form Value Relation".


Figura 2: Ubicación del control "Form Value Relation"


Filtrado dinámico de valores en los formularios


Si bien existe la opción en la lista de controles de "Relación de valores", el plugin que describimos sería un clon, pero que representa una mejora, la cual hace que la aplicación de filtros dinámicos complejos en la tabla de atributos del QGIS constituya una tarea fácil. Como lo vamos a ver en el ejercicio, se podría emplear para poner en práctica formularios de desglose hacia abajo, donde los valores disponibles en un campo dependen de los valores de otros campos.

Lo primero que debemos hacer es seleccionar la capa de valores a enlazar, la columna clave y la columna de valores (Figura 3), las cuales corresponden a los campos de la nueva tabla que agregamos en formato CSV, con ello ya podemos hacer nuestra expresión de filtrado.

Figura 3: Configurando el plugin "Form Value Relation"


Para hacer la expresión de filtrado, nos vamos al editor de expresiones, en donde va existir ahora una nueva función en la sección "custom", y con la ayuda que nos ofrece podemos armar nuestra expresión tal como se muestra en la figura siguiente:

Figura 4: Elaborando la expresión para ejecutar un filtro.


Ya creamos una relación entre ambas tablas, ahora en el campo de "NOMB_DIST", podemos generar un control de  tipo "Mapa de Valor", con la idea de generar una lista desplegable con el nombre de los distritos, para que cuando se vaya cambiando entre ellos, se muestre en el campo de "NOMB_CCPP" los valores existentes en la tabla que se enlazó.

Figura 5: Campos y tipos de controles para que funcione el filtro


Una vez realizado este procedimiento, nos vamos a nuestro escritorio del QGIS y en modo de edición y usando el identificador hacemos clic en uno de los centros poblados, veremos con ello que en el campo de "NOMB_CCPP", existe una lista desplegable de centros poblados que estarían presenten en dicho distrito, y si cambiamos el nombre de distrito, aparecerán otros nombres, con ello verificamos que nuestro filtro esta funcionando.

Figura 6: Resultado de ejecutar el filtro al seleccionar el valor de un "Distrito"



Ordenando nuestro formulario


Hasta el momento podemos decir que nuestros datos a  modo de formulario han sido personalizados, pero se podría darle una mejor presentación, con el objetivo de que sea más eficiente. Lo primero que debemos hacer es ir a "Campos" y luego nos vamos en la parte superior a la "Disposición del editor de atributos". Como verán existe una lista para elegir entre tres opciones, por defecto esta "Autogenerar", ahora nosotros lo vamos a cambiar a la opción "Diseñador de arrastrar y soltar", con ello nos aparecerá un panel lateral.

Figura 7: Opción de Diseñador de tipo arrastrar y soltar.


Ahora solo nos queda darle nombre a las etiquetas que tendrán nuestros datos a modo de pestañas, con la finalidad de agruparlo por el tipo de datos que existen, luego solo debemos arrastrar nuestros campos para ubicarlo en donde corresponde.

Figura 8: Generando las etiquetas y arrastrando los campos para agruparse.


Finalmente ya en nuestro escritorio de QGIS podemos ver los resultados, es decir nuestro formulario dividido en viñetas que agrupan a los campos con distintos tipos de datos.


Figura 9: Resultado final con las viñetas activas dentro de nuestro formulario personalizado.


Bueno espero que les resulte útil usar el modo de formulario personalizado con nuestros datos. Hasta otra oportunidad.


Referencias:




miércoles, 2 de diciembre de 2015

Formularios personalizados en QGIS 2.12, Parte 1


En la presente entrada y en una posterior vamos a conocer las ventajas de trabajar con la visualización de los atributos en modo de formulario dentro del QGIS, personalizando el mismo para un ingreso o edición de datos más ordenado y sobre todo eficiente.

Personalizando Formularios (Custom forms)


En esta entrada tendremos el objetivo de personalizar un formulario, el cual va contener datos sobre centros poblados, por lo tanto vamos a necesitar datos de tipo vectorial (puntos), en esta oportunidad emplearemos aquellos datos que se compartieron en una entrada anterior, donde vimos el tema sobre estadísticas para datos espaciales,  pero claro, con fines didácticos se editaron, por lo tanto, vamos a usar solo parte de esa información. 
Para quienes se interesan en practicar, los datos específicos (ccpp_huanuco_base.zip) pueden ser descargados desde aquí.

Dentro del QGIS cuando añadimos los datos para el ejercicio veremos algo parecido a la siguiente figura:

Fig. 1: Vista de los datos del ejercicio


Como primer paso vamos a conocer con mayor detalle el tipo de información que tenemos en la capa de centros poblados, en función a ello veremos las opciones que tenemos para su personalización. Si nos vamos a "propiedades" de la capa y luego a "campos" (Fig. 2), podremos conocer con mayor detalle las propiedades de nuestra tabla de atributos, en especial podemos resaltar sobre el tipo de información existente, como por ejemplo si son textos (String), números o fechas. Aunque para este caso, lo que nos interesa es ver cómo cada campo de información cuenta con la posibilidad de modificar el "control de edición" para nuestros datos.

Fig. 2: Vista de los campos presentes


Ahora iniciaremos modificando este "control de edición" en algunos campos de acuerdo al tipo de información que almacenan.

1. Empleando Mapa de Valor (Value map)


Dentro de nuestro datos podemos ver un campo que dice "CATEGORIA", el cual varía entre valores de "Pueblo", "Villa" y "Ciudad", por lo tanto podemos emplear este tipo de control o Wignet (Mapa de Valor). Para ello primero nos vamos al campo que requerimos editar (1), luego de toda la lista elegimos "Mapa de valor" (2), después tenemos la opción de "Cargar los datos desde la capa" (3), opción recomendada sobre todo si existe varios valores y siempre que toda las variantes posibles se encuentren en la capa, sino podemos adicionar manualmente o también a partir de datos externos como CSV;  cuando cargamos datos de la capa, debemos elegir la capa y el campo de donde vamos a extraer los valores (4), finalmente hacemos clic en el botón "Aceptar" (5) y la tabla de valores será incluida. 


Fig. 3: Uso del Mapa de valor con datos de la capa


Una vez realizado esta secuencia de pasos, nos dirigimos a nuestro visor de capas en QGIS, pero ahora vamos a ponerlo en modo de edición para apreciar los cambios, teniendo activo nuestro identificador de objetos nos dirigimos por ejemplo a la ciudad de Tingo María (Fig. 4), con ello se activará nuestro formulario y apreciaremos que en el campo de "CATEGORIA", existe la posibilidad de escoger entre las tres opciones mencionadas.

Fig. 4; Mostrando los valores disponibles indicados con el mapa de valor




2. Empleando Foto (Photo)

Ahora veremos lo fácil que es incorporar fotos dentro de nuestros datos, lo primero que debemos hacer una vez elegido este tipo de control, es definir la extensión de la imagen que vamos a incluir (Fig. 5), para ello sería importante ingresar un tamaño lo suficiente grande para que pueda apreciarse mejor.

Fig. 5: Configurando el tamaño de la imagen

Luego debemos ingresar la ruta de ubicación de nuestra imagen, se recomienda colocar toda la ruta completa, si bien es posible que en modo edición, una vez elegido un centro poblado como "Aucayacu",  nos dirigimos a la carpeta donde se ubican las fotos (Fig. 6), al hacer esto solo ingresa dicha carpeta que lo contiene y el nombre del archivo (Fig. 7). 

Fig. 6: Mostrando la opción para ubicar la ruta de las fotografías.


Fig. 7: Mostrando el formulario con la fotografía incorporada.



Tal como lo hicimos, si bien se logra visualizar la imagen, cuando por ejemplo queremos emplear otra herramienta o plugin para la visualización de eventos como el eVis (Fig. 8), empleado para optimizar el uso de este tipo de información, como por ejemplo enlazar a una aplicación que nos permita editar nuestra imagen. Bueno para quienes están interesados en profundizar en el uso de este plugin les recomiendo ingresar aquí.


Fig. 8: Ejemplo del uso del plugin eVis para visualizar las fotografías.


Para quienes deseen practicar con las fotos (cortesía de Panoramio), lo pueden descargar desde aquí.



3. Empleando Intervalo (Range)


Para valores numéricos tenemos la opción de generar un rango de valores (mínimo y máximo), por lo tanto, en este caso para el campo denominado "Altitud_m", elegimos "Intervalo", luego debemos indicar el rango de valores posibles para la zona que estamos evaluando (Fig. 9), de la misma manera podemos hacerlo par el campo denominado "Precipi_mm".

Fig. 9: Ajuste para el uso de intervalos.


Debido a que elegimos como "Deslizador" a nuestro control de edición, cuando seleccionamos un centro poblado en modo de edición, podemos ver que podemos ir deslizando sobre una barra hasta indicarle un valor final.

Fig. 10: Detalle del uso de un control tipo deslizador para cambiar datos numéricos


4. Uso de Fecha/Hora (Date/Time)


Cuando nuestro campo está configurado para ingresar fechas, tenemos la opción de poder ingresarlo en nuestro formulario de una manera más adecuada. Existe el campo que se denomina "Fundacion", con el objetivo de ingresar el dato sobre la fecha de fundación del centro poblado. Cuando nos dirigimos a la opción de Fecha/Hora, debemos personalizarlo, para ello es importante activar el botón de ayuda que nos permite ver el formato que podemos usar y una vista previa del mismo (Fig. 11). Del mismo modo podemos activar la casilla de "pop-up de calendario" que nos permitirá que el ingreso de la fecha sea con una ayuda visual, también se considera importante activar lo de  "valores nulos", sobre todo si no se cuenta con esa información, porque sino por defecto se coloca la fecha actual.
Fig. 11: Configurando el formato para usar el control de fecha.

Por último ahora podemos ingresar en modo de edición y hacemos clic en un centro poblado, en esta oportunidad si elegimos "Tingo María", del cual conozco bien su fecha de fundación, debido a que es mi ciudad natal y a propósito es una ciudad hermosa. Bueno ahora solo nos queda ingresar en nuestro formulario la fecha, y claro ayudado por el calendario en modo pop-up (Fig. 12), luego guardamos la edición para que se actualice la información.

Fig. 12: Ingresando la fecha ayudados por un calendario.



Bueno, para esta primera parte es todo lo que quería mostrar, en una siguiente entrada veremos otras opciones como por ejemplo la posibilidad de enlazar datos externos, para ello podemos emplear la "Relación de valores" y también veremos como podemos ordenar los campos de nuestro formulario para una mejor presentación.

Hasta la próxima y como siempre les recomiendo revisar las referencias para mayor información.


Referencias: