Saturday, 14 December 2019

clip - Clipping multiple AOIs from a lascatalog using a dataframe



I'm tryin to clip multiple AOIs from a Lascatalog using a dataframe containing centres and radii of various plots.


I can probably loop through the data frame and use lasclipCircle() to clip each plot and write it. I was wondering if there is a more efficient way to simultaneously do this while retaining the plot ID (from the dataframe) for each file, if possible.



Answer



The documentation of lasclipCircle() states that you can input multiple coordinates (plural is used)



xcenter numeric. x coordinates of discs centers.


ycenter numeric. y coordinates of discs centers.


radius numeric. disc radius or radii.




So it works as you may expect


ctg = readLAScatalog(...)
p = read.table(...)
aois = lasclipCircle(ctg, p$x, p$y, p$radius) # AOIs is a list of LAS

The output is a list of LAS object so you can rename it with you AOIs IDs if you want. And you automatically get access to all the feature of the LAScatalog processing engine so the following works to write your AOIs on files (see the documentation of the engine ?lidR::LAScatalog-class)


opt_filter(ctg) <- "-keep_first"
opt_output_file <- "/folder/AOI_{ID}"
aois = lasclipCircle(ctg, p$x, p$y, 10) # aois is a LAScatalog


You can also find a solution using lasclip() with a shapefile here to preserve attributes with filenames. Something like that will work:


coordinates(p) <- ~x+y # cast to SpatialPointsDataFrame
opt_filter(ctg) <- "-keep_first"
opt_output_file <- "/folder/AOI_{AOIID}" # If AOIID is the name of a column
aois = lasclip(ctg, p, radius = 10)

No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...