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); }
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); }
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); }
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); }
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); }