public string FormatTime(DateTime time, double timePrecisionSec) { if (TimeFormat == TimeFormat.String) { var timeString = time.ToString(GetStringTimeFormat(timePrecisionSec, false), CultureInfo.InvariantCulture); return(ExcelFriendly ? string.Format("[{0}]", timeString) : timeString); } else if (TimeFormat == TimeFormat.DecimalDays) { double decimalDay = (time.Hour + time.Minute / 60.0 + (time.Second + time.Millisecond / 1000.0) / 3600.0) / 24.0; return(decimalDay.ToString(GetDecimalDaysTimeFormat(timePrecisionSec), CultureInfo.InvariantCulture)); } else if (TimeFormat == TimeFormat.DecimalJulianDays) { if (FistMeasurementDay.HasValue && FistMeasurementTimeStamp.HasValue) { time = FirstConfirmedMeasurementTimeStamp.AddTicks(time.Ticks - FistMeasurementTimeStamp.Value.Ticks); } double jd = JulianDayHelper.JDUtcAtDate(time); return(jd.ToString(GetDecimalDaysTimeFormat(timePrecisionSec), CultureInfo.InvariantCulture)); } else { throw new ArgumentOutOfRangeException(); } }
private void SetHeader(string name, string value) { //# Longitude=150.7769 //# Latitude=-33.8092 //# RA=2.3958 # hours //# DEC=-50.9320 # degrees //# JD=2457206.23238 # UT //# X=1.459 # air mass //# Gain=34.0 # dB //# Exposure=1.00 # sec //# Target=HD 14943 //# Camera=WAT-910BD //# Telescope=14" LX200 ACF //# Recorder=OccuRec v2.8.2 //# Observer=Hristo Pavlov //# WavelengthCalibration=3-rd order[-3.069448E-13,3.490942E-07,0.09728059,37.99137] //# Dispersion=9.93 # A/pix float floatVal; if (name == "LONGITUDE") { if (float.TryParse(value, out floatVal)) { Longitude = floatVal; } } else if (name == "LATITUDE") { if (float.TryParse(value, out floatVal)) { Latitude = floatVal; } } else if (name == "RA") { if (float.TryParse(value, out floatVal)) { RAHours = floatVal; } } else if (name == "DEC") { if (float.TryParse(value, out floatVal)) { DEDeg = floatVal; } } else if (name == "JD") { if (double.TryParse(value, out m_JD)) { m_EpochUT = JulianDayHelper.DateTimeAtJD(m_JD); } } else if (name == "X") { if (float.TryParse(value, out floatVal)) { AirMass = floatVal; } } else if (name == "FWHM") { if (float.TryParse(value, out floatVal)) { FHWM = floatVal; } } else if (name == "MAGCOEFF") { if (float.TryParse(value, out floatVal)) { MagCoeff = floatVal; } } else if (name == "GAIN") { float.TryParse(value, out m_Gain); } else if (name == "EXPOSURE") { if (float.TryParse(value, out floatVal)) { Exposure = floatVal; } } else if (name == "TARGET") { Target = value; } else if (name == "DISPERSION") { float.TryParse(value, out m_Dispersion); } }
internal void PopulateMasterSpectraObservationDetails(MasterSpectra spectra) { var dict = m_VideoController.GetVideoFileTags(); float lng = float.NaN; float lat = float.NaN; float ra = float.NaN; float dec = float.NaN; DateTime?centralTime = null; if (spectra.ObservationInfo == null) { spectra.ObservationInfo = new ObservationInfo(); } spectra.ObservationInfo.Reset(); if (dict.ContainsKey("Longitude")) { if (float.TryParse(dict["Longitude"], NumberStyles.Float, CultureInfo.InvariantCulture, out lng)) { spectra.ObservationInfo.AddProperty("Longitude", lng.ToString("0.0000", CultureInfo.InvariantCulture)); } } if (dict.ContainsKey("Latitude")) { if (float.TryParse(dict["Latitude"], NumberStyles.Float, CultureInfo.InvariantCulture, out lat)) { spectra.ObservationInfo.AddProperty("Latitude", lat.ToString("0.0000", CultureInfo.InvariantCulture)); } } if (dict.ContainsKey("RA")) { if (float.TryParse(dict["RA"], NumberStyles.Float, CultureInfo.InvariantCulture, out ra)) { spectra.ObservationInfo.AddProperty("RA", ra.ToString("0.0000", CultureInfo.InvariantCulture), "hours"); } } if (dict.ContainsKey("DEC")) { if (float.TryParse(dict["DEC"], NumberStyles.Float, CultureInfo.InvariantCulture, out dec)) { spectra.ObservationInfo.AddProperty("DEC", dec.ToString("0.0000", CultureInfo.InvariantCulture), "degrees"); } } if (spectra.MeasurementInfo.FirstFrameTimeStamp.HasValue && spectra.MeasurementInfo.LastFrameTimeStamp.HasValue) { centralTime = new DateTime((spectra.MeasurementInfo.FirstFrameTimeStamp.Value.Ticks + spectra.MeasurementInfo.LastFrameTimeStamp.Value.Ticks) / 2); double jd = JulianDayHelper.JDUtcAtDate(centralTime.Value); spectra.ObservationInfo.AddProperty("JD", jd.ToString("0.00000", CultureInfo.InvariantCulture), "UT"); } if (!float.IsNaN(lng) && !float.IsNaN(lat) && !float.IsNaN(ra) && !float.IsNaN(dec) && centralTime.HasValue) { var extCalc = new AtmosphericExtinctionCalculator(ra, dec, lng, lat, 0); double airMass; double altitudeDeg; extCalc.CalculateExtinction(centralTime.Value, out altitudeDeg, out airMass); spectra.ObservationInfo.AddProperty("X", airMass.ToString("0.000", CultureInfo.InvariantCulture), "air mass"); } if (!float.IsNaN(spectra.ZeroOrderFWHM)) { spectra.ObservationInfo.AddProperty("FWHM", spectra.ZeroOrderFWHM.ToString("0.00"), "zero order image FWHM"); } if (!float.IsNaN(spectra.MeasurementInfo.Gain)) { spectra.ObservationInfo.AddProperty("Gain", spectra.MeasurementInfo.Gain.ToString("0.0", CultureInfo.InvariantCulture), "dB"); } if (!float.IsNaN(spectra.MeasurementInfo.ExposureSeconds)) { spectra.ObservationInfo.AddProperty("Exposure", spectra.MeasurementInfo.ExposureSeconds.ToString("0.000", CultureInfo.InvariantCulture), "sec"); } if (dict.ContainsKey("ObjectName")) { spectra.ObservationInfo.AddProperty("Target", dict["ObjectName"]); } if (dict.ContainsKey("Instrument")) { spectra.ObservationInfo.AddProperty("Camera", dict["Instrument"]); } if (dict.ContainsKey("Telescope")) { spectra.ObservationInfo.AddProperty("Telescope", dict["Telescope"]); } if (dict.ContainsKey("Recorder")) { spectra.ObservationInfo.AddProperty("Recorder", dict["Recorder"]); } if (dict.ContainsKey("Observer")) { spectra.ObservationInfo.AddProperty("Observer", dict["Observer"]); } if (spectra.IsCalibrated()) { if (spectra.Calibration.PolynomialOrder == 1) { spectra.ObservationInfo.AddProperty("WavelengthCalibration", string.Format("1-st order[{0},{1}]", spectra.Calibration.A, spectra.Calibration.B)); } else if (spectra.Calibration.PolynomialOrder == 2) { spectra.ObservationInfo.AddProperty("WavelengthCalibration", string.Format("2-nd order[{0},{1},{2}]", spectra.Calibration.A, spectra.Calibration.B, spectra.Calibration.C)); } else if (spectra.Calibration.PolynomialOrder == 3) { spectra.ObservationInfo.AddProperty("WavelengthCalibration", string.Format("3-rd order[{0},{1},{2},{3}]", spectra.Calibration.A, spectra.Calibration.B, spectra.Calibration.C, spectra.Calibration.D)); } else if (spectra.Calibration.PolynomialOrder == 4) { spectra.ObservationInfo.AddProperty("WavelengthCalibration", string.Format("4-th order[{0},{1},{2},{3},{4}]", spectra.Calibration.A, spectra.Calibration.B, spectra.Calibration.C, spectra.Calibration.D, spectra.Calibration.E)); } spectra.ObservationInfo.AddProperty("Dispersion", spectra.Calibration.Dispersion.ToString("0.00", CultureInfo.InvariantCulture), "A/pix"); } }