<html><body><div style="color:#000; background-color:#fff; font-family:verdana, helvetica, sans-serif;font-size:10pt"><div><span>Hi there,</span></div><div><br><span></span></div><div><span>Bit late in the game to this discussion but the tool I use for all my lidar point processing (on Windows and linux) is http://www.cs.unc.edu/~isenburg/lastools/</span></div><div><br><span></span></div><div><span>I've found it's very powerful and user friendly (but still "tunable" to your preferences) and the users list is also really good...</span></div><div><br><span></span></div><div><span>Happy processing!</span></div><div><br><span></span></div><div><span>Rebecca</span></div><div><span><br></span></div><div><span>Dr Rebecca Bennett</span></div><div>Researcher (Archaeology Group)<br>School of Applied Sciences, Bournemouth University<br><span></span></div><div><span></span></div><div><br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px;
margin-top: 5px; padding-left: 5px;"> <div style="font-family: verdana, helvetica, sans-serif; font-size: 10pt;"> <div style="font-family: times new roman, new york, times, serif; font-size: 12pt;"> <div dir="ltr"> <font size="2" face="Arial"> <hr size="1"> <b><span style="font-weight:bold;">From:</span></b> Daniel Victoria <daniel.victoria@gmail.com><br> <b><span style="font-weight: bold;">To:</span></b> Werner Macho <werner.macho@gmail.com> <br><b><span style="font-weight: bold;">Cc:</span></b> grass-user@lists.osgeo.org <br> <b><span style="font-weight: bold;">Sent:</span></b> Friday, 30 March 2012, 21:33<br> <b><span style="font-weight: bold;">Subject:</span></b> Re: [GRASS-user] Lidar points height from ground<br> </font> </div> <br>Thanks everyone for the help and tips.<br><br>I ended up using a tool called Lidar Fusion, from the forestry people<br>at USDA, USFS and university of washington.<br><a
href="http://forsys.cfr.washington.edu/" target="_blank">http://forsys.cfr.washington.edu/</a><br><br>It works pretty fast and does exactly what I needed. But only found<br>executables for windows...<br><br>Cheers<br>Daniel<br><br>On Fri, Mar 30, 2012 at 12:22 PM, Daniel Victoria<br><<a ymailto="mailto:daniel.victoria@gmail.com" href="mailto:daniel.victoria@gmail.com">daniel.victoria@gmail.com</a>> wrote:<br>> Werner,<br>><br>> Laslib and specially lasheight looks like what I want. However, I<br>> already have the ground raster interpolated by the people that<br>> provided the las data so I'll have to check if I can ignore their<br>> ground raster and use the one generated by laslib. But many thanks for<br>> the help, I'll certainly study that option more.<br>><br>> Michael,<br>><br>> I liked your python suggestion. Will give it a try. I'll just have to<br>> study your script a little more in order to figure out
if it's<br>> considering the case where there are more than 1 point per ground<br>> cell.<br>><br>> My ground raster has 1m resolution but my point density is at least 4<br>> points per meter...<br>><br>> Cheers to all<br>> Daniel<br>><br>> On Fri, Mar 30, 2012 at 11:52 AM, Werner Macho <<a ymailto="mailto:werner.macho@gmail.com" href="mailto:werner.macho@gmail.com">werner.macho@gmail.com</a>> wrote:<br>>> Hi!<br>>> Don't know if i understood everything correctly. (Only ob mobile right now)<br>>> If it's not mandatory to use grass you can also use Laslib drom martin<br>>> isenburg. I am pretty sure that. it should do what you want pretty fast and<br>>> with huge amount of points..<br>>> I hope i got you right .. if not sorry f0r the noise<br>>><br>>> Regards<br>>> Werner<br>>><br>>> Am 30.03.2012 16:43 schrieb "michael vetter" <<a
ymailto="mailto:mv@ipf.tuwien.ac.at" href="mailto:mv@ipf.tuwien.ac.at">mv@ipf.tuwien.ac.at</a>>:<br>>><br>>>> hey,<br>>>><br>>>> you can also calculate a normalized point cloud by subtract Z(from point)<br>>>> from the DTM(Z)<br>>>><br>>>> you need a DTM (as raster) and the LiDAR points as ASCII<br>>>><br>>>><br>>>> 1. "r.stats -gn in=DTM >temp_elev"<br>>>> 2. create a dictionary in python, from "temp_elev" k=x,y and value=z (x<br>>>> and y should INT)<br>>>> 3. loop the point cloud and subtract the z from k for each LiDAR point and<br>>>> add a nZ column >> nDTM_LiDAR_points<br>>>><br>>>> 2 and 3 should run in the same script!<br>>>><br>>>> e.g. In Python:<br>>>><br>>>> #read input raster data (ascii from r.stats -gn DTM)<br>>>> for lineR
in iR.readlines():<br>>>> valR = lineR.strip().split(' ')<br>>>> x = float(valR[0])<br>>>> y = float(valR[1])<br>>>> k = ('%s %s' % (int(x),int(y)))<br>>>> z = float(valR[2])<br>>>> value.append(z)<br>>>> D[k] = value<br>>>> value = []<br>>>><br>>>> #read input point cloud as ascii and caclate nZ<br>>>> for lineP in iP.readlines():<br>>>> valP = lineP.strip().split(' ')<br>>>> x = float(valP[0])<br>>>> y = float(valP[1])<br>>>> k = ('%s %s' % (int(x),int(y)))<br>>>> Z = float(valP[2])<br>>>> output.write('%s %s %s %s\n'
%(x,y,Z,Z-D[k][0]))<br>>>> oF.write(output.getvalue())<br>>>><br>>>> then you can 'awk' the data you are interested in 'cat nDTM_LiDAR_points |<br>>>> awk '{if($4 < 2 && $4 > 1) print $0}' >LiDAR_1_to_2<br>>>><br>>>> r.in.xyz LiDAR_1_to_2 out=LiDAR_1_to_2 method=n<br>>>><br>>>> you can see the related reference to a similar workflow:<br>>>><br>>>> <a href="http://www.isprs.org/proceedings/XXXVIII/5-W12/Papers/ls2011_submission_35.pdf" target="_blank">http://www.isprs.org/proceedings/XXXVIII/5-W12/Papers/ls2011_submission_35.pdf</a><br>>>><br>>>> Michael<br>>>><br>>>> Am 2012-03-30 14:52, schrieb Daniel Lee:<br>>>><br>>>> Hi Daniel V ;)<br>>>><br>>>> You're right, that might not be the best way to go. I thought that it<br>>>> might simply be faster to do a topological
operation rather than a DB edit.<br>>>> To be honest, I'd stay away from any 3D objects like volumes because it'd<br>>>> just get pretty complicated if you use them... As far as I know ;) Could be<br>>>> wrong. My suggestion would use the following steps:<br>>>><br>>>> 1. Make terrain raster<br>>>> 2. Make surface raster<br>>>> -- Here I'm assuming that for you basically have only two height "layers"<br>>>> - i.e. no points that contain information between the surface raster and<br>>>> terrain (like bushes beneath a tree cover).<br>>>> 3. Make a relative digital surface model (rDSM) (r.mapcalc --> rDSM =<br>>>> surface - terrain)<br>>>> 4. Reclassify the rDSM into the different classes you're interested in<br>>>> 5. Convert the reclassified raster into an area vector file.<br>>>> -- This makes a 2D map of polygons that cover
the same areas as the raster<br>>>> classes.<br>>>> 6. Extract the points inside the different different height classes<br>>>> (v.select)<br>>>><br>>>> However, if you're working with regularly spaced points that pass onto a<br>>>> regular grid (=1 pt. / raster pixel) you could always use r.stats to tell<br>>>> you how much area is in each raster category. Then you really wouldn't need<br>>>> vectors at all.<br>>>><br>>>> Daniel L.<br>>>><br>>>> --<br>>>><br>>>> B.Sc. Daniel Lee<br>>>> Geschäftsführung für Forschung und Entwicklung<br>>>> ISIS - International Solar Information Solutions GbR<br>>>> Vertreten durch: Daniel Lee, Nepomuk Reinhard und Nils Räder<br>>>><br>>>> Deutschhausstr. 10<br>>>> 35037 Marburg<br>>>> Festnetz: +49 6421 379
6256<br>>>> Mobil: +49 176 6127 7269<br>>>> E-Mail: <a ymailto="mailto:Lee@isi-solutions.org" href="mailto:Lee@isi-solutions.org">Lee@isi-solutions.org</a><br>>>> Web: <a href="http://www.isi-solutions.org" target="_blank">http://www.isi-solutions.org</a><br>>>><br>>>> ISIS wird gefördert durch die Bundesrepublik Deutschland, Zuwendungsgeber:<br>>>> Bundesministerium für Wirtschaft und Technologie aufgrund eines Beschlusses<br>>>> des Deutschen Bundestages, sowie durch die Europäische Union,<br>>>> Zuwendungsgeber: Europäischer Sozialfonds.<br>>>> Zusätzliche Unterstützung erhält ISIS von dem Entrepreneurship Cluster<br>>>> Mittelhessen, der Universität Marburg, dem Laboratory for Climatology and<br>>>> Remote Sensing und dem GIS-Lab Marburg.<br>>>><br>>>><br>>>><br>>>><br>>>> Am 30. März
2012 14:09 schrieb Daniel Victoria<br>>>> <<a ymailto="mailto:daniel.victoria@gmail.com" href="mailto:daniel.victoria@gmail.com">daniel.victoria@gmail.com</a>>:<br>>>>><br>>>>> Hi Daniel Lee (two Daniels changing emails is a hard thing to follow...)<br>>>>><br>>>>> I can create the different height classes raster easily but I'm not<br>>>>> sure how to get the lidar points from the cloud that are in each<br>>>>> vertical slice.<br>>>>><br>>>>> Maybe work with raster volumes? Is there a way to cross points at<br>>>>> different volumes?<br>>>>><br>>>>> The fact is, I'm not seeing how to do this without having to import<br>>>>> the lidar point cloud.<br>>>>><br>>>>> Schematically, what I want to do is count the number of points that<br>>>>> are in the vertical bins
1 2, (g is ground), a vertical slice...<br>>>>> ___<br>>>>> | . :<br>>>>> bin 2 | :<br>>>>> | .<br>>>>> -----<br>>>>> bin 1 | ...<br>>>>> | .<br>>>>> ggggg<br>>>>><br>>>>> Cheers and many thanks for the attention<br>>>>> Daniel V<br>>>>><br>>>>><br>>>>> On Fri, Mar 30, 2012 at 8:08 AM, Daniel Lee <<a ymailto="mailto:lee@isi-solutions.org" href="mailto:lee@isi-solutions.org">lee@isi-solutions.org</a>><br>>>>> wrote:<br>>>>> > Hi Daniel,<br>>>>> ><br>>>>> > You could try making different rasters with classes (0-5m over ground,<br>>>>> >
5-10m<br>>>>> > over ground, etc.) and then convert them into polygons, then check how<br>>>>> > many<br>>>>> > points are inside them. I'm not sure if it'd be faster than the way you<br>>>>> > suggested originally, though, when you think that you'd have to make<br>>>>> > the<br>>>>> > rasters first, etc.<br>>>>> ><br>>>>> > I ended up giving up on large vector operations with LiDAR point clouds<br>>>>> > in<br>>>>> > GRASS 6.4 because it simply took way too long, but I was dealing with<br>>>>> > millions of points. For such a small dataset it's probably fine, since<br>>>>> > as<br>>>>> > long as you know your script is okay you can let it run through your<br>>>>> > lunch<br>>>>> > break ;)<br>>>>>
><br>>>>> ><br>>>>> > Daniel<br>>>>> ><br>>>>> > --<br>>>>> ><br>>>>> > B.Sc. Daniel Lee<br>>>>> > Geschäftsführung für Forschung und Entwicklung<br>>>>> > ISIS - International Solar Information Solutions GbR<br>>>>> > Vertreten durch: Daniel Lee, Nepomuk Reinhard und Nils Räder<br>>>>> ><br>>>>> > Deutschhausstr. 10<br>>>>> > 35037 Marburg<br>>>>> > Festnetz: +49 6421 379 6256<br>>>>> > Mobil: +49 176 6127 7269<br>>>>> > E-Mail: <a ymailto="mailto:Lee@isi-solutions.org" href="mailto:Lee@isi-solutions.org">Lee@isi-solutions.org</a><br>>>>> > Web: <a href="http://www.isi-solutions.org" target="_blank">http://www.isi-solutions.org</a><br>>>>> ><br>>>>> > ISIS wird
gefördert durch die Bundesrepublik Deutschland,<br>>>>> > Zuwendungsgeber:<br>>>>> > Bundesministerium für Wirtschaft und Technologie aufgrund eines<br>>>>> > Beschlusses<br>>>>> > des Deutschen Bundestages, sowie durch die Europäische Union,<br>>>>> > Zuwendungsgeber: Europäischer Sozialfonds.<br>>>>> > Zusätzliche Unterstützung erhält ISIS von dem Entrepreneurship Cluster<br>>>>> > Mittelhessen, der Universität Marburg, dem Laboratory for Climatology<br>>>>> > and<br>>>>> > Remote Sensing und dem GIS-Lab Marburg.<br>>>>> ><br>>>>> ><br>>>>> ><br>>>>> ><br>>>>> > Am 30. März 2012 13:00 schrieb Daniel Victoria<br>>>>> > <<a ymailto="mailto:daniel.victoria@gmail.com"
href="mailto:daniel.victoria@gmail.com">daniel.victoria@gmail.com</a>>:<br>>>>> ><br>>>>> >> I need to calculate the number of points at different height levels.<br>>>>> >> That<br>>>>> >> is, how many points are from 0 to 5 meters? And from 5 to 10? And so<br>>>>> >> on. So<br>>>>> >> I believe I need to work with vector points and a database. Or is<br>>>>> >> there<br>>>>> >> another way?<br>>>>> >> Thanks<br>>>>> >> Daniel<br>>>>> >><br>>>>> >> On Mar 30, 2012 6:47 AM, "Daniel Lee" <<a ymailto="mailto:lee@isi-solutions.org" href="mailto:lee@isi-solutions.org">lee@isi-solutions.org</a>> wrote:<br>>>>> >>><br>>>>> >>> Hi there,<br>>>>> >>><br>>>>> >>>
I don't work too much with vectors, but my personal experience with<br>>>>> >>> them<br>>>>> >>> has been fairly slow, perhaps due to the topology. If you have access<br>>>>> >>> to the<br>>>>> >>> raw point cloud, you could try importing the ground and surface<br>>>>> >>> points as<br>>>>> >>> separate rasters using r.in.xyz and then use r.mapcalc to get the<br>>>>> >>> height by<br>>>>> >>> subtracting the ground from the surface raster. Or do you definitely<br>>>>> >>> need<br>>>>> >>> vector points as an output?<br>>>>> >>><br>>>>> >>> Best,<br>>>>> >>> Daniel<br>>>>> >>><br>>>>> >>> --<br>>>>> >>><br>>>>>
>>> B.Sc. Daniel Lee<br>>>>> >>> Geschäftsführung für Forschung und Entwicklung<br>>>>> >>> ISIS - International Solar Information Solutions GbR<br>>>>> >>> Vertreten durch: Daniel Lee, Nepomuk Reinhard und Nils Räder<br>>>>> >>><br>>>>> >>> Deutschhausstr. 10<br>>>>> >>> 35037 Marburg<br>>>>> >>> Festnetz: +49 6421 379 6256<br>>>>> >>> Mobil: +49 176 6127 7269<br>>>>> >>> E-Mail: <a ymailto="mailto:Lee@isi-solutions.org" href="mailto:Lee@isi-solutions.org">Lee@isi-solutions.org</a><br>>>>> >>> Web: <a href="http://www.isi-solutions.org" target="_blank">http://www.isi-solutions.org</a><br>>>>> >>><br>>>>> >>> ISIS wird gefördert durch die Bundesrepublik
Deutschland,<br>>>>> >>> Zuwendungsgeber: Bundesministerium für Wirtschaft und Technologie<br>>>>> >>> aufgrund<br>>>>> >>> eines Beschlusses des Deutschen Bundestages, sowie durch die<br>>>>> >>> Europäische<br>>>>> >>> Union, Zuwendungsgeber: Europäischer Sozialfonds.<br>>>>> >>> Zusätzliche Unterstützung erhält ISIS von dem Entrepreneurship<br>>>>> >>> Cluster<br>>>>> >>> Mittelhessen, der Universität Marburg, dem Laboratory for Climatology<br>>>>> >>> and<br>>>>> >>> Remote Sensing und dem GIS-Lab Marburg.<br>>>>> >>><br>>>>> >>><br>>>>> >>><br>>>>> >>><br>>>>> >>> Am 29. März 2012 22:59 schrieb Daniel Victoria<br>>>>>
>>> <<a ymailto="mailto:daniel.victoria@gmail.com" href="mailto:daniel.victoria@gmail.com">daniel.victoria@gmail.com</a>>:<br>>>>> >>>><br>>>>> >>>> Hi all,<br>>>>> >>>><br>>>>> >>>> I'm trying to calculate the height from the ground of several lidar<br>>>>> >>>> points (15million) in order to get the number of points that occur<br>>>>> >>>> at<br>>>>> >>>> different height levels. I read some older posts about using<br>>>>> >>>> r.in.xyz<br>>>>> >>>> (or r.in.lidar in grass 7) but I could not understand how to count<br>>>>> >>>> the<br>>>>> >>>> number or points that have height from 0 to 5 m above the ground,<br>>>>> >>>> for<br>>>>>
>>>> instance. So, I'm trying to do the following.<br>>>>> >>>><br>>>>> >>>> 1) import points using v.in.lidar (Grass 7 ubuntu linux)<br>>>>> >>>> 2) create a column in the database for the ground height and one for<br>>>>> >>>> elevation<br>>>>> >>>> 3) populate height column from ground raster (generate in another<br>>>>> >>>> process) using v.what.rast<br>>>>> >>>> 4) calculate elevation as zcoord - ground for each point<br>>>>> >>>> (v.db.update)<br>>>>> >>>><br>>>>> >>>> As you might imagine, this takes a long time. Just to import a 400Mb<br>>>>> >>>> lidar file takes around 50min.<br>>>>> >>>> Is there any easier way that I'm not
envisioning?<br>>>>> >>>><br>>>>> >>>> I'm running Grass 7 with liblas on a Ubuntu Virtual Machine and<br>>>>> >>>> sqlite<br>>>>> >>>> backend.<br>>>>> >>>><br>>>>> >>>> Thanks<br>>>>> >>>> Daniel<br>>>>> >>>> _______________________________________________<br>>>>> >>>> grass-user mailing list<br>>>>> >>>> <a ymailto="mailto:grass-user@lists.osgeo.org" href="mailto:grass-user@lists.osgeo.org">grass-user@lists.osgeo.org</a><br>>>>> >>>> <a href="http://lists.osgeo.org/mailman/listinfo/grass-user" target="_blank">http://lists.osgeo.org/mailman/listinfo/grass-user</a><br>>>>> >>><br>>>>> >>><br>>>>>
><br>>>><br>>>><br>>>><br>>>><br>>>> _______________________________________________<br>>>> grass-user mailing list<br>>>> <a ymailto="mailto:grass-user@lists.osgeo.org" href="mailto:grass-user@lists.osgeo.org">grass-user@lists.osgeo.org</a><br>>>> <a href="http://lists.osgeo.org/mailman/listinfo/grass-user" target="_blank">http://lists.osgeo.org/mailman/listinfo/grass-user</a><br>>>><br>>>><br>>>><br>>>> --<br>>>> Mag. Michael Vetter<br>>>><br>>>> Institute of Photogrammetry and Remote Sensing (I.P.F.)<br>>>> Vienna University of Technology (TU Wien)<br>>>> Gusshausstrasse 27-29, 1040 Vienna, Austria<br>>>><br>>>><br>>>> Centre for Water Resource Systems (CWRS)<br>>>> Vienna University of Technology (TU Wien)<br>>>> Karlsplatz 13/222, A-1040 Vienna,
Austria<br>>>><br>>>><br>>>> Tel: +43-(0)1-58801-22226<br>>>> E-mail: <a ymailto="mailto:mv@ipf.tuwien.ac.at" href="mailto:mv@ipf.tuwien.ac.at">mv@ipf.tuwien.ac.at</a><br>>>> www.ipf.tuwien.ac.at<br>>>> www.waterresources.at<br>>>><br>>>><br>>>><br>>>><br>>>> _______________________________________________<br>>>> grass-user mailing list<br>>>> <a ymailto="mailto:grass-user@lists.osgeo.org" href="mailto:grass-user@lists.osgeo.org">grass-user@lists.osgeo.org</a><br>>>> <a href="http://lists.osgeo.org/mailman/listinfo/grass-user" target="_blank">http://lists.osgeo.org/mailman/listinfo/grass-user</a><br>>>><br>>><br>>> _______________________________________________<br>>> grass-user mailing list<br>>> <a ymailto="mailto:grass-user@lists.osgeo.org"
href="mailto:grass-user@lists.osgeo.org">grass-user@lists.osgeo.org</a><br>>> <a href="http://lists.osgeo.org/mailman/listinfo/grass-user" target="_blank">http://lists.osgeo.org/mailman/listinfo/grass-user</a><br>>><br>_______________________________________________<br>grass-user mailing list<br><a ymailto="mailto:grass-user@lists.osgeo.org" href="mailto:grass-user@lists.osgeo.org">grass-user@lists.osgeo.org</a><br><a href="http://lists.osgeo.org/mailman/listinfo/grass-user" target="_blank">http://lists.osgeo.org/mailman/listinfo/grass-user</a><br><br><br> </div> </div> </blockquote></div> </div></body></html>