Me gustaría tener un GRASS script que cree una nueva ubicación propia, en lugar de utilizar una ubicación existente. Esto facilita el uso del script por parte de otros usuarios.
Revisando la guía sobre Trabajar con GRASS sin iniciarlo explícitamente y las notas sobre crear ubicaciones desde la línea de comandos He llegado al siguiente script:
#!/bin/sh
# path to GRASS binaries and libraries:
export GISBASE=/usr/lib/grass74
export PATH=$PATH:$GISBASE/bin:$GISBASE/scripts
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GISBASE/lib
# GRASS session variables
GRASSDB="/tmp/grassdata"
GRASSLOC="tmp_location"
mkdir -p "$GRASSDB/$GRASSLOC/PERMANENT"
# Create a new GRASS location
#grass74 -c $PATH_IN"ORCDRC_M_sl1_250m_clip.tif" "$GRASSDB$GRASSLOC"
grass74 -c /path/to/some/file.tif "$GRASSDB$GRASSLOC"
echo "Creation done"
# path to GRASS settings file
export GISRC=/tmp/grass7-${USER}-$GIS_LOCK/gisrc
# remove any leftover files/folder
rm -fr /tmp/grass7-${USER}-$GIS_LOCK
mkdir /tmp/grass7-${USER}-$GIS_LOCK
# set GISDBASE, LOCATION_NAME, and/or MAPSET
echo "GISDBASE: $GRASSDB" >>$GISRC
echo "LOCATION_NAME: $GRASSLOC" >>$GISRC
echo "MAPSET: PERMANENT" >>$GISRC
# start in text mode
echo "GRASS_GUI: text" >>$GISRC
# Test it
g.version
Este tipo de obras, sin embargo, las grass74 -c
no sólo crea una nueva localización, sino que también inicia una nueva sesión de GRASS y lanza la GUI.
¿Existe otra forma de crear una ubicación sin lanzar la GUI (y crear una sesión)?