Exemple #1
0
        public List <string> GetAvailableDataProviderElements(
            string stkObjectPath, string DataProviderName, string GroupName)
        {
            IAgStkObject        stkObject = root.GetObjectFromPath(stkObjectPath);
            IAgDataProviderInfo dpInfo    = stkObject.DataProviders[DataProviderName];

            IAgDataProvider dataProvider = stkObject.DataProviders[DataProviderName] as IAgDataProvider;

            if (dpInfo.IsGroup())
            {
                IAgDataProviderGroup dpGroup     = dpInfo as IAgDataProviderGroup;
                IAgDataProviders     dpAvailable = dpGroup.Group;

                for (int i = 0; i < dpAvailable.Count; ++i)
                {
                    if (dpAvailable[i].Name == GroupName)
                    {
                        dataProvider = dpAvailable[i] as IAgDataProvider;
                        break;
                    }
                }
            }

            List <string> dataElements = new List <string>();

            for (int i = 0; i < dataProvider.Elements.Count; ++i)
            {
                dataElements.Add(dataProvider.Elements[i].Name);
            }
            return(dataElements);
        }
Exemple #2
0
        public static double[] GetRICDifferenceAtTCA(string sat1Path, string sat2Path, string epochISOYMD)
        {
            IAgStkObject primary, secondary;

            try
            {
                primary   = StkAssistant.Root.GetObjectFromPath(sat1Path);
                secondary = StkAssistant.Root.GetObjectFromPath(sat2Path);
            }
            catch
            {
                return(null);
            }
            IAgDataProviderInfo dpInfo = primary.DataProviders["RIC Coordinates"];

            IAgDataProvider dataProvider = primary.DataProviders["RIC Coordinates"] as IAgDataProvider;

            dataProvider.PreData = secondary.Path.Replace(StkAssistant.Root.CurrentScenario.Path, "");
            IAgDataPrvTimeVar dpTimeVarying = dataProvider as IAgDataPrvTimeVar;
            Array             elements      = new object[] { "Radial", "In-Track", "Cross-Track" };
            IAgDrResult       dpResult      = dpTimeVarying.ExecSingleElements(epochISOYMD, elements);

            double[] ric = new double[3];
            ric[0] = (double)dpResult.DataSets[0].GetValues().GetValue(0);
            ric[1] = (double)dpResult.DataSets[1].GetValues().GetValue(0);
            ric[2] = (double)dpResult.DataSets[2].GetValues().GetValue(0);

            return(ric);
        }
Exemple #3
0
        public List <String> GetAvailableGroups(string stkObjectPath, string DataProviderName)
        {
            IAgStkObject stkObject = root.GetObjectFromPath(stkObjectPath);

            IAgDataProviderInfo dataProvider = stkObject.DataProviders[DataProviderName];

            List <String> groups = new List <string>();

            if (dataProvider.IsGroup())
            {
                IAgDataProviderGroup dpGroup     = dataProvider as IAgDataProviderGroup;
                IAgDataProviders     dpAvailable = dpGroup.Group;

                for (int i = 0; i < dpAvailable.Count; ++i)
                {
                    groups.Add(dpAvailable[i].Name);
                }
            }

            return(groups);
        }
Exemple #4
0
        public Array GetDataProviders(string stkObjectPath, string DataProviderName,
                                      string GroupName, string ElementName)
        {
            string startTime = scen.StartTime.ToString();
            string stopTime  = scen.StopTime.ToString();
            double stepSize  = 60;

            IAgStkObject stkObject = root.GetObjectFromPath(stkObjectPath);

            IAgDataProviderInfo dpInfo = stkObject.DataProviders[DataProviderName];

            IAgDataProvider dataProvider = stkObject.DataProviders[DataProviderName] as IAgDataProvider;

            if (dpInfo.IsGroup())
            {
                IAgDataProviderGroup dpGroup     = dpInfo as IAgDataProviderGroup;
                IAgDataProviders     dpAvailable = dpGroup.Group;

                for (int i = 0; i < dpAvailable.Count; ++i)
                {
                    if (dpAvailable[i].Name == GroupName)
                    {
                        dataProvider = dpAvailable[i] as IAgDataProvider;
                        break;
                    }
                }
            }

            IAgDrResult dpResult = null;

            switch (dpInfo.Type)
            {
            case AgEDataProviderType.eDrFixed:
                //Fixed data doesnt change over time
                IAgDataPrvFixed dpFixed = dataProvider as IAgDataPrvFixed;
                dpResult = dpFixed.Exec();
                break;

            case AgEDataProviderType.eDrIntvl:
                //Interval data is given as a list of intervals with start, stop and duration
                IAgDataPrvInterval dpInterval = dataProvider as IAgDataPrvInterval;
                //Must provide analysis start and stop time

                dpResult = dpInterval.Exec(startTime, stopTime);
                break;

            case AgEDataProviderType.eDrTimeVar:
                //Time varyign data is given as an array of time based values
                IAgDataPrvTimeVar dpTimeVarying = dataProvider as IAgDataPrvTimeVar;
                //Must provide analysis start and stop time plus an evaluation step size
                dpResult = dpTimeVarying.Exec(startTime, stopTime, stepSize);
                break;

            default:
                break;
            }

            Array dataValues = null;

            IAgDrDataSetCollection datasets = dpResult.DataSets;

            if (datasets.Count > 0)
            {
                IAgDrDataSet thisDataset = datasets.GetDataSetByName(ElementName);

                dataValues = thisDataset.GetValues();
            }
            return(dataValues);
        }
Exemple #5
0
        public static RICResults GetRICDifferenceOverTime(string sat1Path, string sat2Path, string epochISOYMD)
        {
            IAgDate tca = StkAssistant.Root.ConversionUtility.NewDate("ISO-YMD", epochISOYMD);

            IAgStkObject primary, secondary;

            try
            {
                primary   = StkAssistant.Root.GetObjectFromPath(sat1Path);
                secondary = StkAssistant.Root.GetObjectFromPath(sat2Path);
            }
            catch
            {
                return(new RICResults());
            }

            double period1 = StkAssistant.GetSatellitePeriod(primary.Path, epochISOYMD);
            double period2 = StkAssistant.GetSatellitePeriod(secondary.Path, epochISOYMD);

            double period = (period1 + period2) / 2;

            IAgDataProviderInfo dpInfo = primary.DataProviders["RIC Coordinates"];

            IAgDataProvider dataProvider = primary.DataProviders["RIC Coordinates"] as IAgDataProvider;

            dataProvider.PreData = secondary.Path.Replace(StkAssistant.Root.CurrentScenario.Path, "");
            IAgDataPrvTimeVar dpTimeVarying = dataProvider as IAgDataPrvTimeVar;
            Array             elements      = new object[] { "Time", "Radial", "In-Track", "Cross-Track", "Range" };
            IAgDrResult       dpResult      = dpTimeVarying.ExecElements(
                tca.Subtract("sec", .5 * period).Format("ISO-YMD"),
                tca.Add("sec", .5 * period).Format("ISO-YMD"),
                10, elements);
            RICResults ricResults = new RICResults();

            foreach (IAgDrDataSet dataset in dpResult.DataSets)
            {
                if (dataset.ElementName.Equals("Time"))
                {
                    List <string> times = new List <string>();
                    foreach (object item in dataset.GetValues())
                    {
                        times.Add(item.ToString());
                    }
                    ricResults.Times = times.ToArray();
                }
                else
                {
                    List <double> values = new List <double>();
                    foreach (object item in dataset.GetValues())
                    {
                        values.Add((double)item);
                    }

                    switch (dataset.ElementName)
                    {
                    case "Radial":
                        ricResults.R = values.ToArray();
                        break;

                    case "In-Track":
                        ricResults.I = values.ToArray();
                        break;

                    case "Cross-Track":
                        ricResults.C = values.ToArray();
                        break;

                    case "Range":
                        ricResults.Range = values.ToArray();
                        break;

                    default:
                        break;
                    }
                }
            }

            return(ricResults);
        }