【matlab调用stk】建立简单场景(卫星传感器与区域目标覆盖分析)

代码教程都可以参考stk官方网站:https://help.agi.com/stkdevkit/12.2.0/index.htm#stkObjects/ObjModMatlabCodeSamples.htm(可以根据stk版本号改链接)
1.建立新场景
% 连接stk
uiApplication = actxserver("STK.Application");
uiApplication.Visible = true;
root = uiApplication.personality2;
% 建立新场景
root.NewScenario("exam1");
sc = root.CurrentScenario;
2.添加目标区域
% 添加目标区域
name = 'Nanhai';
% lat = [21.46,21.46,13.23,13.47];
% lon = [113.42,119.78,119.56,110.08];
boundary = {21.46, 113.42;
        21.46, 119.78;
        13.23,119.56;
        13.47, 110.08};
areaTarget = root.CurrentScenario.Children.New(2, name); % eAreaTarget
areaTarget.CommonTasks.SetAreaTypePattern(boundary);

3.添加卫星

% 添加卫星
sat_name = "Sat"; % 卫星名称
satellite = root.CurrentScenario.Children.New('eSatellite', sat_name);
% 轨道六根数
semi_axis = 6678.14*1000; % 半长轴
eccentricity = 0.001; % 偏心率
inclination = 28.5; % 轨道倾角
lon_ascend = 0; % 升交点赤经
arg_periapsis = 0; % 近地点复角
true_anomaly = 0; % 真近点角
% ExecuteCommand命令使用方法详见官方教程 Library Reference--->Connect Command Library
% --->Alphabetical listing
root.ExecuteCommand('SetState */Satellite/'+sat_name+' Classical HPOP "' + num2str(sc.StartTime) + '" "'+ num2str(sc.StopTime) ...
                        +'" 60 ICRF "'  ...
                        + num2str(sc.StartTime) + '"'+' ' + num2str(semi_axis) ...
                        +' '+num2str(eccentricity) ...
                        +' '+num2str(inclination) ...
                        +' '+num2str(arg_periapsis) ...
                        +' '+num2str(lon_ascend)...
                        +' '+num2str(true_anomaly));

4.添加传感器

% 添加传感器
% IAgSatellite satellite: Satellite object
sensor = satellite.Children.New('eSensor','MySensor');
sensor.CommonTasks.SetPatternSimpleConic(45,1);  % 幅角  角分辨率
% Change pointing and set
sensor.CommonTasks.SetPointingFixedAzEl(90, 90, 0);
% Change location and set
sensor.SetLocationType('eSnFixed');

SetPatternSimpleConic  简单圆形视野传感器 

SetPatternRectangular  矩形视野传感器

sensor.CommonTasks.SetPatternRectangular(5, 7)   % 两个方向上的视场角

一些其他类型的传感器:

5.建立传感器与区域的链接


% 建立区域目标与传感器的链接
accesstest = sensor.GetAccessToObject(areaTarget);
accesstest.ComputeAccess()

 6.生成和保存报告

% 生成和保存报告
root.ExecuteCommand('ReportCreate */Satellite/Sat/Sensor/MySensor Type Save Style "Access" File "E:\D\matlab_project\stk_area_coverage\access.txt" AccessObject */AreaTarget/Nanhai');

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值