using LASFormat; using LASRead.LASFormat; using System; using System.Collections.Generic; using System.IO; using System.Text; namespace LASRead { public class RawPoints { // Creates a raw point cloud from a LAS file input. LASFile source; FileStream output; public RawPoints(LASFile source, FileStream output) { this.source = source; this.output = output; } public void Run() { GenerateHeader(); byte[] tData = new byte[12]; foreach (IPointDataRecord pdr in source.points) { byte[] t = BitConverter.GetBytes(pdr.X); t.CopyTo(tData, 0); t = BitConverter.GetBytes(pdr.Y); t.CopyTo(tData, 4); t = BitConverter.GetBytes(pdr.Z); t.CopyTo(tData, 8); output.Write(tData); } output.Flush(); output.Close(); } /// /// Header is 24 bytes (3 doubles) /// private void GenerateHeader() { byte[] finalBytes = new byte[24]; double x_scale = source.Header.X_scaleFactor; double y_scale = source.Header.Y_scaleFactor; double z_scale = source.Header.Z_scaleFactor; byte[] t = BitConverter.GetBytes(x_scale); t.CopyTo(finalBytes, 0); t = BitConverter.GetBytes(y_scale); t.CopyTo(finalBytes, 8); t = BitConverter.GetBytes(z_scale); t.CopyTo(finalBytes, 16); output.Write(finalBytes); } } }