/// <summary> /// Loads data from fully qualified CSV file /// Exceptions are thrown if the column names are wrong /// </summary> /// <param name="?"></param> public void FromCSVFile(CSV_File csv) { SensorDescriptionFile sdf = new SensorDescriptionFile(); CSV_Channel index = csv.GetIndex(); if (index == null) { throw new Exception("File contains no valid data"); } CSV_Channel MD = CSVToChannel(csv, "MD"); CSV_Channel Northing = CSVToChannel(csv, "Northing"); CSV_Channel Easting = CSVToChannel(csv, "Easting"); CSV_Channel DepthSRD = CSVToChannel(csv, "Depth SRD"); CSV_Channel IsActive = CSVToChannel(csv, "Active"); CSV_Channel Type = CSVToChannel(csv, "Type"); CSV_Channel Gain = CSVToChannel(csv, "Gain"); CSV_Channel Sensitivity = CSVToChannel(csv, "Sensitivity"); CSV_Channel FullScale = CSVToChannel(csv, "Full Scale"); CSV_Channel LowFrequency = CSVToChannel(csv, "Filter Min"); CSV_Channel HighFrequency = CSVToChannel(csv, "Filter Max"); CSV_Channel iN = CSVToChannel(csv, "iN"); CSV_Channel iE = CSVToChannel(csv, "iE"); CSV_Channel iD = CSVToChannel(csv, "iD"); CSV_Channel Polarization = CSVToChannel(csv, "Polarity"); CSV_Channel PStationCorrection = CSVToChannel(csv, "P Static"); CSV_Channel SStationCorrection = CSVToChannel(csv, "S Static"); sdf.Metric = !DepthSRD.Unit.ToUpper().Contains("F"); for (int i = 0; i < index.Data.Count; i++) { SensorDescription sd = new SensorDescription(); sd.ChannelNumber = i + 1; sd.MD = MD.Data[i]; sd.Northing = Northing.Data[i]; sd.Easting = Easting.Data[i]; sd.DepthSRD = DepthSRD.Data[i]; sd.IsActive = IsActive.Data[i] > 0.0; sd.Type = Type.Data[i].ToString("0").PadLeft(5, '0'); sd.Gain = Gain.Data[i]; sd.Sensitivity = Sensitivity.Data[i]; sd.FullScale = FullScale.Data[i]; sd.LowFrequency = LowFrequency.Data[i]; sd.HighFrequency = HighFrequency.Data[i]; sd.iN = iN.Data[i]; sd.iE = iE.Data[i]; sd.iD = iD.Data[i]; sd.Polarization = (Polarization.Data[i] < 0.0) ? -1 : 1; sd.PStationCorrection = PStationCorrection.Data[i]; sd.SStationCorrection = SStationCorrection.Data[i]; sdf.Sensors.Add(sd); } if (sdf.Sensors.Count <= 0) { throw new Exception("CSV file contains no data."); } this.Sensors.Clear(); this.Metric = sdf.Metric; this.Sensors = sdf.Sensors; m_Modified = true; }
private void Read() { FileStream fs = null; StreamReader sr = null; try { fs = File.Open(m_FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); sr = new StreamReader(fs); ReadHeader(sr); while (true) { string s = sr.ReadLine(); if (s == null) { break; } SensorDescription sd = new SensorDescription(s); if (!sd.Valid) { continue; } Sensors.Add(sd); } } catch (Exception) { } finally { if (sr != null) { sr.Close(); } if (fs != null) { fs.Close(); } } }