RobertoAS
RobertoAS

Reputation: 89

Issue with using Raster::reclassify with CropscapeR package data in Linux

I am using the package CropscapeR to get Cropland Data Layer (CDL) rasters. However, when I try to mask this raster using reclassify I sometimes run into issues. Since I am a Linux user (for R and OS specs see below), I have to do a distinct process to access the data than windows/mac users which involves the package httr and a tif file. This is the standard process recommended by the CropscapeR creator. If I then run raster::reclassify in my data, I have no problems. However, if I save the my RData and then reopen/restart R, and try to run raster::reclassify, it does not work. In particular, I get the following error message: Error: C stack usage 7977940 is too close to the limit. Also, I have a bunch of warnings of the sort:

    1: In new_CppObject_xp(fields$.module, fields$.pointer, ...) : 
    GDAL Error 4: /tmp/Rtmpf7yIsG/file28f21b32987a.tif: File or folder does not exist

Here is the code I am trying to run:

library(CropScapeR)    
library(httr)    
library(raster)    
library(sf)    

#Skip the SSL check    
httr::set_config(httr::config(ssl_verifypeer = 0L))    
#Automatically generate a temporary path to save the data    
tif_file <- tempfile(fileext = '.tif')    
#Download the raster TIF file into specified path, also read into R     
ST_CDL <- GetCDLData(aoi = '34007', year = 2021, type = 'f', save_path = tif_file)    

#The output file ST_CDL I get is a Formal class RasterLayer.    
#This is the way I am trying to mask the values of the raster I do not want.    
#Notice, again, that this code runs if I do it in sequence, I only get into    
#trouble if I first get ST_CDL, then save it as RData, reopen/restart R and     
#then try to run the code below directly without getting ST_CDL again through    
#the above process.

ST_CDL_blueberries <- 
  raster::reclassify(ST_CDL,
                     c(-0.1,241.9,NA,
                       242.1,255.1,NA),
                     progress="text")

My specs:

Thanks for your help!

I got my data, saved it, restarted R and tried to run the code from there (without getting the data again). Supposedly this should work, but it did not.

Upvotes: 1

Views: 81

Answers (1)

RobertoAS
RobertoAS

Reputation: 89

I managed to solve the problem by writing my raster. Namely, I did the following:

library(CropScapeR)    
library(httr)    
library(raster)    
library(sf)    

#Skip the SSL check    
httr::set_config(httr::config(ssl_verifypeer = 0L))    
#Automatically generate a temporary path to save the data    
tif_file <- tempfile(fileext = '.tif')    
#Download the raster TIF file into specified path, also read into R     
ST_CDL <- GetCDLData(aoi = '34007', year = 2021, type = 'f', save_path = tif_file)
#Now I write and save the raster, so it is available next time I open R
writeRaster(ST_CDL, "ST_CDL.tif", overwrite=TRUE)
ST_CDL = raster("ST_CDL.tif")  

ST_CDL_blueberries <- raster::reclassify(ST_CDL,
                 c(-0.1,241.9,NA,
                   242.1,255.1,NA),
                 progress="text")

Upvotes: 0

Related Questions