示例#1
0
        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();
            }
        }
示例#2
0
        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");
            }
        }