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@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

_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo

Reply via email to