I'm trying to learn how to use the options of catalog() within the lidR package in R. I'd like to save directly the processed files, for example, using grid_terrain() function over a catalog and save files keeping the filename of the original LAZ/LAS file.

As you can see in the guide of the package, catalog has the option of save the file using things like {XBOTTOM}_{ID}:

# Internal engine will not return results into R. Instead it will write results in files.
opt_output_files(ctg) <- "/path/to/folder/templated_filename_{XBOTTOM}_{ID}

I'd like to save the files using the same filename, but, I don't know how to configure that part with {} in the opt_output_files() option. I tried several things like, for instance: opt_output_files(cat) <- paste0(output,"/{data$filename}") but, it doesn't work.

lasdir <- "C:/lazfiles"
output <- "C:/output"

cat <- catalog(lasdir)
lasfiles <- cat@data$filename #with this you can see the filenames
opt_progress(cat) <- TRUE
opt_output_files(cat) <- paste0(output,"/{data$filename}")
opt_cores(cat) <- 3
opt_chunk_buffer(cat) <- 20

#function that I want to use over the catalog files
mdt <- grid_terrain(cat, res = 5, algorithm = knnidw(k = 5, p = 2)) 

1 Answer 1


Found the answer in the grid_terrain help section "supported processing options":

output_files: Return the output in R or write each cluster’s output in a file. Supported templates are ... , ORIGINALFILENAME.

This is the solution:

opt_output_files(cat) <- paste0(output,"/{ORIGINALFILENAME}")

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.