Manejo y almacenamiento de datos

Autor/a

Verónica Andreo

Fecha de publicación

12 de septiembre de 2023

En este segundo ejercicio de familiarización con GRASS GIS, vamos a explorar la base de datos de GRASS (o lo que usualmente llamaremos grassdata), ver cómo crear nuevos proyectos y mapsets, cómo cambiar de mapset y leer datos de mapsets diferentes al actual, realizar reproyecciones, e importar y exportar datos.

Creación de un nuevo proyecto (location)

Tenemos diferentes opciones para crear proyectos (locations) nuevos en GRASS GIS:

  • Desde la GUI
    • botón Crear nuevo location en el menú del panel Data Catalog

    • desde el menú principal: Settings >> GRASS working environment >> Create new location

  • Desde la terminal o la pestaña Consola
    • con la opción -c en el comando de inicio grass + la ruta al nuevo location y un archivo geo-referenciado o un código EPSG
# con archivo geo-referenciado
grass -c geofile.tif grassdata/UTM20S

# con código epsg
grass -c EPSG:32720 grassdata/UTM20S
Tarea

Siguiendo los pasos ejemplificados en la siguiente figura, vamos a crear un nuevo proyecto “latlong” utilizando el código EPSG 4326. Notar que una vez completado el proceso, GRASS cambia al nuevo proyecto.

Los pasos de arriba se podrían haber reemplazado por el siguiente comando desde la terminal o la pestaña Consola dentro del panel lateral:

# Crear un nuevo location con EPSG:4326
grass -c EPSG:4326 $HOME/grassdata/latlong

Cuando creamos un nuevo proyecto de esta manera, GRASS abrirá una nueva sesión en el proyecto creado.

Crear un nuevo mapset

También existen varias opciones para crear mapsets dentro de los proyectos.

  • Desde la GUI
    • botón Crear nuevo mapset desde el menú del panel Data Catalog
    • desde el menú principal: Settings >> GRASS working environment >> Create new mapset
  • Desde la terminal o la pestaña Consola
g.mapset mapset=curso

GRASS cambia automáticamente al nuevo mapset creado.

Tarea

Crear un nuevo mapset llamado curso dentro del location latlong con el método que deseen.

Eliminar y renombrar proyectos y mapsets

Simplemente se elimina el directorio desde el explorador de archivos del sistema o se utiliza el menú contextual. Notar que tiene que estar activado el modo edición y que para eliminar proyectos o mapsets, debemos estar en proyectos y mapsets diferentes de aquellos que deseamos eliminar.

Cambiar de mapset

  • Desde la GUI:

  • Desde la terminal o la Consola:
# imprimir el mapset actual
g.mapset -p

# cambiar al mapset PERMANENT
g.mapset mapset=PERMANENT

Agregar mapsets a la lista de mapsets accesibles

A veces se requiere leer datos de otro mapset y usarlos para algún procesamiento. Entonces es necesario ver ese mapset desde el mapset actual donde estamos trabajando.

# imprimir el mapset actual
g.mapset -p
# imprimir los mapsets accesibles
g.mapsets -p
# agregar *user1* a la lista de mapsets accesibles
g.mapsets mapset=user1 operation=add
# corroborar que es visible
g.mapsets -p
Nota

Estas operaciones se realizan dentro de un mismo proyecto. No es posible agregar/ver mapas de otros proyectos (locations).

Importar mapas raster y vectoriales

  • r.in.gdal: Importa datos raster en GRASS usando la librería GDAL
r.in.gdal input=myraster.tif output=myraster
  • v.in.ogr: Importa datos vectoriales en GRASS usando la librería OGR.
v.in.ogr input=myvector.shp output=myvector
Importante

Para usar estos comandos, los mapas deben tener el mismo sistema de coordenadas que el location al que los queremos importar

Nota

Cómo obtener los metadatos de cualquier mapa raster?

gdalinfo <mapname>

Alternativamente, podemos usar r.import y v.import que ofrecen re-proyección al vuelo y también, remuestreo y recorte para los datos raster. En este caso, entonces, los mapas raster y vectoriales no necesitan tener el mismo sistema de coordenadas que el proyecto (location) de destino. Veamos dos ejemplos y sigamos las instrucciones que nos muestran.

Importar un mapa raster en el proyecto NC

Importar un mapa vectorial en el proyecto NC

Tarea

Importar los rasters y el vector de muestra provistos dentro del mapset curso que crearon más arriba.

Trabajar sin importar los mapas

En lugar de importar los datos a la base de datos de GRASS, se puede trabajar solamente vinculando los datos. Para ello, usamos los siguientes módulos:

  • r.external: Vincula datos raster en formatos soportados por GDAL como un pseudo raster de GRASS.
  • v.external: Crea un pseudo-vector GRASS vinculando formatos vectoriales soportados por OGR o tablas de PostGIS.
Importante

No renombrar, eliminar o mover los archivos vinculados…!

Re-proyección de mapas

Cada location está definida por su sistema de coordenadas de referencia (CRS por su abreviación en Inglés), así que re-proyectar == transferir/transformar mapas entre distintos proyectos.

Para la re-proyección de rasters se definen extensión y resolución deseadas en el proyecto de destino previo a la re-proyección, mientras que para la re-proyección de vectores se re-proyecta todo el mapa por transformación de coordenadas.

En general, el mecanismo es el siguiente: se trabaja desde el proyecto de destino, y desde allí se llama a los mapas en el proyecto de origen.

Tarea
  • Crear un nuevo proyecto (location) con el nombre UTM18N a partir de una de las bandas de L8 provistas como rasters de muestra e importarla.
  • Importar a nc_spm_08_grass7/user1 (con re-proyección al vuelo) la banda de L8 importada al proyecto UTM18N. ¿En qué mapset estaba?
  • Definir (e imprimir) la región computacional al raster importado en ambos proyectos.

También está la opción de copiar y pegar mapas de un proyecto a otro desde el menú contextual de la GUI.

Exportar mapas raster y vectoriales

Para exportar mapas desde GRASS GIS utilizamos los comandos r.out.gdal y v.out.ogr que nos permiten exportar a formatos soportados por GDAL/OGR.

Tarea
  • Explorar r.out.gdal y v.out.ogr y exportar los mapas elevation y roadsmajor.
  • Abrir los mapas exportados en QGIS.