hi,<br><br>to have a &quot;proper&quot; LAS file you should set the number_of_returns_of_given_pulse and the return_number of each point (see the reamining warnings of lasinfo).<br><br>if you have one return per pulse ... set them both to 1.<br>
<br>and i guess i should put something into lasview that automatically detects it when the bounding box is set to 0 0 0 / 0 0 0 and then computes it on the fly ...<br><br>cheers,<br><br>martin<br><br><br><div class="gmail_quote">
On Fri, Aug 26, 2011 at 12:39 PM, James Hargrave <span dir="ltr">&lt;<a href="mailto:jhargrave@photomodeler.com">jhargrave@photomodeler.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hey guys,<br>
<br>
Thanks for the suggestions and help.  Running the repair gave me the clue I<br>
needed.  I wasn&#39;t setting the min/max values to the header.<br>
<br>
Here&#39;s the output from the repair:<br>
<div class="im">reporting all LAS header entries:<br>
  file signature:            &#39;LASF&#39;<br>
  file source ID:            0<br>
  reserved (global_encoding):0<br>
  project ID GUID data 1-4:  0 0 0 &#39;&#39;<br>
</div>  version major.minor:       1.2<br>
  system identifier:         &#39;libLAS&#39;<br>
  generating software:       &#39;libLAS 1.7.0b2&#39;<br>
  file creation day/year:    237/2011<br>
  header size                227<br>
  offset to point data       227<br>
<div class="im">  number var. length records 0<br>
</div>  point data format          3<br>
  point data record length   34<br>
  number of point records    5857<br>
  number of points by return 0 0 0 0 0<br>
<div class="im">  scale factor x y z         0.01 0.01 0.01<br>
  offset x y z               0 0 0<br>
</div>  min x y z                  0.00 0.00 0.00<br>
  max x y z                  0.00 0.00 0.00<br>
<div class="im">reporting minimum and maximum for all LAS point record entries ...<br>
</div>  x -1323 1581<br>
  y -831 983<br>
  z -3855 -1905<br>
  intensity 0 0<br>
<div class="im">  edge_of_flight_line 0 0<br>
  scan_direction_flag 0 0<br>
  number_of_returns_of_given_pulse 0 0<br>
  return_number 0 0<br>
  classification 0 0<br>
  scan_angle_rank 0 0<br>
  user_data 0 0<br>
  point_source_ID 0 0<br>
</div>  gps_time 0.000000 0.000000<br>
  Color R 0 220<br>
        G 1 243<br>
        B 0 255<br>
WARNING: there are 5857 points with return number 0<br>
WARNING: there are 5857 points with a number of returns of given pulse of 0<br>
<div class="im">histogram of classification of points:<br>
</div>     5857 Created, never classified (0)<br>
real max x larger than header max x by 15.810000 (repaired)<br>
real min x smaller than header min x by 13.230000 (repaired)<br>
real max y larger than header max y by 9.830000 (repaired)<br>
real min y smaller than header min y by 8.310000 (repaired)<br>
real min z smaller than header min z by 38.550000 (repaired)<br>
<br>
<br>
<br>
I added these lines after writing all the points (and computing the min/max<br>
during the write):<br>
<br>
        header.SetMin( min.X(), min.Y(), min.Z() );<br>
        header.SetMax( max.X(), max.Y(), max.Z() );<br>
<br>
        writer-&gt;SetHeader(header);<br>
        writer-&gt;WriteHeader();<br>
<br>
<br>
This fixed the problem.<br>
<br>
Are there any other fields I should be specifically setting?<br>
<br>
<br>
Heaps of thanks,<br>
- James<br>
<br>
<br>
<br>
&gt; -----Original Message-----<br>
&gt; From: Howard Butler [mailto:<a href="mailto:hobu.inc@gmail.com">hobu.inc@gmail.com</a>]<br>
&gt; Sent: August-26-11 6:33 AM<br>
&gt; To: James Hargrave<br>
&gt; Cc: liblas-devel<br>
&gt; Subject: Re: [Liblas-devel] Written file can&#39;t be read by other .las<br>
&gt; viewers<br>
<div><div></div><div class="h5">&gt;<br>
&gt;<br>
&gt; On Aug 26, 2011, at 8:11 AM, Howard Butler wrote:<br>
&gt;<br>
&gt; &gt;<br>
&gt; &gt; On Aug 25, 2011, at 6:16 PM, James Hargrave wrote:<br>
&gt; &gt;<br>
&gt; &gt;&gt; Hello,<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; When I use laslib to create a file I am able to then read the file back<br>
&gt; in<br>
&gt; &gt;&gt; and everything seems fine.  However, I am unable to view the file in<br>
&gt; other<br>
&gt; &gt;&gt; applications such as the lasview.exe utility found here:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; <a href="http://www.cs.unc.edu/%7Eisenburg/lastools/" target="_blank">http://www.cs.unc.edu/~isenburg/lastools/</a><br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; The steps I use mirror the C++ tutorial from the <a href="http://laslib.org" target="_blank">laslib.org</a> site:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;    ofs.open((char*)filename, ios::out | ios::binary);<br>
&gt; &gt;&gt;    liblas::Header header;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;    writer = new liblas::Writer(ofs, header);<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Then in a loop:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;    liblas::Point point;<br>
&gt; &gt;&gt;    point.SetCoordinates(pt.X(), pt.Y(), pt.Z());<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;    // fill other properties of point record<br>
&gt; &gt;&gt;    if ( rgb )<br>
&gt; &gt;&gt;            point.SetColor( liblas::Color( rgb[0], rgb[1], rgb[2] ) );<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;    writer-&gt;WritePoint(point);<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; If anyone has any ideas I&#39;d appreciate any suggestions.  If it would<br>
&gt; help I<br>
&gt; &gt;&gt; can also provide a sample output file which I am able to read back in<br>
&gt; using<br>
&gt; &gt;&gt; liblas but does not appear when loaded into lasview.exe .<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Thanks,<br>
&gt; &gt;&gt; - James<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; James,<br>
&gt; &gt;<br>
&gt; &gt; Which version of libLAS are you using? The following just worked for me<br>
&gt; this morning with the latest git HEAD on <a href="https://github.com/libLAS/libLAS" target="_blank">https://github.com/libLAS/libLAS</a><br>
&gt; &gt;<br>
&gt; &gt; ~/liblas$ las2las TO_core_last_zoom.las lastools-test-from-liblas.las<br>
&gt; &gt; ~/lastools/bin/lasinfo lastools-test-from-liblas.las<br>
&gt; &gt;<br>
&gt; &gt;&gt; reporting all LAS header entries:<br>
&gt; &gt;&gt;  file signature:            &#39;LASF&#39;<br>
&gt; &gt;&gt;  file source ID:            0<br>
&gt; &gt;&gt;  reserved (global_encoding):0<br>
&gt; &gt;&gt;  project ID GUID data 1-4:  0 0 0 &#39;&#39;<br>
&gt; &gt;&gt;  version major.minor:       1.0<br>
&gt; &gt;&gt;  system identifier:         &#39;&#39;<br>
&gt; &gt;&gt;  generating software:       &#39;TerraScan&#39;<br>
&gt; &gt;&gt;  file creation day/year:    0/0<br>
&gt; &gt;&gt;  header size                227<br>
&gt; &gt;&gt;  offset to point data       229<br>
&gt; &gt;&gt;  number var. length records 0<br>
&gt; &gt;&gt;  point data format          1<br>
&gt; &gt;&gt;  point data record length   28<br>
&gt; &gt;&gt;  number of point records    213093<br>
&gt; &gt;&gt;  number of points by return 128621 84472 0 0 0<br>
&gt; &gt;&gt;  scale factor x y z         0.01 0.01 0.01<br>
&gt; &gt;&gt;  offset x y z               -0 -0 -0<br>
&gt; &gt;&gt;  min x y z                  630250.00 4834500.00 46.83<br>
&gt; &gt;&gt;  max x y z                  630500.00 4834750.00 170.65<br>
&gt; &gt;&gt; the header is followed by 2 user-defined bytes<br>
&gt; &gt;&gt; reporting minimum and maximum for all LAS point record entries ...<br>
&gt; &gt;&gt;  x 63025000 63050000<br>
&gt; &gt;&gt;  y 483450000 483475000<br>
&gt; &gt;&gt;  z 4683 17065<br>
&gt; &gt;&gt;  intensity 10 50200<br>
&gt; &gt;&gt;  edge_of_flight_line 0 0<br>
&gt; &gt;&gt;  scan_direction_flag 0 0<br>
&gt; &gt;&gt;  number_of_returns_of_given_pulse 1 2<br>
&gt; &gt;&gt;  return_number 1 2<br>
&gt; &gt;&gt;  classification 1 1<br>
&gt; &gt;&gt;  scan_angle_rank 0 0<br>
&gt; &gt;&gt;  user_data 2 4<br>
&gt; &gt;&gt;  point_source_ID 0 0<br>
&gt; &gt;&gt;  gps_time 413162.560400 414095.322000<br>
&gt; &gt;&gt; overview over number of returns of given pulse: 128621 84472 0 0 0 0 0<br>
&gt; &gt;&gt; histogram of classification of points:<br>
&gt; &gt;&gt;   213093 Unclassified (1)<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; Are you making sure to delete the writer in your code? You must delete<br>
&gt; the writer because it will be writing header details at the end of<br>
writing.<br>
&gt; Also, make sure to do ofs.close() to force the flush of any data left in<br>
&gt; the ostream buffer.<br>
&gt;<br>
&gt; After some discussion on IRC with Martin, he suggested you run the<br>
&gt; following:<br>
&gt;<br>
&gt; ~/lastools $ lasinfo -repair file-written-by-liblas.las<br>
&gt;<br>
&gt; I don&#39;t think your code is updating the header&#39;s bounds and return count<br>
&gt; information, and this might be required for lasview.exe to run.<br>
&gt;<br>
&gt; Howard<br>
<br>
<br>
</div></div></blockquote></div><br>