rr-raster

rasterFromXYZ missing value where TRUE/FALSE needed


I have been having some strange error messages from the rasterFromXYZ function in the R raster package. Here is an example

library(raster)
xyz <- data.frame(x = c(5.463636, 5.481818, 5.5), y = c(51.42727, 51.42727, 51.42727), z = c(1.2,1.3,1.6))

r <- rasterFromXYZ(xyz)

##error
Error in if (nc > (2^31 - 1)) return(FALSE) : 
missing value where TRUE/FALSE needed
In addition: Warning message:
In min(dy) : no non-missing arguments to min; returning Inf

##specifying the resolution as 1
r <- rasterFromXYZ(xyz, res = 1)

##different error
Error in rasterFromXYZ(xyz, res = 1) : x cell sizes are not regular

The x coordinates are perfectly regular. What am I doing wrong?


Solution

  • The x-coordinates are OK, but there is only one unique y-coordinate value. So there is no way to guess the vertical resolution.

    xyz
    #         [,1]     [,2] [,3]
    #[1,] 5.463636 51.42727  1.2
    #[2,] 5.481818 51.42727  1.3
    #[3,] 5.500000 51.42727  1.6
    

    If you set the resultion to 1 that does not match the x-coordinates, but you can do

    rasterFromXYZ(xyz, res=c(NA, 1))
    #class      : RasterLayer 
    #dimensions : 1, 3, 3  (nrow, ncol, ncell)
    #resolution : 0.018182, 1  (x, y)
    #extent     : 5.454545, 5.509091, 50.92727, 51.92727  (xmin, xmax, ymin, ymax)
    #crs        : NA 
    #source     : memory
    #names      : layer 
    #values     : 1.2, 1.6  (min, max)
    

    The development version now gives a better error message:

    r <- rasterFromXYZ(xyz)
    #Error in rasterFromXYZ(xyz) : more than one unique y value needed