Skip to content
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

Inconsistent behaviour of mask across resolutions #1463

Closed
spono opened this issue Mar 21, 2024 · 4 comments
Closed

Inconsistent behaviour of mask across resolutions #1463

spono opened this issue Mar 21, 2024 · 4 comments

Comments

@spono
Copy link

spono commented Mar 21, 2024

Hi,
dealing with an analysis over a wide area (few squared km), I need to mask some objects making use of the option inverse=TRUE.
If I use a 1 metre resolution raster I get what I’m looking for but, in the case of a 0.5 m resolution (20033 x 33316 cells), the result is equal to the input layer.
Just in case, I tried to check the CRS and the topology of the vector layer (provided as a SpatVector) but both are ok. Any other idea?

Here the layers and below the code for testing:

wdir = "C:/Users/???"

shp = vect(file.path(wdir,"raster_mask.shp"))

resol = c(0.5, 1)

for( i in resol ){
  
  r = rast( file.path(wdir,paste0("raster_",i,"m.tif")) )
  
  r = mask(r,shp, inverse=TRUE)
  
  writeRaster(r, filename=file.path(wdir,paste0("raster_",i,"m_masked.tif")),
            wopt=list(gdal=c("COMPRESS=LZW", "TFW=YES","of=GTiff")), overwrite=TRUE)
  
  rm(r)
}

I'm working with terra 1.7.71 and R 4.3.2 on W10.

@rhijmans
Copy link
Member

I cannot reproduce this. Perhaps because of a difference in memory availability. But before I dig deeper, can you confirm that this problem persists for you? Specifically, I would expect xm to be incorrect:

library(terra)
shp = vect("raster_mask.shp")
x = rast("raster_0.5m.tif")
xm = mask(x, shp, inverse=TRUE)

Or at least different from

r = rast("raster_1m.tif")
rm = mask(r, shp, inverse=TRUE)

Can you confirm that?

@spono
Copy link
Author

spono commented May 24, 2024

yep: the 1m resolution is ok and the 0.5 is not (tested on both 1.7.71 and 1.7.78).
BTW, on my side, the available memory is 32 Gb, so it would seem pretty strange to me.
anything else I can provide for helping?

comparison

@spono
Copy link
Author

spono commented Jul 2, 2024

I had the chance to test it on another W10 machine using terra 1.7-3 on R 4.2.2 and it worked pretty fine. Nevertheless, updating to 1.7-71 that machine too showed the abovementioned bug.
Any idea about what else I can test?

@rhijmans
Copy link
Member

I believe this has now been fixed in the development version.

netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue Jan 5, 2025
# version 1.8-5

## bug fixes

- `Spatsample(method='stratified', ext=e)` returned the wrong sampling
  coordinates [#1628](rspatial/terra#1628)
  by Barnabas Harris

- `spatSample(method='stratified')` could fail with small sample sizes
  [#1503](rspatial/terra#1503) by karluf

- transparency (alpha) did not work with RGB
  plotting. [#1642](rspatial/terra#1642) by
  Timothée Giraud

- rasterization failed on very large rasters
  [#1636](rspatial/terra#1636) by Mary
  Fisher, [#1463](rspatial/terra#1463) by
  Nic Spono and [#1281](rspatial/terra#1281)
  by Sebastian Dunnett

- `tmpFiles` only looked in the default temp files folder
  [#1630](rspatial/terra#1630) by
  smckenzie1986

- `where.min` did not work well if there were negative values
  [#1634](rspatial/terra#1634) by Michael
  Sumner

- `plet<SpatRaster>` now works for RGB rasters and rasters with a
  color table [#1596](rspatial/terra#1596)
  by Agustin Lobo

- `vect<MULTIPOINT WKT>` did not work properly
  [#1376](rspatial/terra#1376) by
  silasprincipe

- `compareGeom<SpatVector>` did not work
  [#1654](rspatial/terra#1654) by Jason
  Flower

- `buffer<SpatVector>` is now more accurate buffers for lonlat
  polygons [#1616](rspatial/terra#1616) by
  Roberto Amaral-Santos

- `terra:interpNear` used square windows, not circles, beyond 100
  points [#1509](rspatial/terra#1509) by
  Jean-Luc Dupouey

- `vect` read INT64 fields as integers, sometimes leading to
  overflows. [#1666](rspatial/terra#1666) by
  bengannon-fc

- `plot` showed a legend title even if none was requestd if title
  parameters were specified
  . [#1664](rspatial/terra#1664) by Márcia
  Barbosa



## enhancements

n- improved documentation of `writeVector` overwrite when using
  layers. [#1573](rspatial/terra#1573) by
  Todd West

- improved treatment of (supposedly) flipped rasters by Timothée
  Giraud [#1627](rspatial/terra#1627) and
  fchianucci [#1646](rspatial/terra#1646)

- added `map.pal("random")`
  [#1631](rspatial/terra#1631) by Agustin
  Lobo

- expressions can now be used in legend titles
  [#1626](rspatial/terra#1626) by Noah
  Goodkind

- `app` and `tapp` now emit a warning when factors are coerced to
  numeric [#1566](rspatial/terra#1566) by
  shuysman

- `plet<SpatRaster>` now has argument "stretch" for RGB rasters
  [#1596](rspatial/terra#1596) by Agustin

- `%%` and `%/%` now behave the same for SpatRaster as for (base R)
  numbers [#1661](rspatial/terra#1661) by
  Klaus Huebert

## new

- `patches` with option `valus=TRUE` can now distinguish regions based
  on their cell values (instead of only NA vs not-NA)
  [#495](rspatial/terra#495) by Jakub
  Nowosad and [#1632](rspatial/terra#1632)
  by Agustin Lobo

- `rowSums`, `rowMeans`, `colSums` and `colMeans` for SpatRaster

- `metags` for SpatRasterDataset
  [#1624](rspatial/terra#1624) by Andrea
  Manica

- `metags` for layers (bands) of SpatRaster are now saved to and read
  from GTiff files
  [#1071](rspatial/terra#1071) by Mike
  Koontz

- `global` has new effcient functions "anyNA" and "anynotNA"
  [#1540](rspatial/terra#1540) by Kevin J
  Wolz

- `wrap`, `saveRDS` and `serialize` for
  SpatExtent. [#1430](rspatial/terra#1430)
  by BastienFR

- `vect<SpatGraticule>` method suggested in relation to [tidyterra
  #155](dieghernan/tidyterra#155) by Diego
  Hernangómez

- `toMemory<SpatRaster>` and `<SpatRasterDataset>` methods
  [#1660](rspatial/terra#1660) by Derek Friend
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants