# [GRASS-user] v.rast.stats and Lidar data

andrew haywood ahaywood3 at gmail.com
Wed Jun 18 17:53:26 EDT 2008

```Hi Wesley,

as Hamish points out r.in.xyz is the way to go. I have been working with
large lidar data files over forest for a couple of months now and find the
intersection between the ground and the vegetation to create the Digital
Canopy Height Model - quite time consuming. Here is my basic workflow

# read in the ground using v.in.ascii with topology turned off
v.in.ascii -tzbr input=grd.txt  output=grd_pts x=2 y=3 z=4 fs=" "
# create the ground surface using v.surf.rast (this is useful when you have
irregularly spaced strikes under dense canopies)
v.surf.rst grd_pts elev=grd_dtm npmin=120 segmax=25 layer=0

# create a flat vegetation file with non-ground strikes intersecting the DTM
(this can be quite time consuming)
# I use awk to calculate the difference between the canopy elevation and
ground elevation = canopy height
cat AreaThreeNonGround.xyz  | r.what in=grd_dtm | awk 'print \$1, \$2, \$3, \$4,
\$5, \$3-\$5)' | veg.txt

#I then use r.in.xyz to calculate statistics of binned data from the flat
vegetation file
g.region res=10
#calculate the mean vegetation height greater than 0.5m for a 10m cell
r.in.xyz input=veg.txt output=mean_10m method=mean type=FCELL fs='|' x=1 y=2
z=6 zrange=0.5,200 percent=100
#calculate the 90th vegetation height percentile
r.in.xyz input=veg.txt output=mean_p90_10m method=percentile pth=90
type=FCELL fs='|' x=1 y=2 z=6 zrange=0.5,200 percent=100
...
...

## I think the r.in.xyz has most of the statistics that you would like to
use.
## reading in the point cloud into R can be quite memory intensive
## but it is fun to do

cheers

Andy

On Thu, Jun 19, 2008 at 3:44 AM, Hamish <hamish_b at yahoo.com> wrote:

> Hi Wesley,
>
> > I have some LiDAR data of a forested area and I am trying
> > to calculate tree heights / canopy heights based first and
> > second return points (pre-filtered ground and non-ground).
> > I have two questions that I hope some of you may be able to
> > help me with. Firstly I have windowed / clipped my data to a
> > small 'test' region with about 150 000 non-ground
> > and 100 000 ground points.
> >
> > 1. I have interpolated the ground points using idw in grass
> > and have taken that as my ground surface. I would now like
> > to assign an extra column to my non-ground vector file and
> > populate it with the raster values of the DSM to calculate
> > actual point height above ground (points are currently in
> > meters above sea-level). Traditionally, one would just
> > create a digital surface model and a canopy model and
> > subtract the two to get tree canopy height. I would like to
> > do the subtraction in the database and then interpolate the
> > result. I am trying to do this with v.rast.stats and it is
> > taking a really long time. How can I speed this up? Reading
> > the help page I also see that the vector data are rasterised
> > and values are assigend based on categories. I dont want
> > categories, I am just interested in the raster value
> > directly below each point? Is v.rast.stats the correct
> > application to use?
>
> No, r.in.xyz is. ;)  Well at least it is much less trouble to work with.
>
> (or if you want to stick with your current method, use v.what.rast instead
> of v.rast.stats to pick off single points at the data point; and v.surf.rst
> might make a nicer surface than IDW, at the risk of overshoots)
>
>
> > 2. While the above mentioned data set is fairly small my
> > largest data set is around 700MB with
> >
> > wc -l  =  20602625 AreaThreeNonGround.xyz
> >
> > If I import using v.in.ascii without a db and topology will
> > I still be able to manipulate the vector data as described
> > above
>
> without a DB you can not populate a DB..
> v.surf.* have been modified to work even without topology, just for this
> case.
>
> r.in.xyz should handle 700MB input|20m points without complaint.
>
>
> > and will I be able to use R scripts and functions on
> > the data set?
>
> don't know.
>
> > Apologies for the long mail, I hope it is not too
> > confusing.
> >
> > suggestions.
>
> hopefully r.in.xyz solves your problems, it is updated with more statistics
> and features in GRASS 6.3.0 if you can get your hands on that.
>
>
> Hamish
>
>
>
>
>
> _______________________________________________
> grass-user mailing list
> grass-user at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/grass-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/grass-user/attachments/20080619/67c770e1/attachment.html
```