MATLAB与STK互联26:Constellation、Chain对象的属性及操作方法

在分析多个地面站对某个卫星目标的可见性时,如果只考虑用单站可见性进行分析,会有可见弧段重叠,不能给出可见弧段的整体情况。比如站1:13:45-13:55可见,战2:13:50-13:57可见,两个站总的可见弧长为13:45~13:57。要分析一组地面站对卫星的可见情况,则需要先建立由地面站组成的Constellation,然后建立Chain,即可获取相关数据。
下面上代码:
uiap = actxserver(‘STK11.application’);
root = uiap.Personality2;
root.NewScenario(‘constellation’);
sc = root.CurrentScenario;

sat = sc.Children.New(18,‘mysat’);
sat.Propagator.Propagate;
fac_con = sc.Children.New(‘eConstellation’,‘faconstellation’);

for j = 1:8
facname = [‘fac_’,num2str(j)];
fac = sc.Children.New(‘eFacility’,facname);
fac.Position.AssignGeodetic(sign(rand(1)-0.5)*rand(1)*50,(rand(1)-0.5)*rand(1)*180,0);
%设置地面站最小仰角、最大作用距离
facConstraints = fac.AccessConstraints;
elevationCstr = facConstraints.AddConstraint(‘eCstrElevationAngle’);
elevationCstr.EnableMin = 1;
elevationCstr.Min = 8;

rangeCstr = facConstraints.AddConstraint(‘eCstrRange’);
rangeCstr.EnableMax= 1;
rangeCstr.Max = 2000;

%向Constellation添加地面站对象
fac_con.Objects.AddObject(fac);
end

%建立Chain对象
facsatchain = sc.Children.New(‘eChain’,‘faccon2sat’);
facsatchain.Objects.AddObject(fac_con);
facsatchain.Objects.AddObject(sat);

%读取所有的可见弧段
allintervals= facsatchain.vgt.EventIntervalLists.Item(‘CompleteChainAccessIntervals’).FindIntervals;

output_interval = cell(allintervals.Intervals.Count,1);
for i =1:allintervals.Intervals.Count
output_interval{i} = {[‘第’,num2str(i),‘可见弧段:’],allintervals.Intervals.Item(i-1).Start,allintervals.Intervals.Item(i-1).Stop};
end
以上代码就完成了Constellation建立,Chain建立,以及读取Complete Chain Access弧段的功能。代码经过了验证,大家可以放心使用。

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值