/// <summary> /// Writes trace as a binary /// </summary> /// <param name="fs"></param> public override void Write(FileStream fs) { if (Buffer != null) { for (int i = 0; i < Parameters.Count; i++) { SEGY_Constant c = (SEGY_Constant)Parameters[i]; string unit = ZebraHeaderDescription.c_Units[i]; switch (unit) { case "elevation": ZebraHeaderDescription.SetElevationValue((float)c.ValueD, i + 1, Buffer); break; case "coordinate": ZebraHeaderDescription.SetCoordinateValue((float)c.ValueD, i + 1, Buffer); break; case "ms": ZebraHeaderDescription.SetTimeValue((float)c.ValueD, i + 1, Buffer); break; case "unitless": default: ZebraHeaderDescription.SetValue(c.Value, i + 1, Buffer); break; } } fs.Write(Buffer, 0, Buffer.Length); } }
/// <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)); }