代码教程都可以参考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');