示例#1
0
        /// <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);
            }
        }
示例#2
0
        /// <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));
            }
        }
示例#3
0
 /// <summary>
 /// Returns a trace
 /// </summary>
 /// <returns></returns>
 public float[] GetTrace()
 {
     return(ZebraHeaderDescription.GetTraceData(Buffer));
 }