t.rast.mapcalc(1grass) GRASS GIS User's Manual t.rast.mapcalc(1grass)
NAME
t.rast.mapcalc - Performs spatio-temporal mapcalc expressions on tem-
porally sampled maps of space time raster datasets.
KEYWORDS
temporal, algebra, raster, time
SYNOPSIS
t.rast.mapcalc
t.rast.mapcalc --help
t.rast.mapcalc [-ns] inputs=name[,name,...] expression=string
[method=name[,name,...]] output=name basename=basename [nprocs=inte-
ger] [--overwrite] [--help] [--verbose] [--quiet] [--ui]
Flags:
-n
Register Null maps
-s
Check the spatial topology of temporally related maps and process
only spatially related maps
--overwrite
Allow output files to overwrite existing files
--help
Print usage summary
--verbose
Verbose module output
--quiet
Quiet module output
--ui
Force launching GUI dialog
Parameters:
inputs=name[,name,...] [required]
Name of the input space time raster datasets
expression=string [required]
Spatio-temporal mapcalc expression
method=name[,name,...]
The method to be used for sampling the input dataset
Options: start, during, overlap, contain, equal, follows, precedes
Default: equal
output=name [required]
Name of the output space time raster dataset
basename=basename [required]
Basename for output raster maps
A numerical suffix separated by an underscore will be attached to
create a unique identifier
nprocs=integer
Number of r.mapcalc processes to run in parallel
Default: 1
DESCRIPTION
t.rast.mapcalc performs spatio-temporal mapcalc expressions on maps of
temporally sampled space time raster datasets (STRDS). Spatial and tem-
poral operators and internal variables are available in the expression
string. The description of the spatial operators, functions and inter-
nal variables is available in the r.mapcalc manual page. The temporal
functions are described in detail below.
This module expects several parameters. All space time raster datasets
that are referenced in the mapcalc expression must be listed in the in-
put option. The first space time raster dataset that is listed as input
will be used to temporally sample all other space time raster datasets.
The temporal sampling method can be chosen using the method option. The
order of the STRDS’s in the mapcalc expression can be different to the
order of the STRDS’s in the input option. The resulting space time
raster dataset must be specified in the output option together with the
basename of generated raster maps that are registered in the resulting
STRDS. Empty maps resulting from map-calculation are not registered by
default. This behavior can be changed with the -n flag. The flag -s can
be used to assure that only spatially related maps in the STRDS’s are
processed. Spatially related means that temporally related maps overlap
in their spatial extent.
The module t.rast.mapcalc supports parallel processing. The option
nprocs specifies the number of processes that can be started in paral-
lel.
A mapcalc expression must be provided to process the temporal sampled
maps. Temporal internal variables are available in addition to the
r.mapcalc spatial operators and functions:
The supported internal variables for relative and absolute time are:
• td() - This internal variable represents the size of the cur-
rent sample time interval in days and fraction of days for ab-
solute time, and in relative units in case of relative time.
• start_time() - This internal variable represents the time dif-
ference between the start time of the sample space time raster
dataset and the start time of the current sample interval or
instance. The time is measured in days and fraction of days
for absolute time, and in relative units in case of relative
time.
• end_time() - This internal variable represents the time differ-
ence between the start time of the sample space time raster
dataset and the end time of the current sample interval. The
time is measured in days and fraction of days for absolute
time, and in relative units in case of relative time. The
end_time() will be represented by null() in case of a time in-
stance.
The supported internal variables for the current sample interval or in-
stance for absolute time are:
• start_doy() - Day of year (doy) from the start time [1 - 366]
• start_dow() - Day of week (dow) from the start time [1 - 7],
the start of the week is Monday == 1
• start_year() - The year of the start time [0 - 9999]
• start_month() - The month of the start time [1 - 12]
• start_week() - Week of year of the start time [1 - 54]
• start_day() - Day of month from the start time [1 - 31]
• start_hour() - The hour of the start time [0 - 23]
• start_minute() - The minute of the start time [0 - 59]
• start_second() - The second of the start time [0 - 59]
• end_doy() - Day of year (doy) from the end time [1 - 366]
• end_dow() - Day of week (dow) from the end time [1 - 7], the
start of the week is Monday == 1
• end_year() - The year of the end time [0 - 9999]
• end_month() - The month of the end time [1 - 12]
• end_woy() - Week of year (woy) of the end time [1 - 54]
• end_day() - Day of month from the start time [1 - 31]
• end_hour() - The hour of the end time [0 - 23]
• end_minute() - The minute of the end time [0 - 59]
• end_second() - The second of the end time [0 - 59].
The end_* functions are represented by the null() internal variable in
case of time instances.
NOTES
We will discuss the internal work of t.rast.mapcalc with an example.
Imagine we have two STRDS as input, each one of monthly granularity.
The first one A has 6 raster maps (a3 ... a8) with a temporal range
from March to August. The second STRDS B has 12 raster maps (b1 ...
b12) ranging from January to December. The value of the raster maps is
the number of the month from their interval start time. Dataset A will
be used to sample dataset B to create a dataset C. We want to add all
maps with equal time stamps if the month of the start time is May or
June, otherwise we multiply the maps. The command will look as follows:
t.rast.mapcalc input=A,B output=C basename=c method=equal \
expression="if(start_month() == 5 || start_month() == 6, (A + B), (A * B))"
The resulting raster maps in dataset C can be listed with t.rast.list:
name start_time min max
c_1 2001-03-01 00:00:00 9.0 9.0
c_2 2001-04-01 00:00:00 16.0 16.0
c_3 2001-05-01 00:00:00 10.0 10.0
c_4 2001-06-01 00:00:00 12.0 12.0
c_5 2001-07-01 00:00:00 49.0 49.0
c_6 2001-08-01 00:00:00 64.0 64.0
Internally the spatio-temporal expression will be analyzed for each
time interval of the sample dataset A, the temporal functions will be
replaced by numerical values, the names of the space time raster
datasets will be replaced by the corresponding raster maps. The final
expression will be passed to r.mapcalc, resulting in 6 runs:
r.mapcalc expression="c_1 = if(3 == 5 || 3 == 6, (a3 + b3), (a3 * b3))"
r.mapcalc expression="c_2 = if(4 == 5 || 4 == 6, (a4 + b4), (a4 * b4))"
r.mapcalc expression="c_3 = if(5 == 5 || 5 == 6, (a5 + b5), (a5 * b5))"
r.mapcalc expression="c_4 = if(6 == 5 || 6 == 6, (a6 + b6), (a6 * b6))"
r.mapcalc expression="c_5 = if(7 == 5 || 7 == 6, (a7 + b7), (a7 * b7))"
r.mapcalc expression="c_6 = if(8 == 5 || 8 == 6, (a8 + b8), (a8 * b8))"
EXAMPLE
The following command creates a new space time raster dataset janu-
ary_under_0 that will set to null all cells with temperature above zero
in the January maps while keeping all the rest as in the original time
series. This will change the maximum values of all January maps in the
new STRDS as compared to the original one, tempmean_monthly.
t.rast.mapcalc input=tempmean_monthly output=january_under_0 basename=january_under_0 \
expression="if(start_month() == 1 && tempmean_monthly > 0, null(), tempmean_monthly)"
# print minimum and maximum only for January in the new strds
t.rast.list january_under_0 columns=name,start_time,min,max | grep 01-01
name|start_time|min|max
january_under_0_01|2009-01-01 00:00:00|-3.380823|-7e-06
january_under_0_13|2010-01-01 00:00:00|-5.266929|-0.000154
january_under_0_25|2011-01-01 00:00:00|-4.968747|-6.1e-05
january_under_0_37|2012-01-01 00:00:00|-0.534994|-0.014581
# print minimum and maximum only for January in the original strds,
# note that the maximum is different
t.rast.list tempmean_monthly columns=name,start_time,min,max | grep 01-01
2009_01_tempmean|2009-01-01 00:00:00|-3.380823|7.426054
2010_01_tempmean|2010-01-01 00:00:00|-5.266929|5.71131
2011_01_tempmean|2011-01-01 00:00:00|-4.968747|4.967295
2012_01_tempmean|2012-01-01 00:00:00|-0.534994|9.69511
SEE ALSO
r.mapcalc, t.register, t.rast.list, t.info
Temporal data processing Wiki
AUTHOR
Sören Gebbert, Thünen Institute of Climate-Smart Agriculture
SOURCE CODE
Available at: t.rast.mapcalc source code (history)
Accessed: unknown
Main index | Temporal index | Topics index | Keywords index | Graphical
index | Full index
© 2003-2022 GRASS Development Team, GRASS GIS 7.8.7 Reference Manual
GRASS 7.8.7 t.rast.mapcalc(1grass)
Generated by dwww version 1.14 on Wed Nov 5 09:35:07 CET 2025.