Cómo extraer valores de una imagen ráster a puntos con QGIS

ráster a puntos con QGIS

De entre todos los formatos de archivo con los que podemos trabajar en un SIG, de forma más común, empleamos datos vectoriales y ráster. Mientras que los primeros utilizan geometría (puntos, líneas y polígonos) para representar la realidad, los datos ráster toman un enfoque diferente y se componen de una matriz de píxeles (celdas).

Cada una de estas celdas contiene un valor que representa las condiciones o características de la cubierta o espacio que cubren.

ráster a puntos con QGIS matriz

Pues bien, una de las demandas generalizadas de los usuarios de un SIG, es la de trasladar los valores que guardan esos píxeles o celdas (datos ráster) a una capa de tipo vectorial.

En el presente post, vamos a comentarte cómo podemos extraer los valores de una imagen ráster a una capa vectorial de tipo punto empleando el software GIS Open Source líder, QGIS.

El plugin Point Sampling Tool

El plugin Point Sampling Tool es capaz de recopilar atributos de una capa vectorial de tipo polígono y valores de una imagen ráster a partir de una serie de puntos de muestreo.

Este plugin crea una nueva capa de puntos en la que se guardarán los atributos o valores tomados de esa imagen o capa vectorial de tipo polígono.

ráster a puntos con QGIS point sampling tool

Los puntos de muestreo deben de encontrarse previamente recogidos en una capa vectorial de tipo punto, por lo que podemos emplear ubicaciones tomadas por GPS en campo, situándolo en una gran posición en la combinación del flujo de trabajo campo-gabinete.

El plugin Point Sampling Tool puede descargarse e instalarse desde el Administrador de complementos de QGIS, a través del menú Complementos.

PST install

Una vez instalado, puedes encontrar el plugin en el menú Complementos/Analyses/Point Sampling Tool.

Analyses

¿Cómo funciona Point Sampling Tool para convertir de raster a puntos con QGIS?

Para mostrarte la funcionalidad de este potente plugin, vamos a ponerte el ejemplo de la extracción de la altitud en una serie de puntos distribuidos en el territorio a través de un Modelo Digital del Terreno (MDT).

Lo primero que debemos hacer es cargar en la interfaz de QGIS los datos que vamos a emplear para la realización del estudio.

MDT leon

Si lo que tienes es un listado de coordenadas X e Y de puntos tomados en campo, puedes generar con él una capa vectorial a través de la herramienta Añadir capa de texto delimitado de QGIS. Para ello puedes seguir nuestro post Cómo crear una capa a partir de una tabla con coordenadas XY.

Una vez tenemos los datos preparados ejecuta el plugin desde el menú Complementos/Analyses.

En la ventana de la herramienta debemos de especificar los siguientes parámetros:

  • Layer containing sampling points: Indica aquí la capa vectorial de tipo punto con los puntos de muestreo.
  • Layers with fields/bands to get values from: Indica aquí el ráster del que queremos extraer los valores de celda, en el caso de nuestro ejemplo, el MDT.
  • Output point vector layer: Indica la ruta donde quieres guardar el resultado, así como el nombre que recibirá la nueva capa
  • Puedes marcar la casilla Add created layer to the ToC para que se añada el resultado de forma automática a QGIS una vez ejecutado y finalizado el proceso.

PST Window

Si accedes a la pestaña Fields puedes modificar el nombre del campo que recogerá los valores de altitud en la tabla de atributos de la nueva capa, indicándolo en el parámetro name.

PST files

Pulsa el botón Aceptar para iniciar la ejecución del algoritmo.

Una vez se añada el resultado a la interfaz de QGIS, accede a la tabla de atributos para comprobar que el proceso se ha realizado con éxito.

PST result

 

Let’s connect!

Date de alta en nuestro newsletter
y recibe este ebook gratuito

Y una vez al mes recibirás las últimas novedades del sector GIS y de nuestros cursos

12 comentarios en “Cómo extraer valores de una imagen ráster a puntos con QGIS”

  1. Estimado Diego,

    Me han parecido geniales tus aportes, muy fáciles de entender.
    Me ha venido una duda en Qgis, me gustaría saber como puedo ingresar a un punto en shapefile, información en formato tabla, ya que vi en google earth unas imágenes que venían con un formato, que claramente fueron editadas en Qgis o ArcGIS. Si tienes conocimiento respecto a esto por favor ayúdame!!!

    Saludos cordiales de Chile!!
    Gracias por tus aportes.

    • Hola Sebastián,

      Me alegro de que el contenido haya sido de utilidad.
      Para asociar información a un shapefile cualquiera que sea su geometría, puedes hacerlo a partir de una unión de tablas (si esta parte de una tabla .dbf, .xls, etc…Para ello debes de contar con un campo común (campo llave) en la capa y la tabla a unir.

      Otra opción, si son dos capas vectoriales, es que realices la unión a través de localización espacial entre ambas (que tengan alguna relación topológica), es decir, una unión por localización.

      Estas herramientas están disponibles tanto en ArcGIS como QGIS…

      Un saludo!

    • Hola Paulina,

      Me alegro de que nuestro blog haya sido de ayuda, gracias por seguirnos y por tu comentario.

      Un saludo!

  2. REM Probado en consola de QGIS version 2.18 (OSGEO4W Shell)
    REM Probado en Sistema Operativo Windows
    REM Carpeta donde estan la imagen (sustituya por su directorio de archivos): C:/Users/Administrator/Documents/surcos/
    REM Nombre del archivo dsm: dtm_phase1_vm_15m_inside.tif
    REM Nombre del archivo de salida csv: dtm_phase1_vm_15m_inside.csv
    REM Nombre del archivo de salida shp: dtm_phase1_vm_15m_inside.shp
    REM ojo que algunas direcciones (path) tiene separador / (slash) y otras \ (backslash), respetelos para que no tenga problemas

    REM convierte la imagen dsm (modelo de superficie) de formato TIF a formato CSV
    gdal2xyz.bat -band 1 -csv C:\Users\Administrator\Documents\surcos\dtm_phase1_vm_15m_inside.tif C:/Users/Administrator/Documents/surcos/dtm_phase1_vm_15m_inside.csv

    REM elimina los valores nulos del archivo csv (Z = 0)
    sed -i ‘/,0\s*$/d’ C:/Users/Administrator/Documents/surcos/dtm_phase1_vm_15m_inside.csv

    REM agrega encabezado al archivo con nombres de columna x,y,z
    sed -i ‘1 i\x,y,z’ C:/Users/Administrator/Documents/surcos/dtm_phase1_vm_15m_inside.csv

    REM covierte el archivo csv a formato shp
    ogr2ogr -s_srs EPSG:32749 -t_srs EPSG:32749 -dialect SQLite -sql «SELECT CAST(z AS float) as z, MakePoint(CAST(x AS float),CAST(y AS float)) FROM dtm_phase1_vm_15m_inside» C:/Users/Administrator/Documents/surcos/dtm_phase1_vm_15m_inside.shp C:/Users/Administrator/Documents/surcos/dtm_phase1_vm_15m_inside.csv

    • Hola Federico,

      Sí, es posible. Puedes reclasificar el ráster utilizando la vecindad que consideres conveniente para después extraer ese valor a partir de una capa de puntos vectoriales.

      Un saludo!

        • Hola Federico,

          QGIS no cuenta con una herramienta específica de reclasificación ráster, para ello hay que dirigirse a los algoritmos de GRASS, concretamente el denominado r.reclass.
          En este algoritmo, debes de incluir un archivo de texto que hayas generado con las reglas de reclasificación.

          Es cierto que no hay documentación apenas sobre estas herramientas, en nuestro caso, en nuestras formaciones abarcamos este y otras herramientas de trabajo ráster.

          Un saludo!

  3. Hola Fabio, fenomenal y funciona muy bien en QGIS3, pero cuando utilizo «Add raster values to point» de SAGA en QGIS 3, me da error:
    «The following layers were not correctly generated.
    C:/Users/Cmath/AppData/Local/Temp/processing_fe7924e6f5aa42718bdb24b5a4e0b2ab/bd3d2fe32ae24707a13cfbb96390f001/RESULT.shp
    You can check the ‘Log Messages Panel’ in QGIS main window to find more information about the execution of the algorithm.»
    Qué podría hacer para solucionarlo?
    En https://issues.qgis.org/projects/qgis/issues no me dan solución.

    Gracias.

  4. Hola Fabio,

    Podrías convertir la imagen raster a ASCII y, después, a través de Añadir capa de texto delimitado generar una capa de puntos con su campo Z.

    Por otro lado, también podrías convertir el raster en vectorial, calcular el centroide de cada celdilla/polígono y extraer el valor del raster siguiendo este tutorial.

    Un saludo!

Los comentarios están cerrados.