RE: [LAStools] Lascanopy [SEC=UNOFFICIAL]

190 views
Skip to first unread message

Jonah.S...@ga.gov.au

unread,
Jan 27, 2014, 4:01:54 PM1/27/14
to last...@googlegroups.com
My organisation often requires a FCM surface.

We don't use it (at least I haven't personally), but as a federal agency we manage acquisition contracts for smaller entities and many agencies want it.

Here is the item that describes FCM from a recent survey tender document:

Foliage Cover Model (FCM):
* This FCM is calculated and averaged over a 10m resolution due to the nature of the foliage cover in trees; especially in overlapping canopies, and is again linked with the previous measurement for describing vegetation types.
* 10m grid
* One minus the gap fraction probability as defined by the proportion of counts from all vegetation returns at least 2m above the ground for each 2m bin expressed as a percentage (%)
* Non-thinned data must be used
* Void areas (i.e., areas outside the project boundary but within any tiling scheme) shall be coded using a unique "NODATA" value

Jonah Sullivan
Geospatial Analyst  |  National Geographic Information Group
Environmental Geoscience Division  |  GEOSCIENCE AUSTRALIA
____________________________________________________________
Phone:  +61 2 6249 9516    Fax:  +61 2 6249 9999
Email:  Jonah.S...@ga.gov.au    Web:  www.ga.gov.au
Cnr Jerrabomberra Avenue and Hindmarsh Drive Symonston ACT
GPO Box 378 Canberra ACT 2601 Australia
Applying geoscience to Australia's most important challenges

-----Original Message-----
From: last...@googlegroups.com [mailto:last...@googlegroups.com] On Behalf Of Martin Isenburg
Sent: Saturday, 25 January 2014 12:07
To: LAStools - efficient command line tools for LIDAR processing
Subject: Re: [LAStools] Lascanopy

Hello Edgar,

> If this is a standard canopy model (to us it seems it is) and if there is indeed no straightforward solution in lascanopy, would Martin be willing to add this function to lascanopy?

I would. Assuming that what you describe is a standard product. To me it seems a slight re-formulation of 'canopy cover' that gives the higher number to when there are 'gaps' instead of 'cover' in the
canopy:

FCM_percent = 100% - CHM_percent
FCM_fraction = FCM_percent / 100

But we will need the input of some accredited foresters here. Who wants FCM and is it really called that by anyone else?

Martin

--
Download LAStools at
http://lastools.org
http://rapidlasso.com
Be social with LAStools at
http://facebook.com/LAStools
http://twitter.com/LAStools
http://linkedin.com/groups/LAStools-4408378
Manage your settings at
http://groups.google.com/group/lastools/subscribe

Geoscience Australia Disclaimer: This e-mail (and files transmitted with it) is intended only for the person or entity to which it is addressed. If you are not the intended recipient, then you have received this e-mail by mistake and any use, dissemination, forwarding, printing or copying of this e-mail and its file attachments is prohibited. The security of emails transmitted cannot be guaranteed; by forwarding or replying to this email, you acknowledge and accept these risks.
-------------------------------------------------------------------------------------------------------------------------

Veldman, Edgar

unread,
Feb 3, 2014, 9:58:17 PM2/3/14
to last...@googlegroups.com
Hi all,

In an offline discussion with Martin we have been talking about which data should be used for the gap fraction calculations.

Based on a dataset with class ground and class vegetation, in my opinion (and based on the specifications in tender documents received), this should be the ratio between the count of (all vegetation returns >2m) versus the count of ((all vegetation returns >2m) and (ground returns))

Formula: Gap_fraction_2m = 100% x (All returns > 2m) / (All returns > 2m + all ground returns)

We can find this definition in ICSM's Lidar specifications on page 15, section 7, deliverable 5:
http://www.icsm.gov.au/elevation/LiDAR_Specifications_and_Tender_Template.pdf

But in Martin's opinion, this product should be based on all 1st returns only.
Formula: Gap_fraction_2m = 100% x (Count_1st_returns > 2m) / (Count_1st_returns)

I think the latter can be achieved by adding a -first_only flag to the lascanopy syntax, but if Martin's formula is implemented as a default, it's impossible to use all returns for the calculations.

What does the user group think?
Is either one the standard or should both be implemented?

Thanks,
Edgar

Terje Mathisen

unread,
Feb 4, 2014, 1:29:56 AM2/4/14
to last...@googlegroups.com
Veldman, Edgar wrote:
> Hi all,
>
> In an offline discussion with Martin we have been talking about which
> data should be used for the gap fraction calculations.
>
> Based on a dataset with class ground and class vegetation, in my
> opinion (and based on the specifications in tender documents
> received), this should be the ratio between the count of (all
> vegetation returns >2m) versus the count of ((all vegetation returns
> >2m) and (ground returns))
>
> Formula: Gap_fraction_2m = 100% x (All returns > 2m) / (All returns
> > 2m + all ground returns)
>
> We can find this definition in ICSM's Lidar specifications on page
> 15, section 7, deliverable 5:
> http://www.icsm.gov.au/elevation/LiDAR_Specifications_and_Tender_Template.pdf
>
> But in Martin's opinion, this product should be based on all 1st
> returns only. Formula: Gap_fraction_2m = 100% x (Count_1st_returns >
> 2m) / (Count_1st_returns)
>
> I think the latter can be achieved by adding a -first_only flag to
> the lascanopy syntax, but if Martin's formula is implemented as a
> default, it's impossible to use all returns for the calculations.

It is pretty obvious that it is far more flexible to use all returns by
default and require a filter (which Martin already has in all his tools
anyway) for the -first_only case.

More importantly: It is quite possible that we can find areas with so
dense cover that there are (close to) zero first returns from ground,
isn't it?

I realize that this isn't critical, it just leads to a gap fraction of 100%.

I guess the philosophical answer is that if the name "Gap fraction" is
to be taken literally, then Martin is correct that only first returns
should count, since a first return from ground indicates a spot with a
gap in the canopy, but if you want something that corresponds to canopy
density, then all returns is a better metric.

If you require the filter in order to get Martin's version then both
will be available.

Terje

PS. Personally I'd just use las2txt and pipe the result into a small
perl program, but that's just me. :-)
--
- <Terje.M...@tmsw.no>
"almost all programming can be viewed as an exercise in caching"

Antonio Ruiz

unread,
Feb 4, 2014, 3:39:28 AM2/4/14
to last...@googlegroups.com
In my opinion both should be implemented as both give reasonable results. Our customers prefer counting 1st returns only. I would suggest being flexible also with the heigh threshold. 2 m is appropriate to include bushes in the canopy coverage but if you want to take into account only trees, 4 or 5 m would be preferred. I recommend setting the threshold also as a parameter.

Regards


2014-02-04 Veldman, Edgar <E.Ve...@fugro.com>:

Hou Zhengyang

unread,
Feb 4, 2014, 4:35:40 AM2/4/14
to last...@googlegroups.com

Being forester in the user group, I would agree with Antonio to set the height threshold as a parameter so as  to accommodate various applications. We’ve presented some relevant results on how mapping accuracy could vary as a function of this threshold in tropical forests at the Silvilaser 2013, with a figure attached below.

 

Regards,

Zhengyang HOU

 

Martin Isenburg

unread,
Feb 4, 2014, 4:54:56 AM2/4/14
to LAStools - efficient command line tools for LIDAR processing
Hello folks,

ever since lascanopy was released (for Silvilaser 2012) the tools has supported '-height_cutoff 2.0' as an optional parameter (see GUI or README). The default is set to 1.37m as this seemed to be Andrew Hudak's favorite value at the time. This is not the discussion we are having here. The question here is ... how is canopy gap fraction defined? We currently have

canopy cover:
cov = 100%*first_returns_above_threshold/all_first_returns

canopy density:
dns = 100%*all_returns_above_threshold/all_returns

the new one(s) is (are)

canopy cover gap (????):
gap1 = 100% - cov

canopy density gap (????):
gap2 = 100% - dns

(and all the same as fractions). which ones do foresters need and use in practice. This tool is for you and I want to make sure all its metrics are relevant instead of including something that may be defined in some tender document somewhere but has no practical use ... from the redundancy  that I have seen in tender documents in the past I question whether all of the above products are actually needed.

would you ever produce both the canopy cover as well as the canopy gap? or can we just have a switch called 'gap' to invert the percentages from coverages into gaperages.

Martin





Nick Vaughn

unread,
Feb 4, 2014, 12:35:01 PM2/4/14
to last...@googlegroups.com
Hi,
I had to throw some thoughts in.  This is probably too pedantic, but...
"Gap fraction" is a pretty clearly defined term in forest ecology that is correlated with, but not really represented by any of the proposed metrics. It is more of a point metric that integrates all azimuth and zenith angles.  Using it in this context may become confusing to someone somewhere down the line.

If true gap fraction is what is wanted, then I agree with Martin, in that the proportion of first returns hitting the ground is more representative of what would be implied by the term - whether or not a ray of light intercepts a leaf. 

Under this plan, if one wanted to incorporate the secondary returns, then they could be quantified as marginal probabilities, and perhaps averaged together.  Something like:

[number of second returns (with first return hitting canopy) that are classified as ground] / number of second returns (with first return hitting canopy).
[number of third returns (with second return hitting canopy) that are classified as ground] / number of third returns (with second return hitting canopy).
...etc...

Not to say that the canopy density metric has no value and should not be included with an option, I'm mostly concerned with the terminology.

-Nick


Hudak, Andrew -FS

unread,
Feb 4, 2014, 2:05:08 PM2/4/14
to last...@googlegroups.com

The way Martin has defined the terms and formulas below sounds great and most sensible to me. I recommended a default of 1.37m (breast height) as a height threshold but if more users prefer 2m as the default then that’s not a problem as long as it’s a user-defined parameter.

 

From: last...@googlegroups.com [mailto:last...@googlegroups.com] On Behalf Of Martin Isenburg


Sent: Tuesday, February 04, 2014 1:55 AM
To: LAStools - efficient command line tools for LIDAR processing

--





This electronic message contains information generated by the USDA solely for the intended recipients. Any unauthorized interception of this message or the use or disclosure of the information it contains may violate the law and subject the violator to civil or criminal penalties. If you believe you have received this message in error, please notify the sender and delete the email immediately.

Veldman, Edgar

unread,
Feb 4, 2014, 8:14:10 PM2/4/14
to last...@googlegroups.com

Hi,

 

Thanks all, for your contributions to this discussion.

 

To close off my initial question, I am happy with Martin’s formulas. Having the option to use all returns is all that we need at this stage.

To keep it clean, the switch to either generate a fraction or a percentage seems fine.

 

With regards to terminology, I guess following the ICSM Lidar specifications would minimise confusion for the end-user, as these naming conventions and specifications seem be to be widely used all over the Lidar industry worldwide.

 

Thanks,
Edgar

 

 

From: last...@googlegroups.com [mailto:last...@googlegroups.com] On Behalf Of Nick Vaughn
Sent: Wednesday, 5 February 2014 1:35 AM
To: last...@googlegroups.com
Subject: Re: [LAStools] Lascanopy [SEC=UNOFFICIAL]

 

Hi,


I had to throw some thoughts in.  This is probably too pedantic, but...
"Gap fraction" is a pretty clearly defined term in forest ecology that is correlated with, but not really represented by any of the proposed metrics. It is more of a point metric that integrates all azimuth and zenith angles.  Using it in this context may become confusing to someone somewhere down the line.

If true gap fraction is what is wanted, then I agree with Martin, in that the proportion of first returns hitting the ground is more representative of what would be implied by the term - whether or not a ray of light intercepts a leaf. 

Under this plan, if one wanted to incorporate the secondary returns, then they could be quantified as marginal probabilities, and perhaps averaged together.  Something like:

[number of second returns (with first return hitting canopy) that are classified as ground] / number of second returns (with first return hitting canopy).
[number of third returns (with second return hitting canopy) that are classified as ground] / number of third returns (with second return hitting canopy).

...etc...

Not to say that the canopy density metric has no value and should not be included with an option, I'm mostly concerned with the terminology.

 

-Nick

On Tue, Feb 4, 2014 at 1:54 AM, Martin Isenburg <martin....@gmail.com> wrote:

Martin Isenburg

unread,
Feb 6, 2014, 4:33:02 AM2/6/14
to LAStools - efficient command line tools for LIDAR processing
So I assume the following to satisfy everyone:

lascanopy -i forest.laz -cov -dns

will produce canopy cover and canopy density in percentages (as before)

lascanopy -i forest.laz -cov -dns -fractions

will turn all (!!!) percentage outputs into fraction outputs

lascanopy -i forest.laz -cov -dns -gap

will compute canopy cover gap (100% minus canopy cover) and canopy
density gap (100% minus canopy density)

lascanopy -i forest.laz -cov -dns -gap -fractions

same as above but as fractions. It will *not* be possible to produce
both canopy cover and canopy cover gap at the same time. One question
remains ... what should the "gap" versions of canopy cover and density
cover be called?

*_cov_gap.asc
*_dns_gap.asc

*_cvg.asc
*_dsg.asc

I can go with either ...

Martin @rapidlasso

Veldman, Edgar

unread,
Feb 6, 2014, 5:52:30 AM2/6/14
to <lastools@googlegroups.com>, LAStools - efficient command line tools for LIDAR processing
Hi Martin,

So what is the verdict on the first-return vs all-returns? Will the standard setting use all returns? And we can use -first_only if a 'true' gap is required?

And how do the other lascanopy functions actually work? Do they all use first returns only, or all returns?

With regards to your question on the namings, *_cov_gap.asc and *_dns_gap.asc sounds good to me.

Thanks very much!

Edgar

Martin Isenburg

unread,
Feb 6, 2014, 6:07:59 AM2/6/14
to LAStools - efficient command line tools for LIDAR processing
Edgar,

canopy cover is a well defined forestry metric. It will not change.
And it uses first returns only and will continue to do so. Your
desired product is the 100% minus gap of the canopy density - which is
very similar to canopy cover but does use all returns.

So the *_dns_gap.asc files will be what seems to be in your
customer's tender. There seem to be way too may different names for
the different canopy metrics. Having either

*_cov.asc
*_dns.asc

or

*_cov_gap.asc
*_dns_gap.asc

and the information from the README should allow folks to pick
whatever they need ... and then rename it to whatever the tender says.

Regards,

Martin

Martin Isenburg

unread,
Feb 7, 2014, 11:56:41 AM2/7/14
to last...@googlegroups.com
Hello,

based on the discussions here lascanopy has been updated with new functionality.

The canopy cover using option '-cov'. 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. Similarly, with the option '-dns' the canopy density can be produced. The canopy density is computed as the number of all points above the height cutoff divided by the number of all returns. By default percentages between 0.0% and 100% are produced. Use option '-fractions' to produce fractions between 0.000 and 1.000 instead. 

It is possible to compute the "inverse" of the canopy cover and canopy density with the '-gap' option which will give you 100% (or for fractions 1.0) minus canopy cover or canopy density.

Also ... if your input files are plots you can use the '-files_are_plots' option. You can also query a list of circular plots from a text file with each line listing: "center_x center_y radius" with a command like:

lascanopy -i forest\*.laz -merged -loc plots.txt -cov -p 50 95

And if you want to override the radius then you can do this by adding a fix radius with '-loc_radius 2' or '-loc_radius 7.5' to the command above. All available in the new 140207 release available via http://rapidlasso.com/LAStools ...

Regards,

Martin @rapidlasso

PS: Oh ... blast2dem now also supports '-invert_ramp', '-scale 3', as well as all '-inside ....' spatial queries.
-
http://rapidlasso.com - fast tools to catch reality
Reply all
Reply to author
Forward
0 new messages