Si has estado trabajando en QGIS, es posible que hayas tenido la necesidad de extraer valores raster en alguna capa de tipo vectorial. Puede que hayas estado recurriendo a otros complementos específicos como Point Sampling Tool.
Sin embargo, desde la versión 3.4 (Madeira) existe una función específica que permite extraer los valores de un objeto ráster en una capa de tipo vectorial de forma rápida y sencilla, sin necesidad de recurrir a complementos o herramientas externas.
Función raster_value para extraer valores ráster
La función que realiza esta acción se denomina raster_valuey puede ser utilizada desde la calculadora raster para extraer los valores en un nuevo campo de la tabla de atributos. Así, esta función permite devolver un valor muestreado de una capa ráster un nuevo campo, desde un punto o coordenada especifica.
Para ver cómo utilizar esta función, vamos a extraer los valores raster de un Modelo Digital del Terreno (MDT) en una capa de estaciones automáticas de AEMET, de tipo puntual.

Para utilizar está función, es necesario que las capas que se van a utilizar se encuentren en el mismo sistema de referencia o bien se utilicé alguna función de transformación (continua leyendo). De lo contrario no podremos realizar el procedimiento hasta que se hayan reproyectado las distintas capas a un mismo sistema de referencia.
Para aplicar la función raster_value aplicamos la sentencia:
raster_value(‘MDT200’,1, centroid($geometry))
Los argumentos a utilizar son:
- La capa ráster sobre la que realizar la extracción
- La banda de información que extraer. Por defecto, 1.
- Las coordenadas x e y del objeto. Por defecto se utiliza el centroide (aplicable a capas de tipo punto, líneas y polígonos).

En este caso, utilizamos la función auxiliar centroid que nos permitirá extraer el valor ráster del centroide de cualquier geometría de tipo vectorial, ya sea una capa de puntos, líneas o polígonos.

Una vez aplicada la función, los valores aparecerán en el nuevo campo llamado mdt. De esta forma, en nuestra tabla de atributos podremos consultar los valores obtenidos.
Extracción de valores ráster con capas en distintas proyecciones: función transform
Aunque es siempre recomendable trabajar con capas en un sistema de referencia común, es posible que queramos realizar una extracción con capas en distintas proyecciones. Este procedimiento puede ser realizado con la ayuda de la función transform, que permite la conversión de una geometría desde un sistema de referencia a otro.
Los argumentos utilizados para la función transform son:
- Geometría (en este caso el centroide)
- Sistema de referencia origen
- Sistema de referencia objetivo
Para realizar el procedimiento vamos a utilizar la misma capa de estaciones, pero en este caso con un sistema de referencia distinto. Vamos a utilizar la función transform para modificar el sistema de referencia EPSG:4258 (ETRS89 – coordenadas geográficas) a EPSG:25831 (ETRS89 – coordenadas UTM), sin necesidad de reproyectar la capa.
La sentencia a utilizar quedaría así:
raster_value(‘MDT200’,1,transform(centroid($geometry), ‘EPSG:4258’, ‘EPSG:25831’))

Del mismo modo, obtenemos en un nuevo campo los valores ráster que coinciden con el centroide de cada uno de los elementos. Ahora, ya sabes como extraer valores ráster en QGIS sin necesidad de utilizar herramientas externas y con la posibilidad de utilizar capas en distintas proyecciones.
Si quieres adentrarte en el mundo GIS de la mando del software libre de moda, puedes consultar el temario de nuestro Curso de QGIS: Introducción a los Sistemas de Información Geográfica. Si estáis interesados en el uso profesional de expresiones con QGIS podéis consultar el temario de nuestro curso de QGIS Avanzado.
¿Quieres comentarnos algo? Adelante!