Ya hemos comentado en varias ocasiones la potencialidad y el abanico de posibilidades que nos ofrece QGIS en la visualización, análisis y edición de información. Una parte importante que todo usuario de QGIS debe conocer son las diferentes opciones contenidas en el constructor de consultas que puede en algunos momentos resultarnos de gran utilidad en nuestro trabajo diario. La siguiente publicación trata de ilustrar y enseñar las diez de las funciones que a mi juicio considero imprescindibles.
Tabla de contenidos
- 1 1. Cálculo geométrico: área y perímetro
- 2 2. Cálculo geométrico: longitud y coordenadas vértices.
- 3 3. Cálculo geométrico: coordenadas x e y
- 4 4. Cadenas de valores: formato numérico.
- 5 5. Reordenar id autonuméricos.
- 6 6. Concatenar campos.
- 7 7. Expresiones condicionales.
- 8 8. Funciones de fecha y tiempo.
- 9 9. Añadir funcionalidad a geometría seleccionada en Atlas.
- 10 10. Editor de funciones.
- 11 Compártelo:
1. Cálculo geométrico: área y perímetro
Para calcular el área de un polígono lo haremos mediante la función $area localizada en el menú “Geometría” dentro de la calculadora de campos. El sistema de unidades tendremos que que definirlo previamente, igual que el sistema de referencia de la capa, ya que influye en el cálculo de nuestra entidad.
Del mismo modo podremos calcular el perímetro de nuestro polígono mediante la función $perimeter localizada en el mismo menú.
2. Cálculo geométrico: longitud y coordenadas vértices.
La función $length nos permite calcular la longitud de una geometría tipo líneas. Este cálculo vendrá determinado por el sistema de referencia utilizados y las unidades de medida. En el siguiente ejemplo podéis observar una parcela acotada mediante esta función.
Por otro lado, la función geom_to_wkt nos devuelve las coordenadas de los vértices que encierran a la parcela, sin necesidad de exportarlo a GML y proceder la lectura en un editor de texto.
3. Cálculo geométrico: coordenadas x e y
Mediante la función $x e $y es posible calcular las coordenadas UTM ETRS89 de cualquier geometría tipo punto. En el siguiente ejemplo hemos añadido la situación (coordenada x e y) de los vértices geodésicos siguientes.
4. Cadenas de valores: formato numérico.
Mediante la función format_number es posible ajustar nuestros valores numéricos a un formato estándar. Esta opción se localiza dentro de la calculadora de campos, en el menú “Cadena”.
Dicho formato quedaría definido por separadores de miles (.) y decimales (,). Veamos un ejemplo de ello, partiendo de un campo tipo texto dónde he introducido unos valores numéricos pasaremos a transformarlo a dicho tipo.
5. Reordenar id autonuméricos.
Mediante la función $rownum es posible darle orden autonumérico a una columna. En el siguiente ejemplo podemos ver como se enumeran una serie de vértices geodésicos empleado en la tarea anterior. Es muy útil para capas con altos números de geometrías.
6. Concatenar campos.
Una manera de mostrar información más completa para cada campo es concatenando una serie de campos. En el siguiente caso vamos a generar un nuevo campo en el que añadiremos el nombre de Provincia + Población, guiándonos por una serie de campos independientes. La concatenación en QGIS se realiza mediante el operador ||.
7. Expresiones condicionales.
Otra de las posibilidades que nos ofrece el constructor de expresiones de QGIS es emplear funciones condicionales. Una de las más empleadas es la función CASE que evalúa una sentencia condicional y en caso de cumplirse nos devuelve el resultado especificado.
La expresión sigue la siguiente estructura:
CASE
WHEN condición THEN resultado 1
ELSE resultado 2
END
En el siguiente ejemplo utilizaremos la expresión condicional para diferenciar aquellas provincias en las que su lengua predominante es la castellana de aquellas regionales.
8. Funciones de fecha y tiempo.
Mediante la función format_date es posible ajustar nuestros valores numéricos a un formato personalizado. Esta opción se localiza dentro de la calculadora de campos, en el menú “Fecha y hora”.
En este sentido, se nos ofrece un listado informativo con las diferentes opciones para calcular nuestro campo teniendo como entrada un tipo fecha (ej. 2019-04-23). Con la siguiente expresión actualizamos la información al tipo que indicamos:
9. Añadir funcionalidad a geometría seleccionada en Atlas.
Existe otra opción muy interesante en el constructor de consultas denominada @atlas_featureid. Esta expresión nos permite relacionar el objeto filtrado en la composición de atlas y añadirle un estilo diferente al resto.
Veamos un ejemplo muy sencillo desde una composición de atlas. En ella queremos representar los límites provinciales de la Península Ibérica y que la geometría filtrada se diferencie del resto mediante un color rojo. Para ello utilizaremos la expresión siguiente:
Consiguiendo el siguiente resultado en nuestra composición:
10. Editor de funciones.
Por último, no quería acabar la publicación sin hacer mención al editor de funciones de QGIS, interfaz desde la que el usuario puede empezar a programar sus propias funciones con Python.
En esta ocasión os traigo un sencillo ejemplo, en el que a partir de una capa shapefile que contiene los límites provinciales y su número de habitantes programaremos una simple función (Python) para calcular el número de habitantes por kilómetro cuadrado.
Esta función quedará alojada en el menú de operadores y expresiones pudiendo trabajar con ella desde el ámbito del etiquetado y simbología de la capa.
Estas son unas de las expresiones que considero imprescindibles a la hora de trabajar con QGIS. Algunas las he puesto en funcionamiento a través de simples sentencias, pudiendo profundizar en ellas si el proyecto lo requiere. ¿Y tú? ¿Añadirías una diferente a la lista?.
Buen aporte.
La función $rownum no me aparece en Qgis 3.16
Hola! Quería consultar si podrían ayudarme a generar las referencias de un mapa a partir de las etiquetas de una capa shape hechas con el «campo autonumérico».
Desde ya gracias y buenísima la información de este post!
Cómo puedo extraer el campo Z de mis curvas de nivel en Shp con la calculadora, ya que cuando doy identificar la línea de cada curva tiene su elevación. Espero su ayuda, gracias