<p>Hi!<br>
Don&#39;t know if i understood everything correctly. (Only ob mobile right now)<br>
If it&#39;s not mandatory to use grass you can also use Laslib drom martin isenburg. I am pretty sure that. it should do what you want pretty fast and with huge amount of points.. <br>
I hope i got you right .. if not sorry f0r the noise</p>
<p>Regards<br>
Werner</p>
<div class="gmail_quote">Am 30.03.2012 16:43 schrieb &quot;michael vetter&quot; &lt;<a href="mailto:mv@ipf.tuwien.ac.at">mv@ipf.tuwien.ac.at</a>&gt;:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    hey,<br>
    <br>
    you can also calculate a normalized point cloud by subtract Z(from
    point) from the DTM(Z) <br>
    <br>
    you need a DTM (as raster) and the LiDAR points as ASCII<br>
    <br>
    <br>
    1. &quot;r.stats -gn in=DTM &gt;temp_elev&quot;<br>
    2. create a dictionary in python, from &quot;temp_elev&quot; k=x,y and value=z
    (x and y should INT)<br>
    3. loop the point cloud and subtract the z from k for each LiDAR
    point and add a nZ column &gt;&gt; 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(&#39; &#39;)<br>
        x = float(valR[0])<br>
        y = float(valR[1])<br>
        k = (&#39;%s %s&#39; % (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(&#39; &#39;)<br>
        x = float(valP[0])<br>
        y = float(valP[1])<br>
        k = (&#39;%s %s&#39; % (int(x),int(y)))<br>
        Z = float(valP[2])<br>
        output.write(&#39;%s %s %s %s\n&#39; %(x,y,Z,Z-D[k][0]))<br>
    oF.write(output.getvalue())<br>
    <br>
    then you can &#39;awk&#39; the data you are interested in &#39;cat
    nDTM_LiDAR_points | awk &#39;{if($4 &lt; 2 &amp;&amp; $4 &gt; 1) print
    $0}&#39; &gt;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>
<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:
    <blockquote type="cite">Hi Daniel V ;)<br>
      <br>
      You&#39;re right, that might not be the best way to go. I thought that
      it might simply be faster to do a topological operation rather
      than a DB edit. To be honest, I&#39;d stay away from any 3D objects
      like volumes because it&#39;d just get pretty complicated if you use
      them... As far as I know ;) Could be wrong. My suggestion would
      use the following steps:<br>
      <br>
      1. Make terrain raster<br>
      2. Make surface raster<br>
      -- Here I&#39;m assuming that for you basically have only two height
      &quot;layers&quot; - i.e. no points that contain information between the
      surface raster and terrain (like bushes beneath a tree cover).<br>
      3. Make a relative digital surface model (rDSM) (r.mapcalc --&gt;
      rDSM = surface - terrain)<br>
      4. Reclassify the rDSM into the different classes you&#39;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 classes.<br>
      6. Extract the points inside the different different height
      classes (v.select)<br>
      <br>
      However, if you&#39;re working with regularly spaced points that pass
      onto a regular grid (=1 pt. / raster pixel) you could always use
      r.stats to tell you how much area is in each raster category. Then
      you really wouldn&#39;t need vectors at all.<br>
      <br>
      Daniel L.<br clear="all">
      <p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="font-size:13px;font-family:arial,sans-serif"></span></p>
      <p>--<br>
      </p>
      <p>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>
      </p>
      <p>Deutschhausstr. 10<br>
        35037 Marburg<br>
        Festnetz: <a value="+4964213796256" style="color:rgb(28,81,168)">+49 6421 379 6256</a><br>
        Mobil: <a value="+4917661277269" style="color:rgb(28,81,168)">+49 176 6127 7269</a><br>
        E-Mail: <a href="mailto:Lee@isi-solutions.org" style="color:rgb(28,81,168)" target="_blank">Lee@isi-solutions.org</a><br>
        Web: <a href="http://www.isi-solutions.org/" style="color:rgb(28,81,168)" target="_blank">http://www.isi-solutions.org</a></p>
      <p>ISIS wird gefördert durch die Bundesrepublik Deutschland,
        Zuwendungsgeber: Bundesministerium für Wirtschaft und
        Technologie aufgrund eines Beschlusses des Deutschen
        Bundestages, sowie durch die Europäische Union, Zuwendungsgeber:
        Europäischer Sozialfonds.<br>
        Zusätzliche Unterstützung erhält ISIS von dem Entrepreneurship
        Cluster Mittelhessen, der Universität Marburg, dem Laboratory
        for Climatology and Remote Sensing und dem GIS-Lab Marburg.</p>
      <br>
      <br>
      <br>
      <div class="gmail_quote">Am 30. März 2012 14:09 schrieb Daniel
        Victoria <span dir="ltr">&lt;<a href="mailto:daniel.victoria@gmail.com" target="_blank">daniel.victoria@gmail.com</a>&gt;</span>:<br>
        <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
          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&#39;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&#39;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>
          <div>
            <div><br>
              <br>
              On Fri, Mar 30, 2012 at 8:08 AM, Daniel Lee &lt;<a href="mailto:lee@isi-solutions.org" target="_blank">lee@isi-solutions.org</a>&gt;
              wrote:<br>
              &gt; Hi Daniel,<br>
              &gt;<br>
              &gt; You could try making different rasters with classes
              (0-5m over ground, 5-10m<br>
              &gt; over ground, etc.) and then convert them into
              polygons, then check how many<br>
              &gt; points are inside them. I&#39;m not sure if it&#39;d be
              faster than the way you<br>
              &gt; suggested originally, though, when you think that
              you&#39;d have to make the<br>
              &gt; rasters first, etc.<br>
              &gt;<br>
              &gt; I ended up giving up on large vector operations with
              LiDAR point clouds in<br>
              &gt; GRASS 6.4 because it simply took way too long, but I
              was dealing with<br>
              &gt; millions of points. For such a small dataset it&#39;s
              probably fine, since as<br>
              &gt; long as you know your script is okay you can let it
              run through your lunch<br>
              &gt; break ;)<br>
              &gt;<br>
              &gt;<br>
              &gt; Daniel<br>
              &gt;<br>
              &gt; --<br>
              &gt;<br>
              &gt; B.Sc. Daniel Lee<br>
              &gt; Geschäftsführung für Forschung und Entwicklung<br>
              &gt; ISIS - International Solar Information Solutions GbR<br>
              &gt; Vertreten durch: Daniel Lee, Nepomuk Reinhard und
              Nils Räder<br>
              &gt;<br>
              &gt; Deutschhausstr. 10<br>
              &gt; 35037 Marburg<br>
              &gt; Festnetz: <a href="tel:%2B49%206421%20379%206256" value="+4964213796256" target="_blank">+49 6421 379 6256</a><br>
              &gt; Mobil: <a href="tel:%2B49%20176%206127%207269" value="+4917661277269" target="_blank">+49 176 6127 7269</a><br>
              &gt; E-Mail: <a href="mailto:Lee@isi-solutions.org" target="_blank">Lee@isi-solutions.org</a><br>
              &gt; Web: <a href="http://www.isi-solutions.org" target="_blank">http://www.isi-solutions.org</a><br>
              &gt;<br>
              &gt; ISIS wird gefördert durch die Bundesrepublik
              Deutschland, Zuwendungsgeber:<br>
              &gt; Bundesministerium für Wirtschaft und Technologie
              aufgrund eines Beschlusses<br>
              &gt; des Deutschen Bundestages, sowie durch die
              Europäische Union,<br>
              &gt; Zuwendungsgeber: Europäischer Sozialfonds.<br>
              &gt; Zusätzliche Unterstützung erhält ISIS von dem
              Entrepreneurship Cluster<br>
              &gt; Mittelhessen, der Universität Marburg, dem Laboratory
              for Climatology and<br>
              &gt; Remote Sensing und dem GIS-Lab Marburg.<br>
              &gt;<br>
              &gt;<br>
              &gt;<br>
              &gt;<br>
              &gt; Am 30. März 2012 13:00 schrieb Daniel Victoria &lt;<a href="mailto:daniel.victoria@gmail.com" target="_blank">daniel.victoria@gmail.com</a>&gt;:<br>
              &gt;<br>
              &gt;&gt; I need to calculate the number of points at
              different height levels. That<br>
              &gt;&gt; is, how many points are from 0 to 5 meters? And
              from 5 to 10? And so on. So<br>
              &gt;&gt; I believe I need to work with vector points and a
              database. Or is there<br>
              &gt;&gt; another way?<br>
              &gt;&gt; Thanks<br>
              &gt;&gt; Daniel<br>
              &gt;&gt;<br>
              &gt;&gt; On Mar 30, 2012 6:47 AM, &quot;Daniel Lee&quot; &lt;<a href="mailto:lee@isi-solutions.org" target="_blank">lee@isi-solutions.org</a>&gt;
              wrote:<br>
              &gt;&gt;&gt;<br>
              &gt;&gt;&gt; Hi there,<br>
              &gt;&gt;&gt;<br>
              &gt;&gt;&gt; I don&#39;t work too much with vectors, but my
              personal experience with them<br>
              &gt;&gt;&gt; has been fairly slow, perhaps due to the
              topology. If you have access to the<br>
              &gt;&gt;&gt; raw point cloud, you could try importing the
              ground and surface points as<br>
              &gt;&gt;&gt; separate rasters using r.in.xyz and then use
              r.mapcalc to get the height by<br>
              &gt;&gt;&gt; subtracting the ground from the surface
              raster. Or do you definitely need<br>
              &gt;&gt;&gt; vector points as an output?<br>
              &gt;&gt;&gt;<br>
              &gt;&gt;&gt; Best,<br>
              &gt;&gt;&gt; Daniel<br>
              &gt;&gt;&gt;<br>
              &gt;&gt;&gt; --<br>
              &gt;&gt;&gt;<br>
              &gt;&gt;&gt; B.Sc. Daniel Lee<br>
              &gt;&gt;&gt; Geschäftsführung für Forschung und
              Entwicklung<br>
              &gt;&gt;&gt; ISIS - International Solar Information
              Solutions GbR<br>
              &gt;&gt;&gt; Vertreten durch: Daniel Lee, Nepomuk Reinhard
              und Nils Räder<br>
              &gt;&gt;&gt;<br>
              &gt;&gt;&gt; Deutschhausstr. 10<br>
              &gt;&gt;&gt; 35037 Marburg<br>
              &gt;&gt;&gt; Festnetz: <a href="tel:%2B49%206421%20379%206256" value="+4964213796256" target="_blank">+49 6421 379 6256</a><br>
              &gt;&gt;&gt; Mobil: <a href="tel:%2B49%20176%206127%207269" value="+4917661277269" target="_blank">+49 176 6127 7269</a><br>
              &gt;&gt;&gt; E-Mail: <a href="mailto:Lee@isi-solutions.org" target="_blank">Lee@isi-solutions.org</a><br>
              &gt;&gt;&gt; Web: <a href="http://www.isi-solutions.org" target="_blank">http://www.isi-solutions.org</a><br>
              &gt;&gt;&gt;<br>
              &gt;&gt;&gt; ISIS wird gefördert durch die Bundesrepublik
              Deutschland,<br>
              &gt;&gt;&gt; Zuwendungsgeber: Bundesministerium für
              Wirtschaft und Technologie aufgrund<br>
              &gt;&gt;&gt; eines Beschlusses des Deutschen Bundestages,
              sowie durch die Europäische<br>
              &gt;&gt;&gt; Union, Zuwendungsgeber: Europäischer
              Sozialfonds.<br>
              &gt;&gt;&gt; Zusätzliche Unterstützung erhält ISIS von dem
              Entrepreneurship Cluster<br>
              &gt;&gt;&gt; Mittelhessen, der Universität Marburg, dem
              Laboratory for Climatology and<br>
              &gt;&gt;&gt; Remote Sensing und dem GIS-Lab Marburg.<br>
              &gt;&gt;&gt;<br>
              &gt;&gt;&gt;<br>
              &gt;&gt;&gt;<br>
              &gt;&gt;&gt;<br>
              &gt;&gt;&gt; Am 29. März 2012 22:59 schrieb Daniel
              Victoria<br>
              &gt;&gt;&gt; &lt;<a href="mailto:daniel.victoria@gmail.com" target="_blank">daniel.victoria@gmail.com</a>&gt;:<br>
              &gt;&gt;&gt;&gt;<br>
              &gt;&gt;&gt;&gt; Hi all,<br>
              &gt;&gt;&gt;&gt;<br>
              &gt;&gt;&gt;&gt; I&#39;m trying to calculate the height from
              the ground of several lidar<br>
              &gt;&gt;&gt;&gt; points (15million) in order to get the
              number of points that occur at<br>
              &gt;&gt;&gt;&gt; different height levels. I read some
              older posts about using r.in.xyz<br>
              &gt;&gt;&gt;&gt; (or r.in.lidar in grass 7) but I could
              not understand how to count the<br>
              &gt;&gt;&gt;&gt; number or points that have height from 0
              to 5 m above the ground, for<br>
              &gt;&gt;&gt;&gt; instance. So, I&#39;m trying to do the
              following.<br>
              &gt;&gt;&gt;&gt;<br>
              &gt;&gt;&gt;&gt; 1) import points using v.in.lidar (Grass
              7 ubuntu linux)<br>
              &gt;&gt;&gt;&gt; 2) create a column in the database for
              the ground height and one for<br>
              &gt;&gt;&gt;&gt; elevation<br>
              &gt;&gt;&gt;&gt; 3) populate height column from ground
              raster (generate in another<br>
              &gt;&gt;&gt;&gt; process) using v.what.rast<br>
              &gt;&gt;&gt;&gt; 4) calculate elevation as zcoord - ground
              for each point (v.db.update)<br>
              &gt;&gt;&gt;&gt;<br>
              &gt;&gt;&gt;&gt; As you might imagine, this takes a long
              time. Just to import a 400Mb<br>
              &gt;&gt;&gt;&gt; lidar file takes around 50min.<br>
              &gt;&gt;&gt;&gt; Is there any easier way that I&#39;m not
              envisioning?<br>
              &gt;&gt;&gt;&gt;<br>
              &gt;&gt;&gt;&gt; I&#39;m running Grass 7 with liblas on a
              Ubuntu Virtual Machine and sqlite<br>
              &gt;&gt;&gt;&gt; backend.<br>
              &gt;&gt;&gt;&gt;<br>
              &gt;&gt;&gt;&gt; Thanks<br>
              &gt;&gt;&gt;&gt; Daniel<br>
              &gt;&gt;&gt;&gt;
              _______________________________________________<br>
              &gt;&gt;&gt;&gt; grass-user mailing list<br>
              &gt;&gt;&gt;&gt; <a href="mailto:grass-user@lists.osgeo.org" target="_blank">grass-user@lists.osgeo.org</a><br>
              &gt;&gt;&gt;&gt; <a href="http://lists.osgeo.org/mailman/listinfo/grass-user" target="_blank">http://lists.osgeo.org/mailman/listinfo/grass-user</a><br>
              &gt;&gt;&gt;<br>
              &gt;&gt;&gt;<br>
              &gt;<br>
            </div>
          </div>
        </blockquote>
      </div>
      <br>
      <br>
      <fieldset></fieldset>
      <br>
      <pre>_______________________________________________
grass-user mailing list
<a href="mailto:grass-user@lists.osgeo.org" target="_blank">grass-user@lists.osgeo.org</a>
<a href="http://lists.osgeo.org/mailman/listinfo/grass-user" target="_blank">http://lists.osgeo.org/mailman/listinfo/grass-user</a>
</pre>
    </blockquote>
    <br>
    <br>
    <pre cols="72">-- 
Mag. Michael Vetter

Institute of Photogrammetry and Remote Sensing (I.P.F.)
Vienna University of Technology (TU Wien)
Gusshausstrasse 27-29, 1040 Vienna, Austria


Centre for Water Resource Systems (CWRS)
Vienna University of Technology (TU Wien)
Karlsplatz 13/222, A-1040 Vienna, Austria 


Tel: <a href="tel:%2B43-%280%291-58801-22226" value="+4315880122226" target="_blank">+43-(0)1-58801-22226</a>
E-mail: <a href="mailto:mv@ipf.tuwien.ac.at" target="_blank">mv@ipf.tuwien.ac.at</a>
<a href="http://www.ipf.tuwien.ac.at" target="_blank">www.ipf.tuwien.ac.at</a>
<a href="http://www.waterresources.at" target="_blank">www.waterresources.at</a>

 

</pre>
  </div>

<br>_______________________________________________<br>
grass-user mailing list<br>
<a 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></blockquote></div>