When we started our point cloud development project, we collected many different samples of LiDAR data in a form of delimited text files. To give you an idea how they looked like, here are just a few examples:
# North California example:
x,y,z,gpstime,intensity,classification,flight_line
493509.88,4245673.18,-32.00,160025.954000,0,2,1
493511.98,4245674.49,-31.86,160025.954000,0,1,1
493512.56,4245674.59,-31.92,160025.956800,0,1,1
# Washington state example:
GPSTime X Y Z Intensity ReturnNum NumReturns Class ScanDirection ScanAngleRank GPSWeek FlightLine
151539.687767 1145355.12 549174.79 182.19 134 1 1 2 0 4 1519 154
151539.687807 1145365.72 549174.33 181.99 1 2 2 2 0 3 1519 154
151539.687818 1145368.41 549174.23 181.89 3 3 3 2 0 3 1519 154
# Switzerland example:
589375.00 232939.90 749.60
589375.01 232881.08 758.41
589375.01 232901.53 758.73
# Louisiana example:
596509.930,3312317.890,7.227
596509.840,3312314.650,6.867
596509.760,3312311.430,6.668
# Illinois, Carrol county example (last column is intensity):
2290049.430 2013949.280 668.430 82
2290049.360 2013953.160 667.240 78
2290049.290 2013956.930 665.470 92
As we can see, there is no particular ASCII Point Cloud format. We rather observe:
Different sets of columns ranging from simple X, Y, and Z to quite detailed data about points including intensity, time, flight line, returns etc;
-
A usual variety of delimiters - from space to comma to tab;
-
Different column orders; for example, X, Y, Z columns are not necessarily placed first;
-
Different precision and projections;
-
There can be a header, or it can be missing.
All this reminds of a format that exists in FME for many years - CSV. This is why we used our CSV reader dialog as a template for making the Point Cloud XYZ reader.
Of course, there are some differences.
CSV columns become attributes, whereas Point Cloud XYZ columns are turned into components.
CSV is a non-spatial format, even if it contains coordinates - we use FME transformers to make geometries based on the values in the columns that we know keep coordinates. Point Cloud XYZ must have at least three columns that will compose point cloud geometry. The column can have any names, however, they will be mapped to the respective point cloud components X, Y, and Z.
CSV Parameters Dialog

Point Cloud XYZ Parameters Dialog

Column-to-component mapping (GUI part circled with red on the screeenshot above) is an essential part of the reader's parameter dialog. The number of components, at least in FME 2011, is limited:

Three "must-have" XYZ components are always present in the dialog, we can't go further until they all are set. All other components are optional - we don't have to map everything what is contained in the source file.
The current set of components is mostly based on the LAS specification (with a couple of extra components). Depending on customer feedback, we may consider adding more, including user-defined, components in future versions of FME.
Features leaving the Point Cloud XYZ reader have geometry of fme_point_cloud, and are ready for further point cloud processing.
An interesting side effect of this reader is that any data having XYZ can be read as a point cloud. It can be something as simple as a DEM (below is a 1 Degree world DEM):

Or something less expected - Swiss transit system stations with the number of connections used as Z:
