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 <[EMAIL PROTECTED]> 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. > > > > Many thanks and looking forward to your comments and > > 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 > [email protected] > http://lists.osgeo.org/mailman/listinfo/grass-user >
_______________________________________________ grass-user mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/grass-user
