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.
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.
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.
Una vez instalado, puedes encontrar el plugin en el menú Complementos/Analyses/Point Sampling Tool.
¿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.
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.
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.
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.
Tutor de los cursos de QGIS, QGIS avanzado, QGIS aplicado a Urbanismo y Catastro, PostGIS, Teledetección con QGIS y Google Earth Engine, PostGIS y ArcGIS. Licenciado en Geografía y Master en SIG y Ordenación del Territorio. Echa un vistazo a todos nuestros cursos de SIG online.
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!
Muchas gracias por la información, era justo lo que estaba buscando. Saludos
Hola Paulina,
Me alegro de que nuestro blog haya sido de ayuda, gracias por seguirnos y por tu comentario.
Un saludo!
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
Usando los puntos de la capa vectorial es posible extraer valores de un grupo de pixeles vecinos?
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!
Sabes de algun tutorial donde explique como reclasificar el raster? He intentado, pero aun no consigo.
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!
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.
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!
Hola.
Se puede extraer todos los puntos del raster (como el algoritmo raster to point de arcgis) ?
Saludos,
Fabio