没有合适的资源?快使用搜索试试~ 我知道了~
首页STK 二次开发-Data Provider.pdf
STK 二次开发-Data Provider.pdf
需积分: 50 638 浏览量
更新于2023-05-26
评论 1
收藏 1.59MB PDF 举报
STK 二次开发-Data Provider文档 主要介绍了STK一些报告功能的格式个性化导出功能,以及常用模块的调用。需具备一定的STK使用基础的人使用。
资源详情
资源评论
资源推荐

STK 二次开发-Data Provider
李云飞 47636962@qq.com
1 Data Provider
1.1 说明
阅读本文档需具备以下知识:
熟练使用 STK 软件 Report 工具生成卫星等对象的各种报告;
具备 STK 二次开发的基础知识;
本文中所有 Object Model 代码均使用 C#语言编写,因此应能熟练阅读及
使用 C#语法。,
1.2 概述
在 STK 中,Report&Graph Manager 控制面板用于生成 STK 对象(如卫星、
地面站或 Access 等)的报告和图表,如卫星在 J2000 坐标系下的位置、速度等参
数。它允许用户打开已存在的报告/图表、创建新的报告/图表以及改变报告/图表
的格式。
Report&Graph Manager 的打开方式有以下几种:
菜单栏,路径为:“Analysis-Report & Graph Manager...”;
工具栏中,点击图标 ;若工具栏中没有,则在工具栏空白处右键点
击,在弹出的菜单中选择"Data Providers"即可显示;
对象浏览器(Object Browser)中右键点击对象,在弹出的右键菜单中,
选择“Analysis-Report & Graph Manager...”。
下图为某卫星对象的 Report&Graph 控制面板的 GUI 界面。展开“Installed
Styles”即可看见软件内缺省安装的报告样式(Report Style)。注意,不同对象的
缺省安装的报告样式内容不同。

图1 STK Report&Graph Manager 界面(卫星的报告样式)
本章节不再详细叙述通过 STK GUI 界面方式手动生成报告或图表的方式,
而是阐述使用 STK Object Model 类库方式获取、生成具体的报告数据。
通过代码获取报告主要有两种方式:Connect 指令方式和 Object Model 方式。
两者获取 Report 的机理稍有不同,具体见下图。
STK GUI
Report Styles
Data Providers
Elements
Connect
Object
Model
图2 Connect 与 Object Model 获取 DataProvider 的方式

从图中可以看出,Connect 指令的方式与 GUI 界面的操作方式一样,可以直
接获取到具体对象的 Report Styles,即缺省安装的、用户自己创建的报告。
而使用 Object Model 类库方式,则直接与具体的 Data Providers(数据提供
者)打交道,此种方式获取不到缺省安装、用于自己创建的报告。
下面具体阐述使用 Object Model 方式如何识别、计算以及获取具体的数据。
1.3 Report Style(报告样式)结构
上图中可以看出一个 Report Style 是由具体的 Data Providers 组成的,我们来
看一个具体的例子。
在“Installed Styles”中找到"J2000 Position Velocity"样式,这个报告样式用
来生成卫星在 J2000 系下的位置和速度的。选中该样式,然后点击属性 ,则 可
打开该样式的属性窗口,见下图。
在报告样式的属性窗口中,左边窗口为各种的 Data Providers,右边窗口为
该样式的具体内容(Report Contents)。也就是说,样式的内容是由 Data Providers
中的具体数据组成的。
实际上,在新建一个报告样式的时候,就是通过样式的属性窗口,在左侧
Data Providers 窗口中自由选择合适的数据元素(Elements),从而组成自定义的报
告样式的。
图3 J2000 Position Velocity 报告样式的属性窗口
Data Providers 窗口中列出了所有的与某个 STK 对象(此处为卫星)相关的

数据。展开“Cartesian Position”数据组(Group),则可以看到组中所有的数据
提供者(Data Provider);展开数据提供者“J2000”,则可以看到此数据提供者
下所有的数据元素(Element),如 x/y/z 等。
下图为 Data Providers 窗口的具体结构层次图。注意,大部分的节点都为数
据组,即包含很多 Data Provider,如节点“Cartesian Position”、“Cartesian Velocity”
等节点;有的节点则直接为 Data Provider,如节点“Close Approach Compute
Results”。每个 Data Provider 中包含的则是我们最终需要的数据元素。
图4 Data Provider 窗口的具体层次结构图
值得注意的是上面提到的名称:Group、Data Provider 和 Element,请读者关
注,这也是 Object Model 中有关 Data Provider 类库的基础,后面具体代码中会多
次涉及到。我们将会使用这些概念具体的阐述如何使用 Object Model 代码获取与
报告样式相同的数据。
下图给出了三者在层次结构上的关系图。

图5 Group/Data Provider/Element 层次示意图
1.4 关联 STK 对象
要想获取 STK 对象的 Data Provider 类,首先要获取到 STK 场景中的相应对
象,如卫星或地面站。
假设已经有一个 STK 场景在运行,场景的相关设置为:
场景初始时刻:1 Feb 2009 00:00:00.00;
场景结束时刻:2 Feb 2009, 00:00:00.00;
存在一地面站对象,名称为:Facility1;
存在一卫星对象,名称为:Satellite1。
则可以通过下面代码获取到地面站和卫星对象:
// 关联已打开的STK桌面场景
AgUiApplication uiApp = Marshal.GetActiveObject("STK11.Application") as AgUiApplication;
// 获取接口:IAgStkObjectRoot
IAgStkObjectRoot stkRoot = uiApp.Personality2 as IAgStkObjectRoot;
// 获取卫星对象
IAgStkObject satellite = stkRoot.CurrentScenario.Children["Satellite1"];
// 获取地面站对象
IAgStkObject facility = stkRoot.CurrentScenario.Children["Facility1"];
注意,获取卫星对象时,缺省使用接口 IAgStkObject,我们并没有强制转换
为卫星对象的接口(IAgSatellite),地面站的接口类似。IAgStkObject 接口为 STK
中所有对象的基类接口,即拥有所有对象共有的属性与方法。下图为其部分属性。
剩余20页未读,继续阅读











安全验证
文档复制为VIP权益,开通VIP直接复制

评论0