[R-sig-Geo] stars analogous of raster::aggregate
Edzer Pebesma
edzer@pebe@m@ @end|ng |rom un|-muen@ter@de
Tue Sep 8 22:24:53 CEST 2020
On 9/8/20 8:47 PM, Micha Silver wrote:
>
> On 08/09/2020 19:33, Julian M. Burgos wrote:
>> Dear all,
>>
>> The raster package has the raster::aggregate function that can be used to reduce the resolution of a raster by aggregating cells by a specific factor. For example, this reduces the resolution of the L7_ETMs.tif raster by a factor of 10:
>>
>> library(raster)
>>
>> rst1 <- raster(system.file("tif/L7_ETMs.tif", package = "stars"))
>>
>> rst2 <- aggregate(rst1, fact = 10, fun = mean)
>>
>>> res(rst1)
>> [1] 28.5 28.5
>>
>>> res(rst2)
>> [1] 285 285
>>
>> I am trying to do the same thing with a stars object. The stars package has the stars::aggregate function, but for spatial aggregation it takes an object of class sf or sfc, so it is meant to be used for aggregation over polygons. I could do something like this:
>
> Probably st_warp() is what you want:
>
>
> l7_file = system.file("tif/L7_ETMs.tif", package = "stars")
> l7 = read_stars(l7_file)
>
> l7_lowres = st_warp(src = l7, cellsize = c(90, 90), crs = st_crs(l7))
>
>
> stars::st_dimensions(l7)
> from to offset delta refsys point values
> x 1 349 288776 28.5 +proj=utm +zone=25 +south... FALSE NULL [x]
> y 1 352 9120761 -28.5 +proj=utm +zone=25 +south... FALSE NULL [y]
> band 1 6 NA NA NA NA NULL
>
>
> stars::st_dimensions(l7_lowres)
> from to offset delta refsys point values
> x 1 111 288776 90 +proj=utm +zone=25 +south... NA NULL [x]
> y 1 112 9120761 -90 +proj=utm +zone=25 +south... NA NULL [y]
> band 1 6 NA NA NA NA NULL
Yes; if you want to get similar behaviour as raster, choose a cell size
that is an exact multiple of the origin's cell size, use_gdal = TRUE,
and method = "average"; this currently seems to only work for single
band rasters; along these lines:
library(stars)
# Loading required package: abind
# Loading required package: sf
# Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 7.0.0
l7_file = system.file("tif/L7_ETMs.tif", package = "stars")
l7 = read_stars(l7_file)
(dest = st_as_stars(st_bbox(l7), dx = 90, dy = 90))
# stars object with 2 dimensions and 1 attribute
# attribute(s):
# values
# Min. :0
# 1st Qu.:0
# Median :0
# Mean :0
# 3rd Qu.:0
# Max. :0
# dimension(s):
# from to offset delta refsys point values x/y
# x 1 111 288776 90 UTM Zone 25, Southern Hem... NA NULL [x]
# y 1 112 9120761 -90 UTM Zone 25, Southern Hem... NA NULL [y]
(l7_lowres = st_warp(src = l7[,,,1], dest = dest, use_gdal = TRUE,
method = "average"))
# stars object with 2 dimensions and 1 attribute
# attribute(s):
# file14bb5c7321dc.tif
# Min. : 56.81
# 1st Qu.: 68.75
# Median : 79.00
# Mean : 79.25
# 3rd Qu.: 88.62
# Max. :207.44
# dimension(s):
# from to offset delta refsys point values x/y
# x 1 111 288776 90 UTM Zone 25, Southern Hem... FALSE NULL [x]
# y 1 112 9120761 -90 UTM Zone 25, Southern Hem... FALSE NULL [y]
>
>
> --
> Micha Silver
> Ben Gurion Univ.
> Sde Boker, Remote Sensing Lab
> cell: +972-523-665918
> https://orcid.org/0000-0002-1128-1325
>
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
--
Edzer Pebesma
Institute for Geoinformatics
Heisenbergstrasse 2, 48149 Muenster, Germany
Phone: +49 251 8333081
More information about the R-sig-Geo
mailing list