GRASS and windows console: Difference between revisions

From GRASS-Wiki
Jump to navigation Jump to search
m (Hellik moved page GRASS and bat-files in windows console to GRASS and windows console: extend MS windows related examples)
 
(15 intermediate revisions by 3 users not shown)
Line 1: Line 1:
''This page shows an example how to run several GRASS modules in a windows batch-file in the winGRASS windows console''
''This page shows extended examples how to run GRASS modules in the winGRASS windows console''


==Windows batch files in GRASS==
==Windows batch files in GRASS==
Line 21: Line 21:
"%ProgramFiles?%\QGIS 2.18\bin\Grass72.bat" --exec MyScript.bat D:/myGrassData/MyLoc/MyMapset  
"%ProgramFiles?%\QGIS 2.18\bin\Grass72.bat" --exec MyScript.bat D:/myGrassData/MyLoc/MyMapset  
</source>
</source>
==g.list output as input for another GRASS module==
Using g.list output as input variable for another module, e.g. to remove a list raster map.
<source lang="bat">
FOR /F %c in ('g.list "type=raster" "pattern=*2" "mapset=user1" "separator=comma"') DO SET RASTER2REMOVE=%c
echo %RASTER2REMOVE%
b172,d172,it172,r172
g.remove type=raster name=%RASTER2REMOVE%
The following data base element files would be deleted:
raster/b172@user1
raster/d172@user1
raster/it172@user1
raster/r172@user1
WARNING: Nothing removed. You must use the force flag (-f) to actually
        remove them. Exiting.
</source>
Using g.list output as input variable for another module, e.g. to loop through a list of vector maps and buffer them.
<source lang="bat">
FOR /F %c IN ('g.list "type=vector" "separator=comma"') DO SET VECTLIST=%c
FOR %g IN (%VECTLIST%) DO v.buffer input=%g output=%g_buffer_200 distance=200
</source>
== selecting a different shell ==
On MS Windows, in the absence of the environmental variable GRASS_SH, the grass startup script selects the shell specified in environment variable ComSpec.  This is typically ''cmd.exe''.
<source lang="bat">
REM check shell
echo %ComSpec%
C:\WINDOWS\system32\cmd.exe
</source>
The default shell can be overridden by setting the environment variable GRASS_SH.
To make [https://en.wikipedia.org/wiki/PowerShell MS powershell] the startup command shell set the environment variable with
<source lang="bat">
SET GRASS_SH=%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
</source>
in ''C:\OSGeo4W64\apps\grass\grass-7.7.svn\etc\env.bat'' (e.g. for OSGeo4W 64bit).


[[Category: Development]]
[[Category: Development]]
[[Category: FAQ]]
[[Category: WinGRASS]]
[[Category: WinGRASS]]

Latest revision as of 19:44, 23 December 2018

This page shows extended examples how to run GRASS modules in the winGRASS windows console

Windows batch files in GRASS

In order to ease the workflow of analysis, several GRASS modules can be invoked at once by an batch file (*.bat) in the winGRASS windows console.

Python grass modules (e.g. v.db.addcolumn) have to be invoked by call in the batch-file.

@ECHO ON
g.region -p
v.in.region output=myreg
call v.db.addtable map=myreg
call v.db.addcolumn map=myreg columns="col1 double"
v.to.db map=myreg option=area columns=col1

Running batch files without starting up GRASS:

"%ProgramFiles?%\QGIS 2.18\bin\Grass72.bat" --exec MyScript.bat D:/myGrassData/MyLoc/MyMapset

g.list output as input for another GRASS module

Using g.list output as input variable for another module, e.g. to remove a list raster map.

FOR /F %c in ('g.list "type=raster" "pattern=*2" "mapset=user1" "separator=comma"') DO SET RASTER2REMOVE=%c

echo %RASTER2REMOVE%
b172,d172,it172,r172

g.remove type=raster name=%RASTER2REMOVE%
The following data base element files would be deleted:
raster/b172@user1
raster/d172@user1
raster/it172@user1
raster/r172@user1
WARNING: Nothing removed. You must use the force flag (-f) to actually
         remove them. Exiting.

Using g.list output as input variable for another module, e.g. to loop through a list of vector maps and buffer them.

FOR /F %c IN ('g.list "type=vector" "separator=comma"') DO SET VECTLIST=%c

FOR %g IN (%VECTLIST%) DO v.buffer input=%g output=%g_buffer_200 distance=200

selecting a different shell

On MS Windows, in the absence of the environmental variable GRASS_SH, the grass startup script selects the shell specified in environment variable ComSpec. This is typically cmd.exe.

REM check shell
echo %ComSpec%
C:\WINDOWS\system32\cmd.exe

The default shell can be overridden by setting the environment variable GRASS_SH.

To make MS powershell the startup command shell set the environment variable with

SET GRASS_SH=%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe

in C:\OSGeo4W64\apps\grass\grass-7.7.svn\etc\env.bat (e.g. for OSGeo4W 64bit).