Description
Provides methods to access the results returned by the data provider.
Object Model
Public Properties
Category | Returns a value representing the category of the result. |
DataSets | Returns a collection of Datasets. |
Intervals | Returns a collection of intervals. |
Message | Returns the message returned with the result. |
Sections | Returns a collection of sections. |
Value | Returns the reference to the object containing the actual results returned by the data provider. The type of the object returned depends on the category. The categories currently defined are: Interval, SubSection and TextMessage |
Example
Compute an access and get constraint data from data provider
[C#] | Copy Code |
---|
IAgStkObject sat1 = root.GetObjectFromPath("Satellite/Satellite1");
IAgStkObject fac1 = root.GetObjectFromPath("Facility/Facility1");
IAgStkAccess access = sat1.GetAccessToObject(fac1);
access.ComputeAccess();
IAgIntervalCollection accessIntervals = access.ComputedAccessIntervalTimes;
root.UnitPreferences.SetCurrentUnit("Distance", "km");
root.UnitPreferences.SetCurrentUnit("Angle", "deg");
root.UnitPreferences.SetCurrentUnit("Time", "sec");
root.UnitPreferences.SetCurrentUnit("DateFormat", "UTCG");
Array dataPrvElements = new object[]
{
"Time", "FromAngularRate", "FromRange"
};
IAgDataPrvTimeVar dp = access.DataProviders["Constraint Data"] as IAgDataPrvTimeVar;
for (int index0 = 0; index0 < accessIntervals.Count; ++index0)
{
object startTime = null, stopTime = null;
accessIntervals.GetInterval(index0, out startTime, out stopTime);
Console.WriteLine("Access Interval #{0} - Start={1} Stop={2}", index0, startTime, stopTime);
IAgDrResult result = dp.ExecElements(startTime, stopTime, 60, ref dataPrvElements);
Array timeValues = result.DataSets[0].GetValues();
Array fromAngularRateValues = result.DataSets[1].GetValues();
Array fromRangeValues = result.DataSets[2].GetValues();
for (int index1 = 0; index1 < timeValues.GetLength(0); ++index1)
{
Console.WriteLine("{0}: FromAngularRate={1} FromRange={2}",
timeValues.GetValue(index1),
fromAngularRateValues.GetValue(index1),
fromRangeValues.GetValue(index1));
}
Console.WriteLine();
}
|
|
Extract data from IAgDrResult based on its category (generic)
[C#] | Copy Code |
---|
switch (result.Category)
{
case AgEDrCategories.eDrCatDataSetList:
IAgDrDataSetCollection datasets = result.DataSets;
break;
case AgEDrCategories.eDrCatIntervalList:
IAgDrIntervalCollection intervals = result.Intervals;
break;
case AgEDrCategories.eDrCatMessage:
IAgDrTextMessage message = result.Message;
break;
case AgEDrCategories.eDrCatSubSectionList:
IAgDrSubSectionCollection section = result.Sections;
break;
}
}
|
|
Compute an access and get constraint data from data provider
[Visual Basic .NET] | Copy Code |
---|
Dim sat1 As IAgStkObject = root.GetObjectFromPath("Satellite/Satellite1") Dim fac1 As IAgStkObject = root.GetObjectFromPath("Facility/Facility1") Dim access As IAgStkAccess = sat1.GetAccessToObject(fac1) access.ComputeAccess()
Dim accessIntervals As IAgIntervalCollection = access.ComputedAccessIntervalTimes
root.UnitPreferences.SetCurrentUnit("Distance", "km") root.UnitPreferences.SetCurrentUnit("Angle", "deg") root.UnitPreferences.SetCurrentUnit("Time", "sec") root.UnitPreferences.SetCurrentUnit("DateFormat", "UTCG")
Dim dataPrvElements As Array = New Object() {"Time", "FromAngularRate", "FromRange"}
Dim dp As IAgDataPrvTimeVar = TryCast(access.DataProviders("Constraint Data"), IAgDataPrvTimeVar)
Dim index0 As Integer = 0 While index0 <> Dim startTime As Object = Nothing, stopTime As Object = Nothing
accessIntervals.GetInterval(index0, startTime, stopTime)
Console.WriteLine("Access Interval #{0} - Start={1} Stop={2}", index0, startTime, stopTime)
Dim result As IAgDrResult = dp.ExecElements(startTime, stopTime, 60, dataPrvElements)
Dim timeValues As Array = result.DataSets(0).GetValues() Dim fromAngularRateValues As Array = result.DataSets(1).GetValues() Dim fromRangeValues As Array = result.DataSets(2).GetValues()
Dim index1 As Integer = 0 While index1 <> Console.WriteLine("{0}: FromAngularRate={1} FromRange={2}", timeValues.GetValue(index1), fromAngularRateValues.GetValue(index1), fromRangeValues.GetValue(index1)) System.Threading.Interlocked.Increment(index1) End While
Console.WriteLine() System.Threading.Interlocked.Increment(index0) End While
|
|
Extract data from IAgDrResult based on its category (generic)
[Visual Basic .NET] | Copy Code |
---|
Select Case result.Category Case AgEDrCategories.eDrCatDataSetList Dim datasets As IAgDrDataSetCollection = result.DataSets Exit Select Case AgEDrCategories.eDrCatIntervalList Dim intervals As IAgDrIntervalCollection = result.Intervals Exit Select Case AgEDrCategories.eDrCatMessage Dim message As IAgDrTextMessage = result.Message Exit Select Case AgEDrCategories.eDrCatSubSectionList Dim section As IAgDrSubSectionCollection = result.Sections Exit Select End Select
|
|