lascanopy computes canopy cover, density (-cov, -dns) and relative layer densities (-d)

1,785 views
Skip to first unread message

Martin Isenburg

unread,
Apr 15, 2013, 6:55:44 AM4/15/13
to LAStools - efficient tools for LiDAR processing
Hello,

the most recent release of LAStools (130409) fixes a bug in the TIF
raster writer that affected any non-float single-band output such as
density and intensity rasters or gray shaded images. In addition there
should be correct geo-references in the GeoTIFF tags now.

The lascanopy tool has a few more metrics. The tool now also produce
the canopy cover using option '-cov'. The canopy cover is computed as
the number of first returns above the height cutoff divided by the
number of all first returns and output as a percentage.

lascanopy -i forest\*.laz -merged -cov -otif

Similarly, with the option '-dns' the canopy density can be produced.
The canopy density is computed as the number of points above the
height cutoff divided by the number of all returns.

lascanopy -i other_forest\*.laz -merged -dns -obil

In addition, the tool can also concurrently produce several height
count rasters. The option '-c 0.5 2 4 10 50', for example, would
compute four rasters that count the points whose heights are falling
into the intervals: [0.5, 2), [2, 4), [4, 10), and [10, 50).

lascanopy -i area1\*.laz -merged -d 0.5 2 4 10 50 -oasc

In the same manner the option '-d 0.5 2 4 10 50' will produce a
relative height density raster in which the above counts are divided
by the total number of points and scaled to a percentage.

lascanopy -i area1\*.laz -merged -d 0.5 2 4 10 50 -odtm

All these products can be requested simultaneously. If you could check
the new functionality and report any issues back to me. I hope they
compute the correct this but I am (still) not a forester. See the
README file for more details.

http://lastools.org/download/lascanopy_README.txt

Regards,

Martin @rapidlasso

--
http://rapidlasso.com - fast tools for forests full of LiDAR

Terje Mathisen

unread,
Apr 15, 2013, 7:47:55 AM4/15/13
to last...@googlegroups.com
Martin Isenburg wrote:
> Hello,
>
> the most recent release of LAStools (130409) fixes a bug in the TIF
> raster writer that affected any non-float single-band output such as
> density and intensity rasters or gray shaded images. In addition there
> should be correct geo-references in the GeoTIFF tags now.
>
> The lascanopy tool has a few more metrics. The tool now also produce
> the canopy cover using option '-cov'. The canopy cover is computed as
> the number of first returns above the height cutoff divided by the
> number of all first returns and output as a percentage.
>
> lascanopy -i forest\*.laz -merged -cov -otif

Nice...
>
> Similarly, with the option '-dns' the canopy density can be produced.
> The canopy density is computed as the number of points above the
> height cutoff divided by the number of all returns.
>
> lascanopy -i other_forest\*.laz -merged -dns -obil

Very good....
>
> In addition, the tool can also concurrently produce several height
> count rasters. The option '-c 0.5 2 4 10 50', for example, would
> compute four rasters that count the points whose heights are falling
> into the intervals: [0.5, 2), [2, 4), [4, 10), and [10, 50).
>
> lascanopy -i area1\*.laz -merged -d 0.5 2 4 10 50 -oasc

Even better!

>
> In the same manner the option '-d 0.5 2 4 10 50' will produce a
> relative height density raster in which the above counts are divided
> by the total number of points and scaled to a percentage.
>
> lascanopy -i area1\*.laz -merged -d 0.5 2 4 10 50 -odtm

and this is pretty much perfect!

My own code which does vegetation cover/runnability classification for
orienteering base maps uses the standard 4 vegetation heights
(ground/low/medium/high) and base the decision on the percentage of
returns from each class:

I generate a benchmark which consists of a bunch of different patches
which have been manually determined (as "Light green, Medium green,
Dense green, Yellow (open), "Open with low brush", "High canopy plus low
brush" etc, then I look for the closest match for all other terrain areas.

>
> All these products can be requested simultaneously. If you could check
> the new functionality and report any issues back to me. I hope they
> compute the correct this but I am (still) not a forester. See the
> README file for more details.

If I can get all the percentage counts from a single run, then I can get
rid of most of my current perl code. :-)

BTW, the method I am using to accumulate the counts is somewhat interesting:

I first classify each point as ground/low/medium/high, then I use this
class value in a lookup table for a set of increments:

These are 1, 256, 65536, (1 << 24) so that I can use a single 32-bit
variable to collect all the counts for a given cell, as long as the cell
size and point density is such that there can never be more than 255
points of each class in a given cell.

The nearest match search is a brute force minimum distance (sum of
squares of delta for each class) classifier, I have considered various
ways to speedup this, including memoization, but I need an awful lot of
cells (and/or a _lot_ of benchmark cells) to make this a win.

Terje

--
- <Terje.M...@tmsw.no>
"almost all programming can be viewed as an exercise in caching"

Alessandro Montaghi

unread,
Apr 15, 2013, 7:56:53 AM4/15/13
to last...@googlegroups.com
Hi all,

I would like to say something about canopy cover (or vegetation ratio). In forest research with LiDAR this metrics one of the most important metrics to compute the growing stock, the biomass, etc.. However  there is not an unique formula to define the value of this metric. One of the best paper about this metric and the different mathematical ways to define is:

Hopkinson, C. & Chasmer, L. Testing LiDAR models of fractional cover across multiple forest ecozones. Remote Sensing of Environment, 2009, 113, 275–288     
 
/Ale






--
Alessandro Montaghi

just some stuff:

"Python where we can, C++ where we must"

"My favorite part of the code in R are the lines of #"

Top 10 Things That Computer Programmers Hate:
     1. Waking Up Early
     2. Writing The F*cking Manual
     3. Not Drinking Coffee
     4. Reviewing Your Own Code 3 Months Later
     5. codes from other programmers without comments
     6. Error Checking
     7. (Not) Backing Up
     8. Debugging
     9. Leaving The House When Important Findings Come Up 
    10. Mathematic or Physics Formulas

Alessandro Montaghi

unread,
Apr 15, 2013, 8:43:52 PM4/15/13
to last...@googlegroups.com
In order to suggest another metric related with the shape of the trees, I wish to suggest "canopy relief ratio":

extracted by my new paper 

Canopy Relief-Ratio is a quantitative descriptor of the relative shape of the canopy from altimetry observation (Parker and Russ, 2004; Pike and Wilson, 1997), defined as mean height returns minus the minimum height divided by the maximum height minus the minimum height. This ratio reflects the degree to which canopy surfaces are in the upper (> 0.5) or in the lower (< 0.5) portions of the height range.

Parker, G. G., and Russ, E. M. 2004. The canopy surface and stand development assessing forest canopy structure and complexity with near-surface altimetry. Forest Ecology and Management, 189, pp. 307-315. 
Pike, R. J., and Wilson, S. E. 1971. Elevation-relief ratio, hypsometric integral, and geomorphic area-altitude analysis. Bulletin of the Geological Society of America, 82, pp. 1079-1084. 








On Tue, Apr 16, 2013 at 1:02 AM, Gherardo Chirici <gchi...@gmail.com> wrote:
Good job Martin.
You are close to a Honoris Causa graduation in forestry!

Please in one of the future development please include also two more popular metrics for forestry: skewness and kurtosis.
In this paper their definition.


Thank you to Alessandro Montaghi who passed me this paper...

Cheers,

Gherardo

--

Martin Isenburg

unread,
Jul 31, 2013, 1:37:25 PM7/31/13
to last...@googlegroups.com
Hello.

I finally gotten around to add skewness (-kur) and kurtosis (-ske) raster computation to lascanopy. It uses the same formulas as FUSION, in particular there is no offset of minus 3 for the kurtosis computation. Also all the metrics such as min,max,avg,std will now return 0 (instead of no_data) when all points in a grid cell were below the height cutoff.

lascanopy -i tile_418000_4604000.laz ^
                -max -avg -std -ske -kur ^
                -cov -dns ^
                -p 10 25 50 75 90 95 ^
                -d 2.0 5.0 10.0 20.0 50.0 ^
                -odtm


Thanks to Charles Swift, Andrew Hudak, Benjamin Bright and others for motivating, feedback, and bug checking.

Cheers,

Martin @rapidlasso
Reply all
Reply to author
Forward
0 new messages