Calculadora · Medio
Chuleta de expresiones de QGIS
Geometría, texto, números, condiciones, fechas y agregados: las fórmulas que más se usan.
Por Bernabé Hinojosa · Actualizado el 21/10/2026
Geometría
| Expresión | Devuelve |
|---|---|
$area | Área elipsoidal según la configuración del proyecto |
area($geometry) | Área planimétrica en unidades del SRC de la capa |
$length / $perimeter | Longitud de líneas / perímetro de polígonos |
$x, $y | Coordenadas de un punto |
x(centroid($geometry)) | X del centroide de un polígono |
num_points($geometry) | Número de vértices |
x(transform($geometry, @layer_crs, 'EPSG:4326')) | Longitud en grados aunque la capa esté en UTM |
round($area / 10000, 2) | Hectáreas con 2 decimales |
Texto
| Expresión | Resultado |
|---|---|
"nombre" || ' (' || "municipio" || ')' | Concatenar. Si un valor es NULL, todo da NULL. |
concat("nombre", ' - ', "codigo") | Concatenar ignorando los NULL |
upper(), lower(), title() | Mayúsculas, minúsculas, Tipo Título |
trim("campo") | Quitar espacios al principio y al final |
replace("campo", 'C/', 'Calle ') | Sustituir texto |
left("ref", 5), substr("ref", 6, 2) | Extraer partes del texto |
lpad(to_string("cod"), 5, '0') | Rellenar con ceros: 8019 → 08019 |
length("campo") | Número de caracteres |
Números y conversión
to_int(), to_real(), to_string(), round(x, 2), floor(), ceil(), abs(), sqrt(), format_number($area, 2) (con separador de miles).
Condiciones
CASE WHEN "sup" < 500 THEN 'Pequeña' WHEN "sup" < 5000 THEN 'Mediana' ELSE 'Grande' END
if("estado" = 1, 'Activo', 'Baja') · coalesce("tel1", "tel2", 'Sin teléfono') (primer valor no nulo)
Fechas
now() · to_date('2026-10-17') · year("fecha") · format_date("fecha", 'dd/MM/yyyy') · day(now() - "fecha") (días transcurridos)
Numerar y contadores
@row_number (número de fila) · $id (identificador interno) · 'P-' || lpad(to_string(@row_number), 4, '0') → P-0001
Datos de otras capas (agregados)
aggregate('pozos', 'count', "id", filter:=intersects($geometry, geometry(@parent))): cuenta los pozos dentro de cada polígono.overlay_intersects('zonas', "nombre"): lista de nombres de la capa zonas que tocan cada objeto (QGIS 3.16 o posterior).sum("poblacion", group_by:="provincia"): suma por grupos dentro de la misma capa."poblacion" / sum("poblacion") * 100: porcentaje sobre el total.