<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body 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. "r.stats -gn in=DTM &gt;temp_elev"<br>
    2. create a dictionary in python, from "temp_elev" 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>
    &nbsp;&nbsp;&nbsp; e.g. In Python:<br>
    <br>
    #read input raster data (ascii from r.stats -gn DTM)<br>
    for lineR in iR.readlines():<br>
    &nbsp;&nbsp;&nbsp; valR = lineR.strip().split(' ')<br>
    &nbsp;&nbsp;&nbsp; x = float(valR[0])<br>
    &nbsp;&nbsp;&nbsp; y = float(valR[1])<br>
    &nbsp;&nbsp;&nbsp; k = ('%s %s' % (int(x),int(y)))<br>
    &nbsp;&nbsp;&nbsp; z = float(valR[2])<br>
    &nbsp;&nbsp;&nbsp; value.append(z)<br>
    &nbsp;&nbsp;&nbsp; D[k] = value<br>
    &nbsp;&nbsp;&nbsp; value = []<br>
    <br>
    #read input point cloud as ascii and caclate nZ<br>
    for lineP in iP.readlines():<br>
    &nbsp;&nbsp;&nbsp; valP = lineP.strip().split(' ')<br>
    &nbsp;&nbsp;&nbsp; x = float(valP[0])<br>
    &nbsp;&nbsp;&nbsp; y = float(valP[1])<br>
    &nbsp;&nbsp;&nbsp; k = ('%s %s' % (int(x),int(y)))<br>
    &nbsp;&nbsp;&nbsp; Z = float(valP[2])<br>
    &nbsp;&nbsp;&nbsp; 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 | awk '{if($4 &lt; 2 &amp;&amp; $4 &gt; 1) print
    $0}' &gt;LiDAR_1_to_2<br>
    <br>
    r.in.xyz LiDAR_1_to_2 out=LiDAR_1_to_2 method=n<br>
    &nbsp;&nbsp;&nbsp; <br>
    you can see the related reference to a similar workflow:<br>
<a class="moz-txt-link-freetext" href="http://www.isprs.org/proceedings/XXXVIII/5-W12/Papers/ls2011_submission_35.pdf">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
cite="mid:CAJHDHfqx=K7Wnc=DYmkYQZKUnW0EKEL2WfenbBXh7cgs_fFhJA@mail.gmail.com"
      type="cite">Hi Daniel V ;)<br>
      <br>
      You'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'd stay away from any 3D objects
      like volumes because it'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'm assuming that for you basically have only two height
      "layers" - 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'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'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'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&auml;ftsf&uuml;hrung f&uuml;r Forschung und Entwicklung<br>
        ISIS - International Solar Information Solutions GbR<br>
        Vertreten durch: Daniel Lee, Nepomuk Reinhard und Nils R&auml;der<br>
      </p>
      <p>Deutschhausstr. 10<br>
        35037 Marburg<br>
        Festnetz:&nbsp;<a moz-do-not-send="true" value="+4964213796256"
          style="color:rgb(28,81,168)">+49 6421 379 6256</a><br>
        Mobil:&nbsp;<a moz-do-not-send="true" value="+4917661277269"
          style="color:rgb(28,81,168)">+49 176 6127 7269</a><br>
        E-Mail:&nbsp;<a moz-do-not-send="true"
          href="mailto:Lee@isi-solutions.org"
          style="color:rgb(28,81,168)" target="_blank">Lee@isi-solutions.org</a><br>
        Web:&nbsp;<a moz-do-not-send="true"
          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&ouml;rdert durch die Bundesrepublik Deutschland,
        Zuwendungsgeber: Bundesministerium f&uuml;r Wirtschaft und
        Technologie aufgrund eines Beschlusses des Deutschen
        Bundestages, sowie durch die Europ&auml;ische Union, Zuwendungsgeber:
        Europ&auml;ischer Sozialfonds.<br>
        Zus&auml;tzliche Unterst&uuml;tzung erh&auml;lt ISIS von dem Entrepreneurship
        Cluster Mittelhessen, der Universit&auml;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&auml;rz 2012 14:09 schrieb Daniel
        Victoria <span dir="ltr">&lt;<a moz-do-not-send="true"
            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'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>
          &nbsp; &nbsp; &nbsp; &nbsp; ___<br>
          &nbsp; &nbsp; &nbsp; &nbsp; | . :<br>
          bin 2 &nbsp;| :<br>
          &nbsp; &nbsp; &nbsp; &nbsp; | .<br>
          &nbsp; &nbsp; &nbsp; &nbsp; -----<br>
          bin 1 &nbsp;| ...<br>
          &nbsp; &nbsp; &nbsp; &nbsp; | .<br>
          &nbsp; &nbsp; &nbsp; &nbsp;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
                moz-do-not-send="true"
                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'm not sure if it'd be
              faster than the way you<br>
              &gt; suggested originally, though, when you think that
              you'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'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&auml;ftsf&uuml;hrung f&uuml;r Forschung und Entwicklung<br>
              &gt; ISIS - International Solar Information Solutions GbR<br>
              &gt; Vertreten durch: Daniel Lee, Nepomuk Reinhard und
              Nils R&auml;der<br>
              &gt;<br>
              &gt; Deutschhausstr. 10<br>
              &gt; 35037 Marburg<br>
              &gt; Festnetz:&nbsp;<a moz-do-not-send="true"
                href="tel:%2B49%206421%20379%206256"
                value="+4964213796256" target="_blank">+49 6421 379 6256</a><br>
              &gt; Mobil:&nbsp;<a moz-do-not-send="true"
                href="tel:%2B49%20176%206127%207269"
                value="+4917661277269" target="_blank">+49 176 6127 7269</a><br>
              &gt; E-Mail:&nbsp;<a moz-do-not-send="true"
                href="mailto:Lee@isi-solutions.org" target="_blank">Lee@isi-solutions.org</a><br>
              &gt; Web:&nbsp;<a moz-do-not-send="true"
                href="http://www.isi-solutions.org" target="_blank">http://www.isi-solutions.org</a><br>
              &gt;<br>
              &gt; ISIS wird gef&ouml;rdert durch die Bundesrepublik
              Deutschland, Zuwendungsgeber:<br>
              &gt; Bundesministerium f&uuml;r Wirtschaft und Technologie
              aufgrund eines Beschlusses<br>
              &gt; des Deutschen Bundestages, sowie durch die
              Europ&auml;ische Union,<br>
              &gt; Zuwendungsgeber: Europ&auml;ischer Sozialfonds.<br>
              &gt; Zus&auml;tzliche Unterst&uuml;tzung erh&auml;lt ISIS von dem
              Entrepreneurship Cluster<br>
              &gt; Mittelhessen, der Universit&auml;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&auml;rz 2012 13:00 schrieb Daniel Victoria &lt;<a
                moz-do-not-send="true"
                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, "Daniel Lee" &lt;<a
                moz-do-not-send="true"
                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'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&auml;ftsf&uuml;hrung f&uuml;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&auml;der<br>
              &gt;&gt;&gt;<br>
              &gt;&gt;&gt; Deutschhausstr. 10<br>
              &gt;&gt;&gt; 35037 Marburg<br>
              &gt;&gt;&gt; Festnetz:&nbsp;<a moz-do-not-send="true"
                href="tel:%2B49%206421%20379%206256"
                value="+4964213796256" target="_blank">+49 6421 379 6256</a><br>
              &gt;&gt;&gt; Mobil:&nbsp;<a moz-do-not-send="true"
                href="tel:%2B49%20176%206127%207269"
                value="+4917661277269" target="_blank">+49 176 6127 7269</a><br>
              &gt;&gt;&gt; E-Mail:&nbsp;<a moz-do-not-send="true"
                href="mailto:Lee@isi-solutions.org" target="_blank">Lee@isi-solutions.org</a><br>
              &gt;&gt;&gt; Web:&nbsp;<a moz-do-not-send="true"
                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&ouml;rdert durch die Bundesrepublik
              Deutschland,<br>
              &gt;&gt;&gt; Zuwendungsgeber: Bundesministerium f&uuml;r
              Wirtschaft und Technologie aufgrund<br>
              &gt;&gt;&gt; eines Beschlusses des Deutschen Bundestages,
              sowie durch die Europ&auml;ische<br>
              &gt;&gt;&gt; Union, Zuwendungsgeber: Europ&auml;ischer
              Sozialfonds.<br>
              &gt;&gt;&gt; Zus&auml;tzliche Unterst&uuml;tzung erh&auml;lt ISIS von dem
              Entrepreneurship Cluster<br>
              &gt;&gt;&gt; Mittelhessen, der Universit&auml;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&auml;rz 2012 22:59 schrieb Daniel
              Victoria<br>
              &gt;&gt;&gt; &lt;<a moz-do-not-send="true"
                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'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'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'm not
              envisioning?<br>
              &gt;&gt;&gt;&gt;<br>
              &gt;&gt;&gt;&gt; I'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 moz-do-not-send="true"
                href="mailto:grass-user@lists.osgeo.org" target="_blank">grass-user@lists.osgeo.org</a><br>
              &gt;&gt;&gt;&gt; <a moz-do-not-send="true"
                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 class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
grass-user mailing list
<a class="moz-txt-link-abbreviated" href="mailto:grass-user@lists.osgeo.org">grass-user@lists.osgeo.org</a>
<a class="moz-txt-link-freetext" href="http://lists.osgeo.org/mailman/listinfo/grass-user">http://lists.osgeo.org/mailman/listinfo/grass-user</a>
</pre>
    </blockquote>
    <br>
    <br>
    <pre class="moz-signature" 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: +43-(0)1-58801-22226
E-mail: <a class="moz-txt-link-abbreviated" href="mailto:mv@ipf.tuwien.ac.at">mv@ipf.tuwien.ac.at</a>
<a class="moz-txt-link-abbreviated" href="http://www.ipf.tuwien.ac.at">www.ipf.tuwien.ac.at</a>
<a class="moz-txt-link-abbreviated" href="http://www.waterresources.at">www.waterresources.at</a>

 

</pre>
  </body>
</html>