STK笔记3-与python互联(读取已存在的access信息)

python互联(读取已存在的access信息)--pycharm

# %%import
import datetime
import os
import time
from tqdm import tqdm
import pandas as pd
from win32api import GetSystemMetrics
#import win32com.client
from comtypes.gen import STKObjects
from comtypes.client import CreateObject, GetActiveObject, GetEvents, CoGetObject, ShowEvents

# %%
# 创建数据存储路径
target_excel_dir = r'F:/python file/STK/stk01'
if not os.path.exists(target_excel_dir):
    os.makedirs(target_excel_dir)

# %%run stk
# Get reference to running STK instance
app = CreateObject("STK11.Application")
app.Visible = True
app.UserControl=True
# Get our IAgStkObjectRoot interface
root = app.Personality2

root.Load('F:\STKwork\Scenario6\Scenario2.sc')
root.UnitPreferences.SetCurrentUnit("DateFormat", "EpSec")#不然UTCG只能读取最后时间段的信息
#root.UnitPreferences.SetCurrentUnit("DateFormat", "UTCG")
scenario = root.CurrentScenario
scenario2 = scenario.QueryInterface(STKObjects.IAgScenario)

'''
# creat a new scenario
# IAgStkObjectRoot root: STK Object Model Root
root.NewScenario('Beidou3G2')  # 场景名称不能有空格等非法字符

root.UnitPreferences.SetCurrentUnit('DateFormat', 'UTCG')
# 设置场景时间
root.CurrentScenario.StartTime = '8 Jun 2020 16:00:00.00'
root.CurrentScenario.StopTime = '10 Jun 2020 04:00:00.00'
# %%定义函数创建卫星并导出数据
# path_tle:D:/xxx/xxx.txt存储目标的tle文件夹
'''


def Compute_access(access,Transmitter_name,Reciver_name):

    access.ComputeAccess()
    print(access)
    accessDP = access.DataProviders.GetDataPrvTimeVarFromPath("AER Data/Default")
    #accessDP2 = accessDP.QueryInterface(STKObjects.IAgDataPrvTimeVar)
    elements = ["Time", "Range"]
    accessResults = accessDP.ExecElements(scenario2.StartTime, scenario2.StopTime, 300 ,elements)

    Times = accessResults.DataSets.GetDataSetByName('Time').GetValues()  # 时间
    Range = accessResults.DataSets.GetDataSetByName('Range').GetValues()
    print(len(Times))
    Data = pd.DataFrame(columns=('Time (UTC)','Range (km)'))
    for j in range(0, len(Times)):
        t = Times[j]
        ran = Range[j]
        Data = Data.append(pd.DataFrame(
            {'Time (UTC)': [t],
             'Range (km)': [ran]}),
            ignore_index=True)
        #print(Data.head())
    # 存储Data
    Data.to_excel(target_excel_dir + '/' + Transmitter_name+'-'+Reciver_name+'.xlsx',
                  'sheet1', float_format='%.3f', index=False)
    return Times,Range


# %%执行函数
path_tle = r'F:/python file/STK/irdium75.txt'
t1 = scenario2.StartTime
t2 = scenario2.StopTime
# 你也可以自定义计算卫星参数的时间区间,但需要在场景时间范围内。
t3 = '12 May 2022 04:00:00.00'
t4 = '13 May 2022 04:00:00.00'
# 可以用root多次设置场景时间

access_list = scenario2.GetExistingAccesses()
#access_list = root.CurrentScenario.Children.GetElements(STKObjects.eAccess)
for access_path in tqdm(access_list):
    Transmitter_name = access_path[0].split('/')[-1]
    Reciver_name = access_path[1].split('/')[-1]
    access = scenario2.GetAccessBetweenObjectsByPath(access_path[0], access_path[1])
    print(Transmitter_name,Reciver_name)
    #compute_access(Transmitter_name,Reciver_name, t1, t2,access)
    accessStartTimes,accessStopTimes = Compute_access(access,Transmitter_name,Reciver_name)
    print(accessStartTimes,accessStopTimes)

#createSatellite(path_tle,t1,t2)

运行后会生成多个excel文件,命名为sat1-sat2.xlsx

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值