Saltar al contenido
Volver al blog
QGIS
Tutorial
GeoAI

De raster a vector en QGIS: todos los métodos y cuándo funciona cada uno

Tres paneles: un raster de cobertura del suelo dibujado como una cuadrícula de píxeles coloreados, el mismo límite trazado por polygonize como una escalera y el mismo límite de nuevo como una línea verde suave después de dissolve, un filtro de área, simplify y smooth.
Tres paneles: un raster de cobertura del suelo dibujado como una cuadrícula de píxeles coloreados, el mismo límite trazado por polygonize como una escalera y el mismo límite de nuevo como una línea verde suave después de dissolve, un filtro de área, simplify y smooth.

Para convertir un raster en polígonos vectoriales en , abre Raster > Conversion > Polygonize (Raster to Vector), elige tu banda, asigna un nombre al campo de salida y ejecútalo. Obtendrás un polígono por cada grupo conectado de píxeles que comparten un valor, con ese valor escrito en la tabla de atributos. Es la respuesta correcta para un raster clasificado y la respuesta equivocada para una fotografía. La mayoría de los problemas aparecen porque no se sabe cuál de los dos se tiene.

En TerraLab desarrollamos un QGIS plugin llamado AI Segmentation. Es una fila de la última tabla de esta página, descrita como las demás.

Qué significa de raster a vector

Un raster es una cuadrícula de píxeles. Un vector es un conjunto de puntos, líneas y polígonos con coordenadas y atributos. Convertir uno en el otro significa decidir dónde se sitúa un límite, y una cuadrícula de píxeles no tiene límites propios más allá de los bordes de sus celdas.

Cada método que aparece a continuación se diferencia únicamente en lo que considera un borde. Polygonize usa cualquier lugar donde dos píxeles vecinos tengan valores diferentes, contour usa una elevación elegida y un modelo de segmentación usa el punto donde termina un objeto. Por eso solo el último funciona con una fotografía.

Elige tu método

Lo que tienesEl método que funcionaLo que cuesta
Raster clasificado o temático (cobertura del suelo, una reclasificación de pendiente, una máscara)Raster > Conversion > Polygonize (Raster to Vector)Gratis, incluido en el núcleo de QGIS
Raster continuo (NDVI, pendiente, una banda de reflectancia)Primero Reclassify by table, después polygonizeGratis, incluido en el núcleo de QGIS
DEM o cualquier superficie de elevaciónRaster > Extraction > Contour, o Contour PolygonsGratis, incluido en el núcleo de QGIS
Mapa de papel escaneado o un planoGRASS r.thin más r.to.vect, o una herramienta de trazado fuera de QGIS. Nada del núcleo de QGIS lo hace bienGratis y lento. Existe el trazado con AI de pago
Ortofoto, imágenes de dron o satéliteUn modelo de segmentación. Polygonize no es aplicableLos plugins gratuitos necesitan una tarjeta NVIDIA. Los plugins cloud tienen niveles gratuitos y después una suscripción

La mayoría de los lectores necesita la primera fila y puede detenerse después de las dos secciones siguientes.

Polygonize, la respuesta predeterminada

El algoritmo de QGIS es Polygonize (raster to vector), con id gdal:polygonize, y envuelve la utilidad de GDAL gdal_polygonize. Crea un polígono por cada región conectada de píxeles que comparte un valor común y escribe ese valor en un atributo.

La página de documentación de QGIS 3.44 para la conversión de raster de GDAL, que muestra la entrada Polygonize (raster to vector), su menú predeterminado y la tabla de parámetros con INPUT, BAND, FIELD y EIGHT_CONNECTEDNESS
La referencia para todos los valores predeterminados citados a continuación: la documentación de QGIS 3.44 para gdal:polygonize, capturada el 23 de agosto de 2026. Menú predeterminado, Raster y después Conversion.

Open the tool

Raster > Conversion > Polygonize (Raster to Vector). También está en la Processing Toolbox, dentro de GDAL, Raster conversion.

Pick the band

Band 1, salvo que tus clases estén en otro lugar. Solo se usa una banda, así que un raster RGB debe reducirse primero a una banda de clases.

Name the field

DN es el valor predeterminado. Cámbialo por un nombre que sigas entendiendo dentro de seis meses, como landcover_code.

Decide on 8-connectedness

Está desactivado de forma predeterminada, por lo que los píxeles deben compartir un borde completo para unirse. Actívalo y también se unirán los píxeles que se tocan diagonalmente. En elementos diagonales estrechos, dejarlo desactivado divide un mismo elemento en una cadena de polígonos.

Save to a real file

El valor predeterminado es un layer temporal. En un raster grande esto produce decenas de miles de entidades, así que escribe directamente en un GeoPackage.

El diálogo Polygonize (Raster to Vector) de QGIS. El layer de entrada muestra Land cover 10 m [EPSG:32631], Band number es Band 1 (Palette), el campo que se creará se llama landcover_code, Use 8-connectedness está desmarcado y la salida se escribe en un GeoPackage.
Los cuatro parámetros importantes en un recorte de 10 m de ESA WorldCover del valle del Drome. El campo cambia de DN a landcover_code y la salida va directamente a un GeoPackage en lugar de a un layer temporal.

Dos cosas te ahorran tiempo aquí.

Define un valor NoData para la clase que no quieras. GDAL utiliza la máscara de validez de la banda, de modo que los píxeles NoData se omiten en lugar de convertirse en un enorme polígono de fondo que rodea todo lo demás. Esta es la queja más habitual sobre la salida de polygonize, y es una propiedad del raster, no una configuración de la herramienta.

La página de referencia de gdal_polygonize en gdal.org, que muestra la sinopsis y las opciones -8, -nomask y -mask
La utilidad de GDAL que hay debajo del algoritmo de QGIS, capturada el 23 de agosto de 2026. El indicador -nomask es el origen del comportamiento de la máscara de validez.

Asegúrate de que la banda sea de tipo entero. gdal:polygonize siempre escribe un campo entero, así que convierte una banda float al entrar. Esto falla de dos formas diferentes según cómo almacene sus valores tu raster, y ninguna de las dos genera una advertencia. Float32 pasa primero por Reclassify by table, que es la siguiente sección.

El problema de la escalera y cómo corregirlo

Polygonize traza los límites de los píxeles. Nada más. Por eso el borde diagonal de un campo vuelve como una sucesión de escalones en ángulo recto, uno por píxel, y una clasificación Sentinel de 10 m te da escalones de 10 m.

Salida de Polygonize sobre un raster de cobertura del suelo de 10 m a aproximadamente 1:1.500. Una parcela de cultivo rosa se encuentra entre una cobertura arbórea verde y un pastizal amarillo, y cada límite diagonal es una sucesión de escalones cuadrados de un píxel de ancho.
Salida sin limpiar de gdal:polygonize, con 3.551 polígonos, sobre el raster ESA WorldCover del que procede. Cuenta los escalones de cualquier diagonal: cada uno es un píxel de 10 m.

La salida es correcta. La herramienta dibuja exactamente lo que dice el raster. Simplemente no parece un mapa y ninguna configuración dentro de polygonize lo cambia. La solución consiste en ejecutar después cuatro algoritmos de geometría vectorial, en este orden.

1. Dissolve (native:dissolve). Define el campo de dissolve como el campo de clase que acabas de crear. Los polígonos vecinos de la misma clase se fusionan en una entidad por clase. Ejecútalo primero, mientras la geometría todavía es exacta, porque fusionar bordes simplificados deja slivers a lo largo de cada límite compartido. Si quieres mantener cada parcela separada en lugar de obtener una entidad multiparte por clase, marca Keep disjoint features separate en los parámetros avanzados.

2. Filter by area (native:extractbyexpression, en Vector selection). Expresión:

$area > 500

Las unidades son las unidades del CRS del layer, así que usa un CRS proyectado o el número no significará nada. Define el umbral según lo que sea una parcela real en tus datos. En una clasificación de 10 m, 500 m2 son cinco píxeles, aproximadamente el punto en el que deja de haber ruido y empiezan a aparecer elementos. La figura siguiente utilizó 2.000 m2 sobre el mismo raster, porque con 500 los slivers supervivientes se cruzaban después de simplificar. Mira el histograma de tus propias áreas en lugar de copiar cualquiera de los dos números. Si el raster deja píxeles individuales de otra clase dentro de una parcela, native:deleteholes después de este paso los elimina.

3. Simplify (native:simplifygeometries). La tolerancia predeterminada es 1.0 en las unidades del layer. Configúrala aproximadamente con el tamaño de un píxel y los escalones se convertirán en tramos rectos, con un desplazamiento del límite menor de lo que un lector puede percibir. El menú del método ofrece Douglas-Peucker (basado en distancia), Visvalingam (basado en área) y snap to grid. Visvalingam conserva mejor la forma de los elementos pequeños cuando aumentas la tolerancia.

4. Smooth (native:smoothgeometry). Úsalo solo en elementos que sean realmente curvos: arroyos, costas, parcelas de vegetación. Offset tiene un valor predeterminado de 0.25, y las iteraciones controlan cuánto se redondea. Define Maximum node angle to smooth en 90 para que cualquier esquina más aguda permanezca afilada. Así evitas que la herramienta redondee las esquinas de edificios y parcelas.

Si también quieres parcelas sólidas sin huecos interiores, native:deleteholes elimina los huecos por debajo de un área mínima, y 0.0 los elimina todos.

La misma extensión de cobertura del suelo después de la limpieza. Los contornos de los polígonos ahora recorren la cuadrícula de píxeles como curvas suaves, que sigue siendo visible debajo, y los pequeños polígonos de ruido han desaparecido.
La misma extensión, con la misma simbología, después de Dissolve, un filtro de área de 2.000 m2, deleteholes, Simplify a 10 m y Smooth con un ángulo máximo de nodo de 90. El número baja de 3.551 a 724 y los escalones se leen como curvas.

Reclasifica primero cuando el raster sea continuo

Polygonize sobre un raster continuo falla de una de dos formas, y cuál obtienes depende de cómo estén almacenados los valores.

Almacenado como números enteros escalados, que es como se distribuyen realmente los productos NDVI, obtienes un polígono por casi cada píxel, porque casi ningún par de píxeles comparte un valor. Medimos 39.801 polígonos a partir de 40.000 píxeles en una escena Sentinel-2.

Almacenado como floats sin procesar entre -1 y 1, la conversión a entero aplana cada valor a -1, 0 o 1 antes de que empiece el trazado. La misma escena volvió como 238 polígonos en dos clases. Parece un resultado limpio, pero no lo es: tus datos han desaparecido.

Lo mismo ocurre con la pendiente, la elevación, la temperatura o una banda de reflectancia sin procesar. La herramienta no ha fallado en ninguno de los dos casos. Traza los límites entre valores enteros y un raster continuo no tiene valores enteros útiles que trazar.

Vista cercana de un raster NDVI a aproximadamente 1:1.000 sobre terrenos agrícolas, con una parcela arbolada verde oscuro junto a campos claros. Cada píxel de 10 m tiene su propio contorno de polígono, por lo que el marco se lee como una cuadrícula. La entrada del panel de layers muestra ndvi_polygonized con 39801 entidades.
NDVI de una escena Sentinel-2 del 11 de agosto de 2025, almacenado como números enteros escalados, tal como se distribuyen los productos NDVI, y polygonized directamente. 39.801 polígonos de 40.000 píxeles, porque casi ningún par de píxeles tiene el mismo valor.

Convierte primero la superficie continua en clases con Reclassify by table, id native:reclassifybytable. La tabla de reclasificación tiene tres columnas, mínimo, máximo y nuevo valor, y acepta -inf, inf y nan para NoData. Una máscara de vegetación tiene tres filas:

MinimumMaximumValue
-inf0.21
0.20.52
0.5inf3
El diálogo Reclassify by Table de QGIS con el raster NDVI Float32 como entrada y Advanced Parameters abierto, donde se muestran los límites de rango definidos como min menor que value menor o igual que max, y Output data type definido como Byte. El editor de tabla fija aparece encima con tres filas: menos infinito a 0.2 da 1, 0.2 a 0.5 da 2 y 0.5 a infinito da 3.
La máscara de vegetación de tres filas, introducida en la tabla fija. Los dos valores predeterminados que conviene cambiar están en la sección avanzada: Output data type, aquí definido como Byte, y Range boundaries.

Hay dos valores predeterminados que debes cambiar en los parámetros avanzados. Output data type tiene Float32 por defecto, así que configúralo como Byte o Int16 para que polygonize funcione correctamente. Range boundaries tiene min < value <= max por defecto, lo que decide en qué lado de 0.2 cae un píxel exactamente igual a 0.2.

Después aplica polygonize al raster reclasificado y ejecuta la limpieza anterior.

Contornos para un DEM

Para la elevación, no uses polygonize. Usa Contour en Raster > Extraction > Contour, id gdal:contour. El intervalo predeterminado es 10.0 en las unidades del raster y la elevación se escribe de forma predeterminada en un campo llamado ELEV.

El diálogo Contour de QGIS con Copernicus DEM 30 m como layer de entrada, el intervalo entre líneas de contorno definido en 10, el nombre del atributo ELEV y Advanced Parameters abierto, donde se muestra Produce 3D vector sin marcar.
gdal:contour sobre un tile Copernicus DEM 30 m del Drome. Intervalo 10 en las unidades del raster, elevación escrita en ELEV y Produce 3D vector desactivado.

Marca Produce 3D vector si quieres la altura en cada vértice. Déjalo desactivado para un mapa impreso, ya que mucho software elimina la coordenada Z sin avisar.

Su equivalente gdal:contour_polygon proporciona bandas rellenas entre dos elevaciones en lugar de líneas, con ELEV_MIN y ELEV_MAX en cada polígono. Es el que necesitas para un mapa hipsométrico o una extensión inundable, y te evita polygonizar manualmente un DEM reclasificado.

Dos paneles de la misma extensión montañosa. A la izquierda, líneas de contorno marrones cada 10 m sobre un hillshade gris, con las líneas de 50 m más gruesas y etiquetadas 400, 450, 500, 550, 600 y 650. A la derecha, el mismo terreno como bandas rellenas que van del verde en los valles al marrón en las cimas.
El mismo DEM, el mismo intervalo de 10 m y dos algoritmos. gdal:contour proporciona líneas que etiquetas desde ELEV. gdal:contour_polygon proporciona bandas rellenas con ELEV_MIN y ELEV_MAX, que es lo que necesita un mapa hipsométrico.

Los contornos de un DEM lidar salen con ruido porque la superficie tiene ruido. Suaviza el raster antes del paso de contorno, no las líneas después. Suavizar las líneas hace que se crucen.

Mapas de papel escaneados: QGIS no tiene ArcScan

Si vienes de ArcGIS buscando el equivalente de QGIS para ArcScan, no existe. El trazado interactivo de raster, en el que haces clic en una línea del escaneo y la herramienta la sigue, es una carencia real. Prefiero decirlo claramente antes que dejarte buscar el menú.

Lo que se utiliza en la práctica, aproximadamente en este orden según lo bien que funciona:

  • GRASS, incluido en la mayoría de los instaladores de QGIS. Aplica un umbral al escaneo para obtener un raster binario, afínalo con r.thin y después ejecuta r.to.vect con el tipo de entidad line. La documentación de GRASS advierte que esto crea demasiados nodos en las intersecciones y ramificaciones colgantes, así que reserva tiempo para la limpieza. Es gratis y funciona con líneas limpias.
  • Potrace o AutoTrace, fuera de QGIS. Convierte de bitmap a vector, vuelve a cargar el resultado y georreferéncialo. Funciona bien con escaneos de alto contraste, pero no sabe nada sobre geografía.
  • Bunting Labs AI Vectorizer (entrada en el repositorio de QGIS). Un QGIS plugin que completa automáticamente una línea mientras digitalizas, orientado directamente a mapas geológicos, planos conforme a obra y planos técnicos. La limitación: envía fragmentos de raster a sus servidores, no hay nivel gratuito más allá de una prueba y sus precios publicados empiezan en 29 dólares al mes, según la información leída el 23 de agosto de 2026.

Para un puñado de elementos en una misma hoja, la digitalización manual con snapping activado sigue siendo la mejor opción. No crearía un flujo de trazado para menos de unas cincuenta entidades.

Cuándo polygonize es la herramienta equivocada

Si aplicas polygonize a una ortofoto obtienes ruido, porque no hay nada que clasificar mediante un umbral. Un tejado rojo y un coche rojo tienen valores de píxel similares. Un tejado gris y una carretera gris tienen valores de píxel similares. Las clases existen en tu cabeza, no en el archivo.

Extraer objetos de imágenes fotográficas necesita un modelo que haya aprendido cómo son los objetos. Estas herramientas escriben los vectores directamente, así que polygonize ni siquiera interviene. Esto es lo que instalas y lo que te pide cada herramienta.

HerramientaLo que instalasGPUCuentaLa imagen sale de tu máquinaLo que produceCoste
Deepness (source)Plugin manager, después sus paquetes Python y un modelo ONNXOpcional, funciona con CPUNoNoPolygon layer, bounding boxes o un rasterGratis
Geo-SAMPlugin manager, después las dependencias y los pesos del modelo desde su propio diálogo de configuraciónOpcional, los clics se ejecutan en CPUNoNoPolygon layer, a nivel de píxel o simplificadoGratis
samgeoUn paquete Python en tu propio entorno, sin panel de QGISRecomendadoNoNoGeoJSON, Shapefile o GeoPackage que cargas tú mismoGratis
Mapflow (site)Plugin managerNoSí, tu carga de GeoTIFF o el servicio de tiles al que lo dirijasPolygon layerCréditos, de pago
Bunting Labs AI VectorizerPlugin managerNoSí, en fragmentos de rasterVértices en el layer que estás digitalizandoPrueba y después 29 dólares al mes
AI Segmentation, el nuestroPlugin managerNoSí en ambos modos cloud, no para el pequeño modelo localPolygon layer en el CRS del proyecto, con label, class, score, area_m2 y perimeter_mCuota gratuita y después 39 euros al mes sin IVA

Una limitación por herramienta.

  • Deepness ejecuta el modelo que le proporciones, así que primero tienes que encontrar o entrenar uno.
  • Geo-SAM acepta clics y cajas, un objeto cada vez.
  • samgeo no tiene interfaz de QGIS. Escribes Python.
  • Mapflow ofrece un catálogo fijo de modelos para edificios, bosques, carreteras y obras, así que no puede encontrar un objeto para el que nadie haya entrenado un modelo.
  • Bunting Labs AI Vectorizer sigue las líneas mientras digitalizas. No encuentra todos los objetos de una zona.
  • AI Segmentation, el nuestro, envía las imágenes a un servidor en ambos modos cloud. Solo el pequeño modelo local permanece en tu máquina.

Costes y niveles gratuitos consultados el 23 de agosto de 2026.

Una calle suburbana sobre imágenes de Google Satellite en QGIS. Seis tejados de casas a la derecha de la carretera aparecen delineados y rellenos en rojo, y otros polígonos de colores variados cubren las casas de la izquierda.
Extracción basada en un modelo en QGIS sobre imágenes de Google Satellite, capturada el 23 de agosto de 2026. Cada tejado es su propio polígono, editable como cualquier otra entidad vectorial. Polygonize no puede producir esto, porque nada en los valores de los píxeles separa un tejado de una entrada.

La salida sin procesar de cualquiera de estas herramientas necesita filtrarse, igual que la salida de polygonize necesita limpiarse. En una ejecución sobre el centro de París conservamos 82 polígonos de 635, y esos 82 todavía contenían el 84 por ciento del área construida. La guía de huellas de edificios recorre ese filtrado de principio a fin, y el artículo sobre SAM en QGIS explica qué objetos encuentran bien estos modelos.

Try it free in QGIS, no card needed

La versión de dos minutos

Abre las propiedades de tu raster y mira el tipo de banda y el rango de valores. Un tipo entero con menos de cien valores distintos significa que puedes ir directamente a Raster > Conversion > Polygonize (Raster to Vector) y después ejecutar Dissolve, filtrar por área y Simplify. Un float con miles de valores distintos significa que debes usar primero Reclassify by table. Una fotografía significa que nada de esto es aplicable, y la comparativa de QGIS AI plugins es la página que quieres visitar después.

Si solo necesitas edificios, nuestra herramienta gratuita de huellas de edificios los obtiene de datos abiertos en el navegador sin ningún plugin.