Skip to content

Conversión raster/vectorial

Dependiendo del tipo de fenómeno geográfico que el dato vectorial representa, se distinguen dos tipos de transformación desde datos vectoriales y raster:

  • Para elementos geométricos (puntos, líneas y áreas) se utiliza transformación directa desde vectores a áreas o líneas raster.

  • Para campos continuos (isolíneas, contornos) se requiere interpolación espacial para transformar desde líneas vectoriales a raster.

  • Extracción de elementos desde objetos raster a vectores requiere vectorización.

Vectorización automática de datos raster

Algunas veces es necesario convertir datos raster existentes (líneas, áreas) a datos vectoriales. Esto se puede realizar mediante un mecanismo automatizado. GRASS provee los módulos r.to.vect y r.contour

Vectorización de puntos raster

Para la vectorización de puntos desde un mapa raster se debe especificar el tipo 'point' en el comando r.to.vect, por ejemplo considere el siguiente archivo tipo raster ARC:

ncols            10
nrows            10 
xllcorner       100 
yllcorner       100 
cellsize         10
NODATA_value      0
	
0 0 0 0 0 0 0 0 2 0
0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 2 0 0
0 0 0 0 0 0 0 0 0 0

En dicho archivo se definen algunas celdas que contienen valores con alguna categoría (1 y 2), el resto de celdas se consideran nulas. Ahora para importar dicho raster y convertir las celdas a datos vectoriales puntuales se deben ejecutar los siguientes comandos:

r.in.gdal input=rasterPuntos.arc output=rasterPuntos  
g.region rast=rasterPuntos
r.to.vect in=rasterPuntos out=vectorPuntos type=point

Vectorización de líneas raster

Existen diferentes procedimientos para la sectorización de líneas y áreas. Con el fin de vectorial una línea de un mapa, un requisito es "adelgazar" todas las líneas del mapa raster con r.thin. Luego, se aplica el comando r.to.vect para convertir todas las líneas en el mapa raster al modelo de datos vectorial. Considere el siguiente archivo raster conteniendo información de líneas en formato ARC:

ncols            10
nrows            10 
xllcorner       100 
yllcorner       100 
cellsize         10
NODATA_value      0
	
1 0 0 0 0 0 0 0 2 0
0 1 0 0 0 0 0 2 0 0
0 0 1 0 0 0 0 2 0 0
0 0 0 1 0 0 0 2 0 0
0 0 0 0 1 1 0 2 2 2
0 0 0 0 0 1 0 0 0 0
3 3 3 0 0 0 1 1 1 0
0 0 0 3 0 0 0 0 0 1
0 0 0 0 3 0 0 3 0 0
0 0 0 0 0 3 3 0 3 3

Nótese que existen tres tipos de categorías correspondientes a elementos lineales diferentes. Los comandos para importar este archivo y realizar la conversión a elementos vectoriales serían los siguientes:

r.in.gdal input=rasterLineas.arc output=rasterLineas
g.region rast=rasterLineas
r.thin in=rasterLineas out=rasterThin
r.to.vect -v in=rasterThin out=vectorLineas type=line

La opción -v hace que los nuevos elementos vectoriales se creen asignado como categoría el valor de las celdas relacionadas.

Vectorización de áreas raster

Las áreas pueden ser convertidas a polígonos vectoriales con el mismo comando r.to.vect. Esto convierte las áreas raster a polígonos vectoriales y también copia los atributos al mapa vectorial. Ahora se utilizará el siguiente archivo raster con información sobre áreas para realizar la conversión:

ncols            10
nrows            10 
xllcorner       100 
yllcorner       100 
cellsize         10
NODATA_value      0
	
0 0 0 0 0 0 0 0 2 0
0 0 0 0 0 0 0 2 2 0
0 1 1 0 0 0 2 2 0 0
0 1 1 1 0 0 2 2 2 0
0 0 0 1 1 1 0 2 2 2
0 0 0 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 3 3 3 0 0 0 0
0 0 0 0 3 3 3 3 0 0
0 0 0 0 0 3 3 0 0 0

En este caso se han definido tres áreas diferentes mediante celdas con el mismo valor. El conjunto de comandos que permiten importar dicho archivo raster y extraer los elementos vectoriales poligonales son los siguientes:

r.in.gdal input=rasterAreas.arc output=rasterAreas
g.region rast=rasterAreas
r.to.vect in=rasterAreas out=vectorAreas type=area -s -v

La opción -s suaviza las esquinas. El módulo opera en la región actual.

Creando isolíneas desde superficies raster

El módulo r.contour genera líneas vectoriales desde una mapa raster que representa una superficie. Entre las opciones que se deben especificar está el intervalo de las líneas (p.ej. 10m), todos los otros valores pueden ser determinados automáticamente. Se va a utilizar el siguiente archivo con información raster que representan variaciones de un medición realiza en una superficie:

ncols            10
nrows            10 
xllcorner       100 
yllcorner       100 
cellsize         10
NODATA_value      0
	
5 5 5 5 5 5 5 6 6 6
4 4 4 4 4 4 5 5 6 6
4 4 4 4 4 4 4 5 5 5
3 3 3 3 3 4 4 5 5 5
3 3 3 3 3 3 4 4 4 5
2 2 2 2 2 3 3 4 4 4
2 2 2 2 2 2 3 3 4 4
1 1 1 1 2 2 2 3 4 4 
1 1 1 1 1 2 2 3 4 4
1 1 1 1 1 2 2 3 4 4

Los valores van variando suavemente a través de la superficie. El conjunto de comandos que permiten importar y generar las curvas de nivel respectivas son los siguientes:

r.in.gdal input=rasterSuperficie.arc output=rasterSuperficie
g.region -p rast=rasterSuperficie
r.contour in=rasterSuperficie out=CurvasNivel step=2

La topología es construída automáticamente.

Transformación de datos vectoriales a raster

El comando v.to.rast genera un mapa raster desde un mapa vectorial de entrada. La transformación de objetos vectoriales a celdas raster depende de la resolución actual. Establecer la resolución puede ser hecho con g.region usando el parámetro res (resolution). La opción col permite definir el nombre de un atributo que será utilizado para asignar la categoría a las celdas (debe ser numérico).

Por ejemplo, se puede tomar como base el archivo lines.txt que se muestra a continuación:

L  6 1
 5958812 3400828
 5958957 3400877
 5959021 3400930
 5959048 3400973
 5959069 3401032
 5958812 3400828
 1  5
L  4  1
 5959010 3401338
 5959096 3401370
 5959091 3401450
 5959010 3401338
 1  7

El comando v.to.rast solo afecta los datos en la áreas dentro de las fronteras de la región actual. Antes de ejecutar v.to.rast el usuario debe asegurarse que la región actual esté correctamente definida.

Se debe especificar el parámetro use para indicar si se utilizará la categoría para identificar las celdas, o bien, alguna otra columna de la tabla de datos.

v.in.ascii input=lines.txt output=lines -n format=standard
g.region -p vect=lines res=10
v.to.rast in=lines out=raster use=cat

También se pueden generar coberturas raster a partir de polígonos. Por ejemplo, shora se puede utilizar el archivo areas.txt para realizar la conversión:

A 6 1
 5958812 3400828
 5958957 3400877
 5959021 3400930
 5959048 3400973
 5959069 3401032
 5958812 3400828
 1 5
A 4 1
 5959010 3401338
 5959096 3401370
 5959091 3401450
 5959010 3401338
 1 7

Para convertir un mapa vectorial de polígonos a un mapa raster se aplica el mismo comando anterior:

v.in.ascii input=areas.txt output=areas -n format=standard
v.centroids input=areas output=vectAreas
g.region -p vect=vectAreas res=10
v.to.rast in=vectAreas out=rastAreas use=cat

Ejercicios

  1. Convierta los mapas vectoriales elaborados en el Tutorial 1 a mapas raster. Recuerde que cada celda debe tomar su valor a partir de la categoría de los elementos vectorial. Utilice una resolución adecuada de forma que las celdas no son demasiado grandes ni demasiado pequeñas.
  2. Convierta los mapas vectoriales elaborados en el Tutorial 2 a mapas raster. Recuerde que cada celda debe tomar su valor a partir de la categoría de los elementos vectorial. Utilice una resolución adecuada de forma que las celdas no son demasiado grandes ni demasiado pequeñas.
  3. Convierta el mapa raster elaborado en el Tutorial 3 a archivos vectoriales. Recuerde que cada elemento vectorial debe tomar su valor a partir de la categoría de las celdas.