LiDAR metric sets by publication

class pyForMetrix.metricCalculators.publications.MCalc_Hollaus_et_al_2009(height_bins_upper=numpy.array)

Metric calculation class

Calculate metrics following Hollaus et al. (2009): Growing stock estimation for alpine forests in Austria: a robust lidar-based approach.

https://doi.org/10.1139/X09-042

See Table 3 in the paper and __call__() for more information.

Parameters:

height_bins_upper – a numpy.ndarray defining the upper limits for the height bin classes

__call__(points_in_poly, CHM_pixel_size=1)

Calculate the metrics

Parameters:
  • points_in_polydict that contains a key points, pointing to a numpy.ndarray of shape (n,3)

  • CHM_pixel_size – the pixel size for the canopy height model calculation

Returns:

  • relative count of first echoes in each canopy height class

Return type:

numpy.ndarray

get_names()

List names of the generated metrics

Returns:

list of strings with the metrics that will be generated. As the number of height bins is given by the user, the length of the list depends on the settings.

Return type:

list

class pyForMetrix.metricCalculators.publications.MCalc_White_et_al_2015

Metric calculation class

Calculate metrics following White et al. (2015): Comparing ALS and Image-Based Point Cloud Metrics and Modelled Forest Inventory Attributes in a Complex Coastal Forest Environment

https://doi.org/10.3390/f6103704

See Table 6 in the paper and __call__() for more information.

__call__(points_in_poly, rumple_pixel_size=1)

Calculate the metrics

Parameters:
  • points_in_polydict that contains a key points, pointing to a numpy.ndarray of shape (n,3)

  • rumple_pixel_size – pixel size used for rumple index calculation

Returns:

  • Hmean

  • CoV

  • Skewness

  • Kurtosis

  • P10

  • P90

  • CCmean

  • Rumple

Return type:

numpy.ndarray

static get_names()

List names of the generated metrics

Returns:

list of strings with the metrics that will be generated.

Return type:

list

class pyForMetrix.metricCalculators.publications.MCalc_Woods_et_al_2009(percentiles=numpy.array, density_percentiles=numpy.array)

Metric calculation class

Calculate metrics following Woods et al. (2009): Predicting forest stand variables from LiDAR data in the Great Lakes – St. Lawrence forest of Ontario

https://doi.org/10.5558/tfc84827-6

See Section “LIDAR based predictors” in the paper and __call__() for more information.

Parameters:
  • percentiles – a numpy.ndarray with values between 0 and 100, representing the percentiles to be calculated

  • density_percentiles – a numpy.ndarray with values between 0 and 100, representing the height percentiles for which densities are calculated

__call__(points_in_poly: dict)

Calculate the metrics

Parameters:

points_in_polydict that contains keys points, echo_number and classification. Each of the keys points to a numpy.ndarray with n entries (3xn for points),

Returns:

  • Statistical metrics (h_mean, h_stddev, h_absdev, h_skew, h_kurtosis)

  • Canopy height metrics (default: p10, p20, p30, p40, p50, p60, p70, p80, p90, p100)

  • Density metrics (default: d10, d20, d30, d40, d50, d60, d70, d80, d90) (The proportion of points above the height percentiles, Shen et al., 2018: https://doi.org/10.3390/rs10111729)

  • Fraction of first returns

  • Fraction of first returns in the vegetation class

Return type:

numpy.ndarray

get_names()

List names of the generated metrics

Returns:

list of strings with the metrics that will be generated. As the percentiles and density metrics can be of different lengths, the length of the list depends on the settings.

Return type:

list

class pyForMetrix.metricCalculators.publications.MCalc_Xu_et_al_2019(percentiles=numpy.array, density_percentiles=numpy.array)

Metric calculation class

Calculate metrics following Xu et al. (2019): Estimation of secondary forest parameters by integrating image and point cloud-based metrics acquired from unmanned aerial vehicle

https://doi.org/10.1117/1.JRS.14.022204

See Table 3 in the paper and __call__() for more information.

Parameters:
  • percentiles – a numpy.ndarray with values between 0 and 100, representing the percentiles to be calculated

  • density_percentiles – a numpy.ndarray with values between 0 and 100, representing the height percentiles for which densities are calculated

__call__(points_in_poly)

Calculate the metrics

Parameters:

points_in_poly – points_in_poly: dict that contains a key points, pointing to a numpy.ndarray of shape (n,3)

Returns:

  • Height percentiles (p10, p25, p30, p40, p60, p75, p85, p90)

  • Density metrics (d10, d25, d30, d40, d60, d75, d85, d90)

    (The proportion of points above the height percentiles, Shen et al., 2018: https://doi.org/10.3390/rs10111729)

  • Height variation metrics (h_mean, h_max, h_min, h_cv)

Return type:

numpy.ndarray

get_names()

List names of the generated metrics

Returns:

list of strings with the metrics that will be generated. As the percentiles and density metrics can be of different lengths, the length of the list depends on the settings.

Return type:

list

LiDAR metric sets by type

class pyForMetrix.metricCalculators.types.MCalc_CoverMetrics
__call__(points_in_poly: dict, rumple_pixel_size=1)

Call self as a function.

class pyForMetrix.metricCalculators.types.MCalc_DensityMetrics(density_percentiles=numpy.array)
__call__(points_in_poly: dict)

Call self as a function.

class pyForMetrix.metricCalculators.types.MCalc_EchoMetrics
__call__(points_in_poly: dict)

Call self as a function.

class pyForMetrix.metricCalculators.types.MCalc_HeightMetrics(percentiles=numpy.array)
__call__(points_in_poly: dict)

Call self as a function.

class pyForMetrix.metricCalculators.types.MCalc_VarianceMetrics
__call__(points_in_poly: dict)

Call self as a function.

class pyForMetrix.metricCalculators.types.MCalc_VisMetrics

Calculate metrics for visualisation of the point cloud data

Parameters:
  • points – np.array of shape (n, 3) with points in a single compute unit – normalized height required

  • progressbar – multiprocessing queue object to push updates to or None

Returns:

np.array of shape (2, ) with metrics: <br /> - Total number of points <br /> - Max. height model (CHM) <br /> - Number of unique strips at location <br />

__call__(points_in_poly: dict)

Call self as a function.

class pyForMetrix.metricCalculators.types.MCalc_lidRmetrics_HOME
__call__(points)

Call self as a function.

class pyForMetrix.metricCalculators.types.MCalc_lidRmetrics_Lmoments
__call__(points)

Call self as a function.

class pyForMetrix.metricCalculators.types.MCalc_lidRmetrics_basic
__call__(points: dict)

Call self as a function.

class pyForMetrix.metricCalculators.types.MCalc_lidRmetrics_canopydensity(num_groups: int = 10)
__call__(points)

Call self as a function.

class pyForMetrix.metricCalculators.types.MCalc_lidRmetrics_dispersion
__call__(points: dict, binsize: float = 1)

Call self as a function.

class pyForMetrix.metricCalculators.types.MCalc_lidRmetrics_echo
__call__(points)

Call self as a function.

class pyForMetrix.metricCalculators.types.MCalc_lidRmetrics_interval(intervals=numpy.array)
__call__(points)

Call self as a function.

class pyForMetrix.metricCalculators.types.MCalc_lidRmetrics_kde
__call__(points, bw=2)

Call self as a function.

class pyForMetrix.metricCalculators.types.MCalc_lidRmetrics_lad

Following http://doi.org/10.1016/j.rse.2014.10.004

__call__(points, dz=1)

Call self as a function.

class pyForMetrix.metricCalculators.types.MCalc_lidRmetrics_percabove(p_above=numpy.array)
__call__(points: dict)

Call self as a function.

class pyForMetrix.metricCalculators.types.MCalc_lidRmetrics_percentiles(percentiles=numpy.array)
__call__(points: dict)

Call self as a function.

class pyForMetrix.metricCalculators.types.MCalc_lidRmetrics_rumple
__call__(points, rumple_pixel_size=1)

Call self as a function.

class pyForMetrix.metricCalculators.types.MCalc_lidRmetrics_voxels
__call__(points, voxel_size=1)

Call self as a function.