t.rast.aggregate(1grass)
β¨ t.rast.aggregate β¨
okay bestie, welcome to the t.rast.aggregate manual page from the GRASS User's Manual π this is the one that squishes a whole space time raster dataset into lil time buckets, and honestly? iconic.
π NAME π
t.rast.aggregate β aggregates temporally the maps of a space time raster dataset by a user defined granularity.
like, it takes your STRDS and smooshes the maps together according to a granularity you pick. slay.
π KEYWORDS π
temporal, aggregation, raster, time
π SYNOPSIS π
t.rast.aggregate
t.rast.aggregate --help
t.rast.aggregate [-n] input=name output=name basename=string
[suffix=name] granularity=string method=string [offset=integer]
[nprocs=integer] [file_limit=integer] [sampling=name[,name,...]]
[where=sql_query] [--overwrite] [--help] [--verbose] [--quiet]
[--ui]
π¦ Flags π¦
-nβ Register Null maps. yes bestie, nulls get registered too.--overwriteβ Allow output files to overwrite existing files. careful, this one eats your old stuff π«£--helpβ Print usage summary. your little cheat sheet fr fr.--verboseβ Verbose module output. it will yap (affectionately).--quietβ Quiet module output. it shuts all the way up.--uiβ Force launching GUI dialog. for the girlies who prefer clicking π
πΈ Parameters πΈ
input=name[required] β Name of the input space time raster dataset. your source material, bestie.output=name[required] β Name of the output space time raster dataset. where the glow-up lands.basename=string[required] β Basename of the new generated output maps.
Either a numerical suffix or the start time (s-flag) separated by an underscore will be attached to create a unique identifier. gotta keep them names distinct, no cap.
suffix=nameβ Suffix to add at basename: set'gran'for granularity,'time'for the full time format,'num'for numerical suffix with a specific number of digits (default%%05).
Default: gran
granularity=string[required] β Aggregation granularity, format absolute time"x years, x months, x weeks, x days, x hours, x minutes, x seconds"or an integer value for relative time. this is the size of your lil time bucket πͺ£method=string[required] β Aggregate operation to be performed on the raster maps.
Options: average, count, median, mode, minimum, min_raster, maximum, max_raster, stddev, range, sum, variance, diversity, slope, offset, detcoeff, quart1, quart3, perc90, quantile, skewness, kurtosis
Default: average
offset=integerβ Offset that is used to create the output map ids, output map id is generated as:basename_ (count + offset)
Default: 0
nprocs=integerβ Number ofr.seriesprocesses to run in parallel. multitasking queen π
Default: 1
file_limit=integerβ The maximum number of open files allowed for eachr.seriesprocess.
Default: 1000
sampling=name[,name,...]β The method to be used for sampling the input dataset.
Options: equal, overlaps, overlapped, starts, started, finishes, finished, during, contains
Default: contains
where=sql_queryβ WHERE conditions of SQL statement without'where'keyword used in the temporal GIS framework.
Example: start_time > '2001-01-01 12:30:00'
π DESCRIPTION π
t.rast.aggregate temporally aggregates space time raster datasets by a specific temporal granularity. it's literally built for this. This module support absolute and relative time. The temporal granularity of absolute time can be seconds, minutes, hours, days, weeks, months or years. okay but listen β Mixing of granularities eg. "1 year, 3 months 5 days" is not supported. pick a lane bestie π In case of relative time the temporal unit of the input space time raster dataset is used. The granularity must be specified with an integer value.
This module is sensitive to the current region and mask settings, hence spatial extent and spatial resolution. so like, vibe check your region first. In case the registered raster maps of the input space time raster dataset have different spatial resolutions, the default nearest neighbor resampling method is used for runtime spatial aggregation.
π₯ NOTES π₯
The raster module r.series is used internally. Hence all aggregate methods of r.series are supported. See the r.series manual page for details. (go read it, iykyk.)
This module will shift the start date for each aggregation process depending on the provided temporal granularity. The following shifts will performed:
- granularity years: will start at the first of January, hence
14-08-2012 00:01:30will be shifted to01-01-2012 00:00:00 - granularity months: will start at the first day of a month, hence
14-08-2012will be shifted to01-08-2012 00:00:00 - granularity weeks: will start at the first day of a week (Monday), hence
14-08-2012 01:30:30will be shifted to13-08-2012 01:00:00 - granularity days: will start at the first hour of a day, hence
14-08-2012 00:01:30will be shifted to14-08-2012 00:00:00 - granularity hours: will start at the first minute of a hour, hence
14-08-2012 01:30:30will be shifted to14-08-2012 01:00:00 - granularity minutes: will start at the first second of a minute, hence
14-08-2012 01:30:30will be shifted to14-08-2012 01:30:00
no cap, that's the rounding behavior. it's giving snaps-to-grid β¨
The specification of the temporal relation between the aggregation intervals and the raster map layers is always formulated from the aggregation interval viewpoint. Hence, the relation contains has to be specified to aggregate map layer that are temporally located in an aggregation interval. so remember which side you're looking from, bestie π«Ά
Parallel processing is supported in case that more than one interval is available for aggregation computation. Internally several r.series modules will be started, depending on the number of specified parallel processes (nprocs) and the number of intervals to aggregate.
still more to come bestie, don't go anywhere π
β¨ EXAMPLES β¨
Aggregation of monthly data into yearly data
okay so bestie, say you've got a whole pile of monthly maps and you want them squished into yearly ones. You literally just run this:
t.rast.aggregate input=tempmean_monthly output=tempmean_yearly \
basename=tempmean_year \
granularity="1 years" method=average
t.support input=tempmean_yearly \
title="Yearly precipitation" \
description="Aggregated precipitation dataset with yearly resolution"
t.info tempmean_yearly
and then t.info spills the tea like this π«β¨
+-------------------- Space Time Raster Dataset -----------------------------+
| |
+-------------------- Basic information -------------------------------------+
| Id: ........................ tempmean_yearly@climate_2000_2012
| Name: ...................... tempmean_yearly
| Mapset: .................... climate_2000_2012
| Creator: ................... lucadelu
| Temporal type: ............. absolute
| Creation time: ............. 2014-11-27 10:25:21.243319
| Modification time:.......... 2014-11-27 10:25:21.862136
| Semantic type:.............. mean
+-------------------- Absolute time -----------------------------------------+
| Start time:................. 2009-01-01 00:00:00
| End time:................... 2013-01-01 00:00:00
| Granularity:................ 1 year
| Temporal type of maps:...... interval
+-------------------- Spatial extent ----------------------------------------+
| North:...................... 320000.0
| South:...................... 10000.0
| East:.. .................... 935000.0
| West:....................... 120000.0
| Top:........................ 0.0
| Bottom:..................... 0.0
+-------------------- Metadata information ----------------------------------+
| Raster register table:...... raster_map_register_514082e62e864522a13c8123d1949dea
| North-South resolution min:. 500.0
| North-South resolution max:. 500.0
| East-west resolution min:... 500.0
| East-west resolution max:... 500.0
| Minimum value min:.......... 7.370747
| Minimum value max:.......... 8.81603
| Maximum value min:.......... 17.111387
| Maximum value max:.......... 17.915511
| Aggregation type:........... average
| Number of registered maps:.. 4
|
| Title: Yearly precipitation
| Monthly precipitation
| Description: Aggregated precipitation dataset with yearly resolution
| Dataset with monthly precipitation
| Command history:
| # 2014-11-27 10:25:21
| t.rast.aggregate input="tempmean_monthly"
| output="tempmean_yearly" basename="tempmean_year" granularity="1 years"
| method="average"
|
| # 2014-11-27 10:26:21
| t.support input=tempmean_yearly \
| title="Yearly precipitation" \
| description="Aggregated precipitation dataset with yearly resolution"
+----------------------------------------------------------------------------+
look at her, she's iconic π
4 registered maps, average aggregation type, the whole vibe.
Different aggregations and map name suffix variants
Here's the thing bestie β when you use the suffix option, the names your output maps get are different depending on the aggregation. So let's walk through some examples of the resulting naming schemes, okay? π
Weekly aggregation
t.rast.aggregate input=daily_temp output=weekly_avg_temp \
basename=weekly_avg_temp method=average granularity="1 weeks"
t.rast.list weekly_avg_temp
name|mapset|start_time|end_time
weekly_avg_temp_2003_01|climate|2003-01-03 00:00:00|2003-01-10 00:00:00
weekly_avg_temp_2003_02|climate|2003-01-10 00:00:00|2003-01-17 00:00:00
weekly_avg_temp_2003_03|climate|2003-01-17 00:00:00|2003-01-24 00:00:00
weekly_avg_temp_2003_04|climate|2003-01-24 00:00:00|2003-01-31 00:00:00
weekly_avg_temp_2003_05|climate|2003-01-31 00:00:00|2003-02-07 00:00:00
weekly_avg_temp_2003_06|climate|2003-02-07 00:00:00|2003-02-14 00:00:00
weekly_avg_temp_2003_07|climate|2003-02-14 00:00:00|2003-02-21 00:00:00
Variant with suffix set to gran:
t.rast.aggregate input=daily_temp output=weekly_avg_temp \
basename=weekly_avg_temp suffix=gran method=average \
granularity="1 weeks"
t.rast.list weekly_avg_temp
name|mapset|start_time|end_time
weekly_avg_temp_2003_01_03|climate|2003-01-03 00:00:00|2003-01-10 00:00:00
weekly_avg_temp_2003_01_10|climate|2003-01-10 00:00:00|2003-01-17 00:00:00
weekly_avg_temp_2003_01_17|climate|2003-01-17 00:00:00|2003-01-24 00:00:00
weekly_avg_temp_2003_01_24|climate|2003-01-24 00:00:00|2003-01-31 00:00:00
weekly_avg_temp_2003_01_31|climate|2003-01-31 00:00:00|2003-02-07 00:00:00
weekly_avg_temp_2003_02_07|climate|2003-02-07 00:00:00|2003-02-14 00:00:00
weekly_avg_temp_2003_02_14|climate|2003-02-14 00:00:00|2003-02-21 00:00:00
see how the suffix is getting the actual start date in there? yeah. she ate. π
Monthly aggregation
t.rast.aggregate input=daily_temp output=monthly_avg_temp \
basename=monthly_avg_temp suffix=gran method=average \
granularity="1 months"
t.rast.list monthly_avg_temp
name|mapset|start_time|end_time
monthly_avg_temp_2003_01|climate|2003-01-01 00:00:00|2003-02-01 00:00:00
monthly_avg_temp_2003_02|climate|2003-02-01 00:00:00|2003-03-01 00:00:00
monthly_avg_temp_2003_03|climate|2003-03-01 00:00:00|2003-04-01 00:00:00
monthly_avg_temp_2003_04|climate|2003-04-01 00:00:00|2003-05-01 00:00:00
monthly_avg_temp_2003_05|climate|2003-05-01 00:00:00|2003-06-01 00:00:00
monthly_avg_temp_2003_06|climate|2003-06-01 00:00:00|2003-07-01 00:00:00
Yearly aggregation
t.rast.aggregate input=daily_temp output=yearly_avg_temp \
basename=yearly_avg_temp suffix=gran method=average \
granularity="1 years"
t.rast.list yearly_avg_temp
name|mapset|start_time|end_time
yearly_avg_temp_2003|climate|2003-01-01 00:00:00|2004-01-01 00:00:00
yearly_avg_temp_2004|climate|2004-01-01 00:00:00|2005-01-01 00:00:00
π SEE ALSO π
no cap, these are the besties she hangs out with:
t.rast.aggregate.dst.rast.extractt.infor.seriesg.regionr.mask
Also: Temporal data processing Wiki π¦
π AUTHOR π
SΓΆren Gebbert, ThΓΌnen Institute of Climate-Smart Agriculture
π¦ SOURCE CODE π¦
Available at: t.rast.aggregate source code (history)
Latest change: Tuesday Jan 27 12:40:13 2026 in commit: 5e8b13d47dd4fc81efa5abefe90c34f7a8291fb9
Main index | Temporal index | Topics index | Keywords index | Graphical index | Full index
Β© 2003-2026 GRASS Development Team, GRASS 8.5.0 Reference Manual
okay that's the whole page bestie, and just so we're clear: this was the GRASS 8.5.0 manual for t.rast.aggregate(1grass), with the latest change dated Tuesday Jan 27 12:40:13 2026 πΈ go forth and aggregate, mwah π
π¦ where this page comes from
- alpine 3.24: grass-gis-doc 8.5.0-r1 Β· GPL-2.0-or-later
- ubuntu stonking: grass-doc 8.5.0-1ubuntu1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms