Merge a point cloud with a source of spatial data. It adds an attribute along each point based on a value found in the spatial data. Sources of spatial data can be a SpatialPolygons*, an sf/sfc, a Raster*, a stars, or a SpatRaster.
SpatialPolygons*, sf and sfc: it checks if the points belongs within each polygon. If the parameter attribute is the name of an attribute in the table of attributes it assigns to the points the values of that attribute. Otherwise it classifies the points as boolean. TRUE if the points are in a polygon, FALSE otherwise.
RasterLayer, single band stars or single layer SpatRaster: it attributes to each point the value found in each pixel of the raster.
RasterStack, RasterBrick, multibands stars or multilayer SpatRaster must have 3 layers for RGB colors. It colorizes the point cloud with RGB values.
merge_spatial(las, source, attribute =NULL)
Arguments
las: An object of class LAS
source: An object of class SpatialPolygons* or sf or sfc or RasterLayer or RasterStack or RasterBrick or stars.
attribute: character. The name of an attribute in the table of attributes or the name of a new column in the LAS object. Not relevant for RGB colorization.
Returns
a LAS object
Examples
LASfile <- system.file("extdata","Megaplot.laz", package="lidR")shp <- system.file("extdata","lake_polygons_UTM17.shp", package ="lidR")las <- readLAS(LASfile, filter ="-keep_random_fraction 0.1")lakes <- sf::st_read(shp, quiet =TRUE)# The attribute "inlake" does not exist in the shapefile.# Points are classified as TRUE if in a polygonlas <- merge_spatial(las, lakes,"inlakes")# New attribute 'inlakes' is added.names(las)forest <- filter_poi(las, inlakes ==FALSE)#plot(forest)# The attribute "LAKENAME_1" exists in the shapefile.# Points are classified with the values of the polygonslas <- merge_spatial(las, lakes,"LAKENAME_1")# New column 'LAKENAME_1' is added.names(las)