/// <summary> /// Constructor - creates from the parameters /// </summary> /// <param name="name">Variable name</param> /// <param name="unit">Variable unit</param> /// <param name="buffer">Buffer to parse</param> /// <param name="readdata">if set to true, the data is also parsed</param> public SEGY_Channel(string name, string unit, byte[] buffer, bool readdata) : base(name, unit, "Seismic Trace") { PaddedWidth = 0; for (int i = 0; i < ZebraHeaderDescription.c_Headers.Length; i++) { string value = "0"; name = ZebraHeaderDescription.c_Headers[i]; unit = ZebraHeaderDescription.c_Units[i]; switch (unit) { case "elevation": value = ZebraHeaderDescription.GetElevationValue(i + 1, buffer).ToString("0.000"); break; case "coordinate": value = ZebraHeaderDescription.GetCoordinateValue(i + 1, buffer).ToString("0.00"); break; case "ms": value = ZebraHeaderDescription.GetTimeValue(i + 1, buffer).ToString("0.0"); break; case "unitless": default: value = ZebraHeaderDescription.GetValue(i + 1, buffer); break; } SEGY_Constant c = new SEGY_Constant(name, unit, value, ""); Parameters.Add(c); } if (!readdata) { return; } Buffer = new byte[buffer.Length]; Array.Copy(buffer, Buffer, Buffer.Length); float[] Trace = ZebraHeaderDescription.GetTraceData(buffer); foreach (float f in Trace) { Data.Add(Convert.ToDouble(f)); } }
/// <summary> /// Returns a trace /// </summary> /// <returns></returns> public float[] GetTrace() { return(ZebraHeaderDescription.GetTraceData(Buffer)); }