/// <summary> /// Add an existing stream object. /// </summary> /// <param name="stream">The stream.</param> public void Add(ISeismicStream stream) { foreach (var seismicTrace in stream.Traces) { Traces.Add(seismicTrace); } }
public static void Write(this ISeismicStream stream, string filename, string type) { SeismicFileFactory seismicFile; switch (type) { case "msd": case "mseed": seismicFile = new MiniseedFileFactory(); break; case ".gse": throw new NotSupportedException("The file you are trying to write is not supported"); break; case "sac": throw new NotSupportedException("The file you are trying to write is not supported yet"); break; default: throw new NotSupportedException("The file you are trying to write is not supported"); } seismicFile.Write(stream, filename); }
public static void Filter(this ISeismicStream stream, DigitalFilter filtertype) { foreach (var trace in stream.Traces) { trace.Filter(filtertype); } }
public GatherViewer(ISeismicStream stream) { InitializeComponent(); _waveformViewer = new WaveformViewer(); _waveformViewer.UpdatePayload(stream); var newItem = layoutControlGroup1.AddItem(); newItem.Control = _waveformViewer; newItem.TextVisible = false; }
/// <summary> /// Wrtie to the specified filename /// </summary> /// <param name="stream"></param> /// <param name="filename"></param> public abstract void Write(ISeismicStream stream, string filename);
public override void Write(ISeismicStream stream, string filename) { MiniseedWriterWrapper.Write(stream, filename); }
internal static void Write(ISeismicStream stream, string filepath) { var wdir = Path.GetDirectoryName(filepath); if (wdir == null) { throw new Exception("The given filepath is invalid"); } var outputFile = Path.GetFileName(filepath); var processInfo = new ProcessStartInfo { FileName = "spmswrite.exe", RedirectStandardInput = true, WorkingDirectory = wdir, UseShellExecute = false, CreateNoWindow = true, Arguments = $"\"{outputFile}\"" }; using (var p = Process.Start(processInfo)) { if (p == null) { throw new Exception("Fail to start spmswrite.exe"); } using (var bw = new BinaryWriter(p.StandardInput.BaseStream)) { bw.Write(stream.Count); foreach (var trace in stream.Traces) { var miniSeedHeader = trace.Header as MiniseedHeader; // refer to xls document for the spec // some fallback when the header is created using the generic trace header bw.Write(StringToByteArray(miniSeedHeader?.FullSourceName ?? trace.Header.SourceName, 50)); bw.Write(miniSeedHeader?.HpStartTime ?? MiniseedHeader.GetHpTime(trace.Header.StartTime)); var sampleType = miniSeedHeader?.OriginSampleType ?? 'f'; bw.Write(sampleType); bw.Write(BitConverter.GetBytes((double)trace.Header.SamplingRate)); bw.Write(BitConverter.GetBytes(trace.Header.Npts)); // trace data buffer byte[] buff; switch (sampleType) { case 'i': buff = new byte[trace.Data.Length * sizeof(int)]; var intSamples = Array.ConvertAll(trace.Data, Convert.ToInt32); Buffer.BlockCopy(intSamples, 0, buff, 0, buff.Length); break; case 'd': buff = new byte[trace.Data.Length * sizeof(double)]; var doubleSamples = Array.ConvertAll(trace.Data, Convert.ToDouble); Buffer.BlockCopy(doubleSamples, 0, buff, 0, buff.Length); break; default: buff = new byte[trace.Data.Length * sizeof(float)]; Buffer.BlockCopy(trace.Data, 0, buff, 0, buff.Length); break; } bw.Write(buff); } } } }