TreeLS
High performance R functions for forest data processing based on Terrestrial Laser Scanning (but not only) point clouds.
https://github.com/tiagodc/TreeLS
Category: Biosphere
Sub Category: Forest Remote Sensing
Last synced: about 12 hours ago
JSON representation
Repository metadata
R functions for processing individual tree TLS point clouds
- Host: GitHub
- URL: https://github.com/tiagodc/TreeLS
- Owner: tiagodc
- License: gpl-3.0
- Created: 2016-05-16T16:36:48.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2023-06-10T05:26:53.000Z (almost 2 years ago)
- Last Synced: 2025-04-17T21:21:32.876Z (10 days ago)
- Language: C++
- Size: 49.1 MB
- Stars: 88
- Watchers: 10
- Forks: 30
- Open Issues: 24
- Releases: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
README.md
TreeLS
High performance R functions for forest data processing based on Terrestrial Laser Scanning (but not only) point clouds.
Description
This package is a refactor of the methods described in this paper, among many other features for 3D point cloud processing of forest environments.
Most algorithms are written in C++ and wrapped in R functions through Rcpp
. TreeLS is built on top of lidR, using its LAS
infrastructure internally for most methods.
For any questions, comments or bug reports please submit an issue here on GitHub. Suggestions, ideas and references of new algorithms are always welcome - as long as they fit into TreeLS' scope.
TreeLS
is currently on v2.0.2. To install it from an official mirror, use: install.packages("TreeLS")
. To install the most recent version, check out the Installation from source section below.
News
-
August/2020: Version 2.0 is finally available! It's a major release, introducing several new functionalities, bug fixes, more robust estimators for noisy clouds and more flexible plotting. All functionalities from older versions are now available and optimized, so there should be no need to use legacy code anymore. The scope of application of TreeLS has become much wider in this version, specially due to the introduction of functions like
fastPointMetrics
andshapeFit
, making it much easier for researchers to assess point cloud data in many contexts and develop their own methods on top of those functions. For a comprehensive list of the updates check out the CHANGELOG. -
March/2019:
TreeLS
is finally available on CRAN and is now an official R package.
Main functionalities
- Tree detection at plot level
- Tree region assignment
- Stem detection and denoising
- Stem segmentation
- Forest inventory
- Fast calculation of point features
- Research basis and other applications
- 3D plotting and manipulation
Installation from source
Requirements
- Rcpp compiler:
- on Windows: install Rtools for your R version - make sure to add it to your system's path
- on Mac: install Xcode
- on Linux: be sure to have
r-base-dev
installed
Install TreeLS latest version
On the R console, run:
remotes::install_github('tiagodc/TreeLS')
Usage
Example of full processing workflow from reading a point cloud file until stem segmentation of a forest plot:
library(TreeLS)
# open sample plot file
file = system.file("extdata", "pine_plot.laz", package="TreeLS")
tls = readTLS(file)
# normalize the point cloud
tls = tlsNormalize(tls, keep_ground = F)
x = plot(tls)
# extract the tree map from a thinned point cloud
thin = tlsSample(tls, smp.voxelize(0.02))
map = treeMap(thin, map.hough(min_density = 0.1), 0)
add_treeMap(x, map, color='yellow', size=2)
# classify tree regions
tls = treePoints(tls, map, trp.crop())
add_treePoints(x, tls, size=4)
add_treeIDs(x, tls, cex = 2, col='yellow')
# classify stem points
tls = stemPoints(tls, stm.hough())
add_stemPoints(x, tls, color='red', size=8)
# make the plot's inventory
inv = tlsInventory(tls, d_method=shapeFit(shape='circle', algorithm = 'irls'))
add_tlsInventory(x, inv)
# extract stem measures
seg = stemSegmentation(tls, sgt.ransac.circle(n = 20))
add_stemSegments(x, seg, color='white', fast=T)
# plot everything once
tlsPlot(tls, map, inv, seg, fast=T)
# check out only one tree
tlsPlot(tls, inv, seg, tree_id = 11)
#------------------------------------------#
### overview of some new methods on v2.0 ###
#------------------------------------------#
file = system.file("extdata", "pine.laz", package="TreeLS")
tls = readTLS(file) %>% tlsNormalize()
# calculate some point metrics
tls = fastPointMetrics(tls, ptm.knn())
x = plot(tls, color='Verticality')
# get its stem points
tls = stemPoints(tls, stm.eigen.knn(voxel_spacing = .02))
add_stemPoints(x, tls, size=3, color='red')
# get dbh and height
dbh_algo = shapeFit(shape='cylinder', algorithm = 'bf', n=15, inliers=.95, z_dev=10)
inv = tlsInventory(tls, hp = .95, d_method = dbh_algo)
add_tlsInventory(x, inv)
# segment the stem usind 3D cylinders and getting their directions
seg = stemSegmentation(tls, sgt.irls.cylinder(n=300))
add_stemSegments(x, seg, color='blue')
# check out a specific tree segment
tlsPlot(seg, tls, segment = 3)
Owner metadata
- Name: Tiago de Conto
- Login: tiagodc
- Email:
- Kind: user
- Description: Forester, data scientist and software developer - currently focusing on fields related to forest monitoring, remote sensing and point cloud processing.
- Website:
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/19391644?u=ec7b461eae0f04e6ff37394a483c2ad77f0d9241&v=4
- Repositories: 24
- Last ynced at: 2024-04-14T06:13:42.048Z
- Profile URL: https://github.com/tiagodc
GitHub Events
Total
- Watch event: 4
- Issue comment event: 3
- Pull request event: 1
- Fork event: 2
Last Year
- Watch event: 4
- Issue comment event: 3
- Pull request event: 1
- Fork event: 2
Committers metadata
Last synced: 6 days ago
Total Commits: 319
Total Committers: 6
Avg Commits per committer: 53.167
Development Distribution Score (DDS): 0.041
Commits in past year: 1
Committers in past year: 1
Avg Commits per committer in past year: 1.0
Development Distribution Score (DDS) in past year: 0.0
Name | Commits | |
---|---|---|
tiagodc | t****9@y****r | 306 |
Tiago de Conto | t****c@T****l | 5 |
tiagodc | t****l@g****m | 5 |
Anthony Marcozzi | a****i@g****m | 1 |
Caio Hamamura | c****a@g****m | 1 |
Jean-Romain | J****n | 1 |
Committer domains:
- yahoo.com.br: 1
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 53
Total pull requests: 4
Average time to close issues: 27 days
Average time to close pull requests: 6 months
Total issue authors: 31
Total pull request authors: 4
Average comments per issue: 2.77
Average comments per pull request: 0.25
Merged pull request: 3
Bot issues: 0
Bot pull requests: 0
Past year issues: 1
Past year pull requests: 1
Past year average time to close issues: 7 days
Past year average time to close pull requests: N/A
Past year issue authors: 1
Past year pull request authors: 1
Past year average comments per issue: 2.0
Past year average comments per pull request: 1.0
Past year merged pull request: 0
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- mavavilj (6)
- stefanoch90 (5)
- mansi-aggarwal-2504 (5)
- Jean-Romain (3)
- npuletti (3)
- jdonager (3)
- spokswinski (2)
- karasinski88 (2)
- bbrede (2)
- timwh (1)
- aasthaagarwal17 (1)
- mayhaw (1)
- LiuQW-YNnormal (1)
- sweco-sekrsv (1)
- tomishninja (1)
Top Pull Request Authors
- caiohamamura (1)
- amarcozzi (1)
- Jean-Romain (1)
- spono (1)
Top Issue Labels
- bug (7)
- question (6)
- help wanted (3)
- enhancement (1)
Top Pull Request Labels
Dependencies
- R >= 3.3.0 depends
- data.table >= 1.12.0 depends
- lidR >= 3.0.0 depends
- magrittr >= 1.5 depends
- RCSF * imports
- benchmarkme * imports
- deldir * imports
- dismo * imports
- glue * imports
- mathjaxr * imports
- nabor * imports
- raster * imports
- rgl * imports
- rlas * imports
- sp * imports
Score: 6.51025834052315