-
Notifications
You must be signed in to change notification settings - Fork 96
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
mosaic causes R crash if SpatRasterCollection elements have multiple layers #1524
Comments
Has there been a resolution here? I am facing the same issue of the session crashing (terra version 1.7-78), and it also happens for me when mosaicing two spatRasters:
Session Info
─ Packages ──────────────────────────────────────────────────────────────────────────────────────────────── [1] /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library |
An update: such crashing does not occur for me with terra 1.6-53, 1.7-3, and 1.7-29, after some testing. But it does with 1.7-78 and 1.8-5 |
I can reproduce this issue too. Whilst not perfect I found this work around helpful - using your example @dklinges9: library(terra) # version 1.7-78
#> terra 1.8.0
set.seed(1)
e <- ext(113, 154, -44, -10)
r <- replicate(2, {
x <- round(sort(runif(2, e[1], e[2])), 2)
y <- round(sort(runif(2, e[3], e[4])), 2)
init(rast(ext(c(x, y)), res = 0.05, crs = "EPSG:4326", nlyrs = 2), runif)
})
r1 <- r[[1]]
r2 <- r[[2]]
mosaic_safe <- function(x, y, ...,
fun = "mean", filename = "",
overwrite = FALSE, wopt = list()) {
stopifnot(terra::nlyr(x) == terra::nlyr(y))
terra::rast(lapply(seq_along(1:terra::nlyr(x)), function(i) {
terra::mosaic(x[[i]], y[[i]], ...,
fun = fun, filename = filename,
overwrite = overwrite, wopt = wopt
)
}))
}
r3 <- mosaic_safe(r1, r2)
#> ext 0: 123.89 146.44 -24.52 -11.52
#> ext 1: 129.27 146.42 -18.65 -11.5
#> ext 0: 123.89 146.44 -24.52 -11.52
#> ext 1: 129.27 146.42 -18.65 -11.5
plot(r3) Created on 2024-12-17 with reprex v2.1.1 |
@dklinges9 can you please try with the current (CRAN or development) version of terra? For me, your code returns:
And I believe that was the underlying problem of all these cases. |
Indeed with the current CRAN version I receive the same error as Rob with this previous toy example. Yet I still am facing this issue of crashing upon mosaic with my actual program. I made a smaller example from my real files below, which do indeed have the same resolution.
Thanks as always for a speedy reply, Rob. Don't mean to cause trouble. Thanks, Dave |
I believe this has now been fixed. I am sorry it took me so long. |
# Version 1.8-15 ## Bug Fixes - `Readrds` Failed For Rasters With Timestep="Seconds" [#1711](Https://github.com/Rspatial/terra/issues/1711) by Pascal Oettli - `divide<SpatVector>` always returned NULL [#1724](rspatial/terra#1724) by Márcia Barbosa - `erase` failed in some cases [#1710](rspatial/terra#1710) by erkent-carb ## enhancements - `bestMatch` now has argument "fun" to allow the use of different distance measures, and a <matrix> method - `wrap` (and `writeRDS`) now captures varnames/longnames [#1719](rspatial/terra#1719) by Andrew Gene Brown - improved raster metadata writing [#1714](rspatial/terra#1714) by Andrew Gene Brown - `vect` and `writeVector` now properly read and write date and datetime data. [#1718](rspatial/terra#1718) by Andrew Gene Brown - improved estimate of available memory on linux systems [#1506](rspatial/terra#1506) by Cedric Rossi # version 1.8-10 Released 2025-01-13 ## bug fixes - `expanse<SpatRaster>(transform=TRUE)` crashed R when the crs was "local". [#1671](rspatial/terra#1671) by Michael Chirico - `patches(values=TRUE)` wrapped around the edges [#1675](rspatial/terra#1675) by Michael Chirico - `spin` now correctly handles spherical coordinates [#1576](rspatial/terra#1576) by jeanlobry - `mosaic` sometimes crashed R [#1524](rspatial/terra#1524) by John Baums, Dave Klinges, and Hugh Graham. - `spatSample` ignored argument "exp" when taking a random sample with na.rm=TRUE on a large raster [#1437](rspatial/terra#1437) by Babak Naimi - `split<SpatVector,SpatVector>` did not work properly [#1619](rspatial/terra#1619) by Michael Sumner - `autocor` improved handling of NA cells for global Moran computation [#1992](rspatial/terra#1592) by Nicholas Berryman - `shade` is more memory-safe. [#1452](rspatial/terra#1452) by Francis van Oordt and Chris English - fixed bug in `rasterize` revealed when using `crop(mask=TRUE)` [#1686](rspatial/terra#1686) by edixon1 - fixed `to_id = NA` bug in `nearest` [#1471](rspatial/terra#1471) by Mats Blomqvist - better handling of date/unit [#1684](rspatial/terra#1684) and [#1688](rspatial/terra#1688) by Andrew Gene Brown - `spatSample(method="regular")` on a raster with one column returned too many samples [#1362](rspatial/terra#1362) by Daniel R Schlaepfer ## enhancements - `plot<SpatVector>` now uses the same default viridis color palette as `plot<SpatRaster>` [#1670](rspatial/terra#1670) by Márcia Barbosa - `relate` now accepts relation="equals" [#1672](rspatial/terra#1672) by Krzysztof Dyba - `init` now accepts additional arguments for function "fun" - better handling of the 32 connections limitation set by the HDF4 library [#1481](rspatial/terra#1481) by Dimitri Falk - When using RStudio a once per session warning is given when using draw, sel or click [#1063](rspatial/terra#1063) by Sergei Kharchenko - `distance<SpatRaster>` from lon and lat lines/polygons computes distance to the edges instead of the nodes [#1462](rspatial/terra#1462) by Derek Friend - `distance<SpatVector,SpatVector>` now works for lon/lat data [#1615](rspatial/terra#1615) by Wencheng Lau-Medrano - using overviews for faster plotting of COGs over http [#1353](rspatial/terra#1353) by Michael Sumner and [#1412](rspatial/terra#1412); and argument `plot(x, overview=)` to change the default behavior. - `extract` with points is now faster for rasters accessed over http [#1504](rspatial/terra#1504) by Krzysztof Dyba - `extract` with many points on very large rasters was slower in compared to doing the same with "raster" (which uses terra for that!) [#1584](rspatial/terra#1584) by Hassan Masoomi - `merge` now has three alternative algorithms [1366](rspatial/terra#1366) by Hassan Masoomi and [#1650](rspatial/terra#1650) by Agustin Lobo ## new - `$<SpatRaster>` can now be used to get a categorical SpatRaster with a different active category - `scale_linear<SpatRaster>` method for linear scaling of cell values between a minimum and maximum value such as 0 and 1 - `distance` and related methods get argument "method" to choose the distance algorithm for lon/lat data [#1677](rspatial/terra#1677) by Márcia Barbosa - `divide<SpatRaster>` and `divide<SpatVector>` methods - `nseg` counts the number of segments in a SpatVector [#1647](rspatial/terra#1674) by Michael Chirico - `extract` argument "search_radius" to extract values from the nearest raster cell that is not `NA` [#873](rspatial/terra#873) by matthewseanmarcus - `combineLevels` to combine the levels of all layers [link](https://stackoverflow.com/questions/79340152/how-to-set-factor-levels-in-a-rast-stack-using-terra-when-different-levels-exi) on SO by Sam
R crashes when using
mosaic
on aSpatRasterCollection
with elements having multiple layers. Reprex provided for one of the working cases, below.Interestingly, the
mosaic
operation completes successfully if we usemerge
first:Created on 2024-05-30 with reprex v2.1.0
Session info
Similarly, the
mosaic
works fine if the elements of the collection have a single layer:The text was updated successfully, but these errors were encountered: