e572las.exe error when trying to split scans

277 views
Skip to first unread message

Harry Twomey

unread,
Mar 19, 2019, 7:45:28 AM3/19/19
to LAStools - efficient tools for LiDAR processing
Using the command:
D:\LAStools\bin>e572las -v -i "D:\Working\Fla\stairs.e57" -o Split.las -split_scans

file 'D:\Working\Fla\stairs.e57' contains 3 scans. splitting ...
processing scan 1 of 3 ...
  contains grid of 4811 by 2406 equaling 11575266 points
  has quaternion (0.99993,0.0114749,-0.00302712,3.47384e-005) which is applied
no x coordinates for scan 0. skipping ...
processing scan 2 of 3 ...
  contains grid of 4809 by 2405 equaling 11565645 points
  has quaternion (0.761354,-0.0125993,0.000881749,0.648214) which is applied
  has translation (0.186824,-0.771697,0.383657) which is applied
no x coordinates for scan 1. skipping ...
processing scan 3 of 3 ...
  contains grid of 4822 by 2411 equaling 11625842 points
  has quaternion (0.218317,0.0118714,-0.00454854,0.975795) which is applied
  has translation (0.913768,-0.896459,0.924036) which is applied
no x coordinates for scan 2. skipping ...
written a total 0 points


I have viewed the file in other softwares fine. Any ideas? maybe it a not combatible version of e57?

uploaded a test file here

Martin Isenburg

unread,
Mar 20, 2019, 1:19:48 PM3/20/19
to LAStools - efficient command line tools for LIDAR processing
Hello,

is there some software like e57info available that allows you to print the content of the file? I assume that instead of these three fields being available per point:

bool cartesianXField; //!< Indicates that the PointRecord cartesianX field is active
bool cartesianYField; //!< Indicates that the PointRecord cartesianY field is active
bool cartesianZField; //!< Indicates that the PointRecord cartesianZ field is active

 I assume that instead of these three fields being available per point (what is currently expected by e572las) the points are not in a Cartesian coordinate system but maybe this one here:
 
bool sphericalRangeField; //!< Indicates that the PointRecord sphericalRange field is active
bool sphericalAzimuthField; //!< Indicates that the PointRecord sphericalAzimuth field is active
bool sphericalElevationField; //!< Indicates that the PointRecord sphericalElevation field is active

these are excerpt from the E57Simple.h include file (see below). Currently e572las only supports cartesian coordinates, not spherical coordinates. Does it make sense to convert points that are in spherical coordinates to LAS/LAZ (without converting them into project coordinates at the same time)? Is there no e572e57 tool that should be doing this? 

Regards,

Martin @rapidlasso

================================

[...]
////////////////////////////////////////////////////////////////////
//
// e57::PointStandardizedFieldsAvailable
//
//! @brief The e57::PointStandardizedFieldsAvailable is a structure use to interrogate if standardized fields are available

class PointStandardizedFieldsAvailable {
public:
bool cartesianXField; //!< Indicates that the PointRecord cartesianX field is active
bool cartesianYField; //!< Indicates that the PointRecord cartesianY field is active
bool cartesianZField; //!< Indicates that the PointRecord cartesianZ field is active
bool cartesianInvalidStateField; //!< Indicates that the PointRecord cartesianInvalidState field is active

bool sphericalRangeField; //!< Indicates that the PointRecord sphericalRange field is active
bool sphericalAzimuthField; //!< Indicates that the PointRecord sphericalAzimuth field is active
bool sphericalElevationField; //!< Indicates that the PointRecord sphericalElevation field is active
bool sphericalInvalidStateField; //!< Indicates that the PointRecord sphericalInvalidState field is active

double pointRangeMinimum; //!< Indicates that the PointRecord cartesian and range fields should be configured with this minimum value -E57_FLOAT_MAX or -E57_DOUBLE_MAX. If using a ScaledIntegerNode then this needs to be a minimum range value.
double pointRangeMaximum; //!< Indicates that the PointRecord cartesian and range fields should be configured with this maximum value E57_FLOAT_MAX or E57_DOUBLE_MAX. If using a ScaledIntegerNode then this needs to be a maximum range value.
double pointRangeScaledInteger; //!< Indicates that the PointRecord cartesain and range fields should be configured as a ScaledIntegerNode with this scale setting. If 0. then use FloatNode.

double angleMinimum; //!< Indicates that the PointRecord angle fields should be configured with this minimum value -E57_FLOAT_MAX or -E57_DOUBLE_MAX. If using a ScaledIntegerNode then this needs to be a minimum angle value.
double angleMaximum; //!< Indicates that the PointRecord angle fields should be configured with this maximum value E57_FLOAT_MAX or E57_DOUBLE_MAX. If using a ScaledIntegerNode then this needs to be a maximum angle value.
double angleScaledInteger; //!< Indicates that the PointRecord angle fields should be configured as a ScaledIntegerNode with this scale setting. If 0. then use FloatNode.

bool rowIndexField; //!< Indicates that the PointRecord rowIndex field is active
uint32_t rowIndexMaximum; //!< Indicates that the PointRecord index fields should be configured with this maximum value where the minimum will be set to 0.
bool columnIndexField; //!< Indicates that the PointRecord columnIndex field is active
uint32_t columnIndexMaximum; //!< Indicates that the PointRecord index fields should be configured with this maximum value where the minimum will be set to 0.

bool returnIndexField; //!< Indicates that the PointRecord returnIndex field is active
bool returnCountField; //!< Indicates that the PointRecord returnCount field is active
uint8_t returnMaximum; //!< Indicates that the PointRecord return fields should be configured with this maximum value where the minimum will be set to 0.

bool timeStampField; //!< Indicates that the PointRecord timeStamp field is active
bool isTimeStampInvalidField; //!< Indicates that the PointRecord isTimeStampInvalid field is active
double timeMaximum; //!< Indicates that the PointRecord timeStamp fields should be configured with this maximum value. like E57_UINT32_MAX, E57_FLOAT_MAX or E57_DOUBLE_MAX

bool intensityField; //!< Indicates that the PointRecord intensity field is active
bool isIntensityInvalidField; //!< Indicates that the PointRecord isIntensityInvalid field is active
double intensityScaledInteger; //!< Indicates that the PointRecord intensity fields should be configured as a ScaledIntegerNode with this setting. If 0. then use FloatNode, if -1. use IntegerNode

bool colorRedField; //!< indicates that the PointRecord colorRed field is active
bool colorGreenField; //!< indicates that the PointRecord colorGreen field is active
bool colorBlueField; //!< indicates that the PointRecord colorBlue field is active
bool isColorInvalidField; //!< Indicates that the PointRecord isColorInvalid field is active
};

////////////////////////////////////////////////////////////////////
//
// e57::PointRecord
//
//! @brief The e57::PointRecord is a pseudo structure that shows the possible information for an individual 3D imaging system point measurement.
/*! @details This structure is not actually used but is here for completeness.  The size and type of each element of the PointRecord can be configure in E57.  This is the configuration used by the SimpleAPI.
*/

class PointRecord {
public:
double cartesianX; //!< The X coordinate (in meters) of the point in Cartesian coordinates
double cartesianY; //!< The Y coordinate (in meters) of the point in Cartesian coordinates
double cartesianZ; //!< The Z coordinate (in meters) of the point in Cartesian coordinates
bool cartesianInvalidState; //!< Indicates whether the Cartesian coordinate vector or its magnitude is meaningful. Value = 0 if the point is considered valid, 1 otherwise.  Shall be in the interval [0, 1].

double sphericalRange; //!< The range (in meters) of points in spherical coordinates. Shall be non-negative
double sphericalAzimuth; //!< Azimuth angle (in radians) of point in spherical coordinates
double sphericalElevation; //!< Elevation angle (in radians) of point in spherical coordinates
bool sphericalInvalidState;  //!< Indicates whether the spherical coordinate vector or its range value are meaningful. Value = 0 if the point is considered valid, 1 otherwise. Shall be in the interval [0, 1].

uint32_t rowIndex; //!< The row number of point (zero based). This is useful for data that is stored in a regular grid.Shall be in the interval [0, 2^31).
uint32_t columnIndex; //!< The column number of point (zero based). This is useful for data that is stored in a regular grid. Shall be in the interval [0, 2^31)

uint8_t returnIndex; //!< Only for multi-return sensors. The number of this return (zero based). That is, 0 is the first return, 1 is the second, and so on. Shall be in the interval [0, returnCount).
uint8_t returnCount; //!< Only for multi-return sensors. The total number of returns for the pulse that this corresponds to. Shall be in the interval (0, 2^7).

double timeStamp; //!< The time (in seconds) since the start time for the data, which is given by acquisitionStart in the parent Data3D Structure. Shall be non-negative
bool isTimeStampInvalid; //!< Indicates whether the timeStamp element is meaningful. Value = 0 if the timestamp is considered valid, 1 otherwise. Shall be in the interval [0, 1].

double intensity; //!< Point response intensity. Unit is unspecified
bool isIntensityInvalid; //!< Indicates whether the intensity element is meaningful. Value = 0 if the intensity is considered valid, 1 otherwise. Shall be in the interval [0, 1].

uint16_t colorRed; //!< Red color coefficient. Unit is unspecified.
uint16_t colorGreen; //!< Green color coefficient. Unit is unspecified
uint16_t colorBlue; //!< Blue color coefficient. Unit is unspecified
bool isColorInvalid; //!< Indicates whether the colorRed, colorBlue, and colorGreen elements are meaningful. Value = 0 if the color is considered valid, 1 otherwise. Shall be in the interval [0, 1].
};
[...]


Harry Twomey

unread,
Mar 22, 2019, 1:09:33 PM3/22/19
to LAStools - efficient tools for LiDAR processing
Found a thing to read the internal XML

Seems that its spherical



D:\E57Tools\bin>e57xmldump.exe D:\Working\Fla\stairs.e57
<?xml version="1.0" encoding="UTF-8"?>
<e57Root type="Structure"
  <formatName type="String"><![CDATA[ASTM E57 3D Imaging Data File]]></formatName>
  <guid type="String"><![CDATA[{D4ADE572-FEE0-46F3-9B16-3BF105FA9FFB}]]></guid>
  <versionMajor type="Integer">1</versionMajor>
  <versionMinor type="Integer"/>
  <e57LibraryVersion type="String"><![CDATA[unknown]]></e57LibraryVersion>
  <coordinateMetadata type="String"/>
  <creationDateTime type="Structure">
    <dateTimeValue type="Float">1.23660193325598025e+09</dateTimeValue>
    <isAtomicClockReferenced type="Integer"/>
  </creationDateTime>
  <data3D type="Vector" allowHeterogeneousChildren="1">
    <vectorChild type="Structure">
      <guid type="String"><![CDATA[{0ee8e3be_d7ef_4594_af3e_c2489cedc2dd}]]></guid>
      <name type="String"><![CDATA[cleantest3 1]]></name>
      <description type="String"><![CDATA[this file is generated by Autodesk ReCap]]></description>
      <indexBounds type="Structure">
        <rowMinimum type="Integer"/>
        <rowMaximum type="Integer">2405</rowMaximum>
        <columnMinimum type="Integer"/>
        <columnMaximum type="Integer">4810</columnMaximum>
        <returnMinimum type="Integer"/>
        <returnMaximum type="Integer"/>
      </indexBounds>
      <intensityLimits type="Structure">
        <intensityMaximum type="Integer">65535</intensityMaximum>
        <intensityMinimum type="Integer"/>
      </intensityLimits>
      <colorLimits type="Structure">
        <colorRedMaximum type="Integer">255</colorRedMaximum>
        <colorRedMinimum type="Integer"/>
        <colorGreenMaximum type="Integer">255</colorGreenMaximum>
        <colorGreenMinimum type="Integer"/>
        <colorBlueMaximum type="Integer">255</colorBlueMaximum>
        <colorBlueMinimum type="Integer"/>
      </colorLimits>
      <sphericalBounds type="Structure">
        <rangeMinimum type="Float"/>
        <rangeMaximum type="Float">4.29496729600000035e+04</rangeMaximum>
        <elevationMinimum type="Float">-1.57079632679489656e+00</elevationMinimum>
        <elevationMaximum type="Float">1.57079632679489656e+00</elevationMaximum>
        <azimuthStart type="Float">3.14159265358979312e+00</azimuthStart>
        <azimuthEnd type="Float">-3.14159265358979312e+00</azimuthEnd>
      </sphericalBounds>
      <pose type="Structure">
        <rotation type="Structure">
          <w type="Float">9.99929578353775161e-01</w>
          <x type="Float">1.14749140352758353e-02</x>
          <y type="Float">-3.02712318410605641e-03</y>
          <z type="Float">3.47384246488505801e-05</z>
        </rotation>
      </pose>
      <acquisitionStart type="Structure">
        <dateTimeValue type="Float">1.23660193353600287e+09</dateTimeValue>
        <isAtomicClockReferenced type="Integer"/>
      </acquisitionStart>
      <acquisitionEnd type="Structure">
        <dateTimeValue type="Float">1.23660193353600287e+09</dateTimeValue>
        <isAtomicClockReferenced type="Integer"/>
      </acquisitionEnd>
      <pointGroupingSchemes type="Structure">
        <groupingByLine type="Structure">
          <idElementName type="String"><![CDATA[columnIndex]]></idElementName>
          <groups type="CompressedVector" fileOffset="233984164" recordCount="4811">
            <prototype type="Structure">
              <startPointIndex type="Integer" minimum="0" maximum="11575265"/>
              <idElementValue type="Integer" minimum="0" maximum="4810"/>
              <pointCount type="Integer" minimum="0" maximum="2406"/>
            </prototype>
            <codecs type="Vector" allowHeterogeneousChildren="1">
            </codecs>
          </groups>
        </groupingByLine>
      </pointGroupingSchemes>
      <points type="CompressedVector" fileOffset="48" recordCount="11575266">
        <prototype type="Structure">
          <sphericalRange type="Float" precision="single"/>
          <sphericalAzimuth type="Float" precision="single"/>
          <sphericalElevation type="Float" precision="single"/>
          <intensity type="Integer" minimum="0" maximum="65535"/>
          <colorRed type="Integer" minimum="0" maximum="255"/>
          <colorGreen type="Integer" minimum="0" maximum="255"/>
          <colorBlue type="Integer" minimum="0" maximum="255"/>
          <rowIndex type="Integer" minimum="0" maximum="2405"/>
          <columnIndex type="Integer" minimum="0" maximum="4810"/>
        </prototype>
        <codecs type="Vector" allowHeterogeneousChildren="1">
        </codecs>
      </points>
    </vectorChild>
    <vectorChild type="Structure">
      <guid type="String"><![CDATA[{b26f9520_6f47_4c44_a41e_e4b2f8d7e796}]]></guid>
      <name type="String"><![CDATA[cleantest3 2]]></name>
      <description type="String"><![CDATA[this file is generated by Autodesk ReCap]]></description>
      <indexBounds type="Structure">
        <rowMinimum type="Integer"/>
        <rowMaximum type="Integer">2404</rowMaximum>
        <columnMinimum type="Integer"/>
        <columnMaximum type="Integer">4808</columnMaximum>
        <returnMinimum type="Integer"/>
        <returnMaximum type="Integer"/>
      </indexBounds>
      <intensityLimits type="Structure">
        <intensityMaximum type="Integer">65535</intensityMaximum>
        <intensityMinimum type="Integer"/>
      </intensityLimits>
      <colorLimits type="Structure">
        <colorRedMaximum type="Integer">255</colorRedMaximum>
        <colorRedMinimum type="Integer"/>
        <colorGreenMaximum type="Integer">255</colorGreenMaximum>
        <colorGreenMinimum type="Integer"/>
        <colorBlueMaximum type="Integer">255</colorBlueMaximum>
        <colorBlueMinimum type="Integer"/>
      </colorLimits>
      <sphericalBounds type="Structure">
        <rangeMinimum type="Float"/>
        <rangeMaximum type="Float">4.29496729600000035e+04</rangeMaximum>
        <elevationMinimum type="Float">-1.57079632679489656e+00</elevationMinimum>
        <elevationMaximum type="Float">1.57079632679489656e+00</elevationMaximum>
        <azimuthStart type="Float">3.14159265358979312e+00</azimuthStart>
        <azimuthEnd type="Float">-3.14159265358979312e+00</azimuthEnd>
      </sphericalBounds>
      <pose type="Structure">
        <rotation type="Structure">
          <w type="Float">7.61353855020817760e-01</w>
          <x type="Float">-1.25993286051380403e-02</x>
          <y type="Float">8.81748809105072345e-04</y>
          <z type="Float">6.48213534942519654e-01</z>
        </rotation>
        <translation type="Structure">
          <x type="Float">1.86824077366144009e-01</x>
          <y type="Float">-7.71697468128955011e-01</y>
          <z type="Float">3.83657358542071003e-01</z>
        </translation>
      </pose>
      <acquisitionStart type="Structure">
        <dateTimeValue type="Float">1.23660194029798603e+09</dateTimeValue>
        <isAtomicClockReferenced type="Integer"/>
      </acquisitionStart>
      <acquisitionEnd type="Structure">
        <dateTimeValue type="Float">1.23660194029798603e+09</dateTimeValue>
        <isAtomicClockReferenced type="Integer"/>
      </acquisitionEnd>
      <pointGroupingSchemes type="Structure">
        <groupingByLine type="Structure">
          <idElementName type="String"><![CDATA[columnIndex]]></idElementName>
          <groups type="CompressedVector" fileOffset="467807460" recordCount="4809">
            <prototype type="Structure">
              <startPointIndex type="Integer" minimum="0" maximum="11565644"/>
              <idElementValue type="Integer" minimum="0" maximum="4808"/>
              <pointCount type="Integer" minimum="0" maximum="2405"/>
            </prototype>
            <codecs type="Vector" allowHeterogeneousChildren="1">
            </codecs>
          </groups>
        </groupingByLine>
      </pointGroupingSchemes>
      <points type="CompressedVector" fileOffset="234013796" recordCount="11565645">
        <prototype type="Structure">
          <sphericalRange type="Float" precision="single"/>
          <sphericalAzimuth type="Float" precision="single"/>
          <sphericalElevation type="Float" precision="single"/>
          <intensity type="Integer" minimum="0" maximum="65535"/>
          <colorRed type="Integer" minimum="0" maximum="255"/>
          <colorGreen type="Integer" minimum="0" maximum="255"/>
          <colorBlue type="Integer" minimum="0" maximum="255"/>
          <rowIndex type="Integer" minimum="0" maximum="2404"/>
          <columnIndex type="Integer" minimum="0" maximum="4808"/>
        </prototype>
        <codecs type="Vector" allowHeterogeneousChildren="1">
        </codecs>
      </points>
    </vectorChild>
    <vectorChild type="Structure">
      <guid type="String"><![CDATA[{7a94f9a2_7138_4edf_a81a_2b7a5e574a97}]]></guid>
      <name type="String"><![CDATA[cleantest3 3]]></name>
      <description type="String"><![CDATA[this file is generated by Autodesk ReCap]]></description>
      <indexBounds type="Structure">
        <rowMinimum type="Integer"/>
        <rowMaximum type="Integer">2410</rowMaximum>
        <columnMinimum type="Integer"/>
        <columnMaximum type="Integer">4821</columnMaximum>
        <returnMinimum type="Integer"/>
        <returnMaximum type="Integer"/>
      </indexBounds>
      <intensityLimits type="Structure">
        <intensityMaximum type="Integer">65535</intensityMaximum>
        <intensityMinimum type="Integer"/>
      </intensityLimits>
      <colorLimits type="Structure">
        <colorRedMaximum type="Integer">255</colorRedMaximum>
        <colorRedMinimum type="Integer"/>
        <colorGreenMaximum type="Integer">255</colorGreenMaximum>
        <colorGreenMinimum type="Integer"/>
        <colorBlueMaximum type="Integer">255</colorBlueMaximum>
        <colorBlueMinimum type="Integer"/>
      </colorLimits>
      <sphericalBounds type="Structure">
        <rangeMinimum type="Float"/>
        <rangeMaximum type="Float">4.29496729600000035e+04</rangeMaximum>
        <elevationMinimum type="Float">-1.57079632679489656e+00</elevationMinimum>
        <elevationMaximum type="Float">1.57079632679489656e+00</elevationMaximum>
        <azimuthStart type="Float">3.14159265358979312e+00</azimuthStart>
        <azimuthEnd type="Float">-3.14159265358979312e+00</azimuthEnd>
      </sphericalBounds>
      <pose type="Structure">
        <rotation type="Structure">
          <w type="Float">2.18316731838571809e-01</w>
          <x type="Float">1.18713578485820509e-02</x>
          <y type="Float">-4.54853683739468370e-03</y>
          <z type="Float">9.75795155898406263e-01</z>
        </rotation>
        <translation type="Structure">
          <x type="Float">9.13768166157068018e-01</x>
          <y type="Float">-8.96458800519138954e-01</y>
          <z type="Float">9.24036497625470021e-01</z>
        </translation>
      </pose>
      <acquisitionStart type="Structure">
        <dateTimeValue type="Float">1.23660194693500495e+09</dateTimeValue>
        <isAtomicClockReferenced type="Integer"/>
      </acquisitionStart>
      <acquisitionEnd type="Structure">
        <dateTimeValue type="Float">1.23660194693500495e+09</dateTimeValue>
        <isAtomicClockReferenced type="Integer"/>
      </acquisitionEnd>
      <pointGroupingSchemes type="Structure">
        <groupingByLine type="Structure">
          <idElementName type="String"><![CDATA[columnIndex]]></idElementName>
          <groups type="CompressedVector" fileOffset="702848500" recordCount="4822">
            <prototype type="Structure">
              <startPointIndex type="Integer" minimum="0" maximum="11625841"/>
              <idElementValue type="Integer" minimum="0" maximum="4821"/>
              <pointCount type="Integer" minimum="0" maximum="2411"/>
            </prototype>
            <codecs type="Vector" allowHeterogeneousChildren="1">
            </codecs>
          </groups>
        </groupingByLine>
      </pointGroupingSchemes>
      <points type="CompressedVector" fileOffset="467837080" recordCount="11625842">
        <prototype type="Structure">
          <sphericalRange type="Float" precision="single"/>
          <sphericalAzimuth type="Float" precision="single"/>
          <sphericalElevation type="Float" precision="single"/>
          <intensity type="Integer" minimum="0" maximum="65535"/>
          <colorRed type="Integer" minimum="0" maximum="255"/>
          <colorGreen type="Integer" minimum="0" maximum="255"/>
          <colorBlue type="Integer" minimum="0" maximum="255"/>
          <rowIndex type="Integer" minimum="0" maximum="2410"/>
          <columnIndex type="Integer" minimum="0" maximum="4821"/>
        </prototype>
        <codecs type="Vector" allowHeterogeneousChildren="1">
        </codecs>
      </points>
    </vectorChild>
  </data3D>
  <images2D type="Vector" allowHeterogeneousChildren="1">
  </images2D>
</e57Root>

Martin Isenburg

unread,
Mar 22, 2019, 3:45:00 PM3/22/19
to LAStools - efficient command line tools for LIDAR processing
Hello,

as I thought. Are such files common? I have never seen an e57 file with Spherical coordinates before. Maybe use Autodesk ReCap to reexport the data into Cartesian coordinates. Spherical coordinates are currently not supported by e572las. Should they be? How? Who should do the conversion from Spherical to Cartesian? Is there a function in the e57 library that handles this? Should they be stored in Spherical coordinates to LAS/LAZ? If yes, what happens to the rotation and translaction information?

Regards,

Martin

Géza Király

unread,
Mar 22, 2019, 8:39:49 PM3/22/19
to last...@googlegroups.com
Hello,

I have faced this problem before as well, exporting TLS data from Leica BLK360, and yes, it seems, that E572las does not handle this kind-of raw measurements (Range, Azim, Elev, etc.). On this web-page:
it is stated, that LAStools read spherical points, but it does not (or at least it seems to me).

One possible solution is Cloud Compare (https://www.danielgm.net/cc/), it can read the spherical E57, and can export it to other formats...

We would be happy, if Martin would include this possibility, to shorten our workflow. ;-)

Bets regards,

Géza

Martin Isenburg

unread,
Mar 26, 2019, 3:56:56 PM3/26/19
to LAStools - efficient command line tools for LIDAR processing
Hello Geza,

I added support for spherical coordinates for you (and I hope I did so without breaking Cartesian coordinates). Could you do a test run on a number of data sets:

https://www.dropbox.com/s/vy0em1r9csky980/e572las.exe

>> e572las.exe -v -i stairs.e57 -o stairs.laz
===========================================================================
e572las.exe is a free tool by 'rapidlasso GmbH' for converting point clouds
from the E57 format to the LAS & LAZ format. Please also have a look at our
LAStools software at http://rapidlasso.com/LAStools if you liked this tool.
===========================================================================
file 'stairs.e57' contains 3 scans. merging ...
processing scan 1 of 3 ...
  contains grid of 4811 by 2406 equaling 11575266 spherical points
  has quaternion (0.99993,0.0114749,-0.00302712,3.47384e-005) which is applied
  contains intensities (0-65535)
  contains RGB colors (0-255, 0-255, 0-255)
  all scans are written with millimeter resolution to 'C:\Users\martin\Downloads\stairs.laz'
processing scan 2 of 3 ...
  contains grid of 4809 by 2405 equaling 11565645 spherical points
  has quaternion (0.761354,-0.0125993,0.000881749,0.648214) which is applied
  has translation (0.186824,-0.771697,0.383657) which is applied
  contains intensities (0-65535)
  contains RGB colors (0-255, 0-255, 0-255)
processing scan 3 of 3 ...
  contains grid of 4822 by 2411 equaling 11625842 spherical points
  has quaternion (0.218317,0.0118714,-0.00454854,0.975795) which is applied
  has translation (0.913768,-0.896459,0.924036) which is applied
  contains intensities (0-65535)
  contains RGB colors (0-255, 0-255, 0-255)
written a total 34766753 points

Regards,

Martin @rapidlasso
e572las_spherical_coordinates_stairs_1.jpg
e572las_spherical_coordinates_stairs_2.jpg
e572las_spherical_coordinates_stairs_3.jpg

Géza Király

unread,
Apr 2, 2019, 8:00:08 AM4/2/19
to last...@googlegroups.com
Dear Martin,

Thank You very much! It seems working fine, after a number of tests. This helps a lot so far! I have realized some strange/missing things, which can be improved however, most related with the las/laz header. The creation as well as Acquisition DateTime can be found in e57, it would be nice to see it in las/laz header. Is it possible to put some information on the sensor (Vendor, Model, Name, etc.) into the header? Now it says 'Generating Software:       e572las.exe (version 180919)'. Is it by purpose or just an accident? Will this version be available in future distribution?

Thank You very much once more, and sorry about my late reply, but I was abroad, with very limited communication possibilities.

Géza

Martin Isenburg

unread,
Apr 4, 2019, 4:30:45 PM4/4/19
to LAStools - efficient command line tools for LIDAR processing
Hello,

the latest version of e572las.exe (version 190404) will populate the file creation year and day with the date found in the E57 file. Also other available info is extracted and stored as VLR in the LAS header. Other changes are:

 4 April 2019 -- e572las: read spherical coordinates and populate VLRs with name, guid, description, sensorModel, ...
 3 April 2019 -- lasview: pick profile line: press 'x', hold <SHIFT>, draw line, press 'x', adjust width in pop-up menu
 1 April 2019 -- lasview: new options '-load_gps_time' and '-load_gps_second' to display time stamp when p<i>cking point
31 March 2019 -- LASzip, LASlib, LAStools: better LASzip license thanks to Amir Said. upgrade to version 3.4 revision 0
23 March 2019 -- lasreturn: bug fix for incorrect parsing of bin size when using option '-histo return_distance 0.1'
21 March 2019 -- lasoverage: new '-classify_as 18' to give overage / overlap points classification different from 12
20 March 2019 -- lasoverage: new option '-entire_overlap' to classify, flag, or delete *all* points in overlap area 
19 March 2019 -- LASlib, LASzip, LAStools: bug fix in "legacy class" decompressing new point types with "class > 31"

Regards,

Martin @rapidlasso

Géza Király

unread,
Apr 9, 2019, 9:19:57 AM4/9/19
to last...@googlegroups.com
Dear Martin,

Thank You very much, it helps a lot! Please, let me know, if You need something (samples, experience, etc.) about the Leica BLK360.

Best regards,

Géza

Martin Isenburg

unread,
Apr 9, 2019, 12:00:53 PM4/9/19
to LAStools - efficient command line tools for LIDAR processing
Hello Geza,

yes, I need something. If you could come down to Samara on the Pacific Coast in Costa Rica with your Leica BLT360 and scan the urban jungle from several scan positions as well as some of the mature trees that would be wonderful. They have already been scanned once by a mobile system based on the Velodyne HDL32

https://www.facebook.com/groups/SamaraJungle/permalink/2363024833708795/

Because it's an urban jungle surrounded by walls of neighbors I think the BLT might do a decent job in getting the buildings (and in getting the individual scans aligned well) but I am curious about the capture of the vegetation.

https://www.facebook.com/groups/SamaraJungle/permalink/2365372980140647/

https://www.facebook.com/groups/SamaraJungle/permalink/2365380790139866/

I'd also like to get a Faro, a RIEGL, a GeoSLAM, and others to scan the same area. The subsequent "Happy Hour" drinks in the sunset on the beach are on me.

Martin
 

Evon Silvia

unread,
Apr 9, 2019, 12:33:00 PM4/9/19
to last...@googlegroups.com
If you’d like some guidance on encoding the System ID with an actual sensor model we’ve been experimenting with a scheme to do so in the LAS GitHub page here: https://github.com/ASPRSorg/LAS/issues/54

It’d be great to get some input from other user groups. I don’t believe I’ve added the BLK360 yet but will do so when I get back to my computer. 

Evon
Reply all
Reply to author
Forward
0 new messages