classify | R Documentation |
Classify points that meet some criterion and/or that belong in a region of interest. The
functions updates the attribute Classification
of the LAS object according to
las specifications
classify_ground(las, algorithm, last_returns = TRUE)
classify_noise(las, algorithm)
classify_poi(
las,
class,
poi = NULL,
roi = NULL,
inverse_roi = FALSE,
by_reference = FALSE
)
las |
An object of class LAS or LAScatalog. |
algorithm |
An algorithm for classification. lidR has has: sor, ivf for noise classification, and pmf, csf, mcc for ground classification (see respective documentation). |
last_returns |
logical. The algorithm will use only the last returns (including the first returns
in cases of a single return) to run the algorithm. If FALSE all the returns are used. If the attributes
|
class |
The ASPRS class to attribute to the points that meet the criterion. |
poi |
a formula of logical predicates. The points that are |
roi |
A |
inverse_roi |
bool. Inverses the |
by_reference |
bool. Updates the classification in place (LAS only). |
Classify points as 'noise' (outliers) with several possible algorithms. lidR has: sor, ivf. The points classified as 'noise' are assigned a value of 18.
Classify points as 'ground' with several possible algorithms. lidR has pmf, csf and mcc. The points classified as 'ground' are assigned a value of 2
Classify points that meet some logical criterion and/or that belong in a region of interest with class of choice.
The option select
is not supported and not respected because it always preserves the file format
and all the attributes. select = "*"
is imposed internally.
# ===============
# Classify ground
# ===============
if (require(RCSF, quietly = TRUE))
{
LASfile <- system.file("extdata", "Topography.laz", package="lidR")
las <- readLAS(LASfile, select = "xyzrn", filter = "-inside 273450 5274350 273550 5274450")
# (Parameters chosen mainly for speed)
mycsf <- csf(TRUE, 1, 1, time_step = 1)
las <- classify_ground(las, mycsf)
#plot(las, color = "Classification")
}
# ===============
# Classify noise
# ===============
LASfile <- system.file("extdata", "Topography.laz", package="lidR")
las <- readLAS(LASfile, filter = "-inside 273450 5274350 273550 5274450")
# Add 20 artificial outliers
set.seed(314)
id = round(runif(20, 0, npoints(las)))
set.seed(42)
err = runif(20, -50, 50)
las$Z[id] = las$Z[id] + err
# Using IVF
las <- classify_noise(las, ivf(5,2))
#plot(las, color = "Classification")
# Remove outliers using filter_poi()
las_denoise <- filter_poi(las, Classification != LASNOISE)
# ===============
# Classify POI
# ===============
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")
lake <- sf::st_read(shp, quiet = TRUE)
# Classifies the points that are NOT in the lake and that are NOT ground points as class 5
poi <- ~Classification != LASGROUND
las <- classify_poi(las, LASHIGHVEGETATION, poi = poi, roi = lake, inverse = TRUE)
# Classifies the points that are in the lake as class 9
las <- classify_poi(las, LASWATER, roi = lake, inverse = FALSE)
#plot(las, color = "Classification")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.