附錄 A — Connect 指令速查
AGIPCEXP / STK Connect 常用參數整理
來源:
AGIPCEXP常用參數.xlsx(個人工作筆記,14 個分頁)。
本檔把散在各分頁的指令依「物件類型」重新整理成可查表,並補上單位、時序、易錯點。
Connect 距離預設單位為公尺;所有涉及距離的段落開頭都應先SetUnits / km。
頻率預設 Hz、功率 W、資料率 b/sec、天線角度 radians。
Connect 成功不回傳值;耗時指令(新增物件、計算)之間建議留 sleep 或稍候數秒。
0. 場景骨架(每個腳本開頭)
Unload / * # 卸載現有場景
New / Scenario MyScenario1 # 新增場景
SetAnalysisTimePeriod * "01 Dec 2024 00:00:00.000" "01 Dec 2024 00:30:00.000"
SetTimePeriod * "01 Dec 2024 00:00:00.000" "01 Dec 2024 00:30:00.000"
Animate * Reset
SetUnits / km # 先設距離單位
MATLAB 專用:root.NewScenario('MyScenario');
場景時間(COM 物件模型):
scenario.SetTimePeriod('24 Feb 2020 16:00:00.000','25 Feb 2020 16:00:00.000');
scenario.StartTime = '24 Feb 2020 16:00:00.000';
scenario.StopTime = '25 Feb 2020 16:00:00.000';
root.ExecuteCommand('Animate * Reset');
1. Aircraft(飛機)
New / */Aircraft MyAircraft1
Model */Aircraft MyAircraft1 "C:\Program Files\AGI\STK 12\STKData\VO\Models\Air\<model>"
Waypoints */Aircraft/MyAircraft1 Clear # 加點前先清除舊航點
New / */Aircraft/MyAircraft1/Sensor MySensor # 掛感測器
航點兩種給法(對應「已知速度算時間」或「已知時間算速度」):
DetTimeAccFromVel — 給速度,STK 算抵達時間:
# <Lat> <Lon> <Alt> <Speed> [<TurnRadius>]
AddWaypoint */Aircraft/MyAircraft1 DetTimeAccFromVel 25.061804 121.224645 5 0.1 1
DetVelFromTime — 給抵達時間,STK 算速度:
# <Lat> <Lon> <Alt> "<ArrivalTime>"
AddWaypoint */Aircraft/MyAircraft2 DetVelFromTime 25.061804 121.224645 1 "01 Dec 2024 00:05:00.00"
<TurnRadius>為選填,單位為 Connect 距離單位,省略則為 0.0 m。- 姿態:
SetAttitude */Aircraft/MyAircraft Profile AircraftCoordTurn 0.5
2. Ship(船艦)
New / */Ship MyShip1
Waypoints */Ship/MyShip1 Clear
# <Lat> <Lon> <Alt|Terrain> <Speed> [<TurnRadius>]
AddWaypoint */Ship/MyShip1 DetTimeAccFromVel 24.598300 121.876054 Terrain 0.1 0.15
- 高度可填
Terrain讓船貼地形海平面。 - 定點船艦技巧:給兩個經緯度僅差 ~1e-5 度的航點,即可視為靜止。
3. Facility(地面設施)+ AzEl Mask
New / */Facility MyFacility1 # 新增後約等待 5 秒
SetPosition */Facility/MyFacility1 Geodetic 24.461129 118.417155 UseTerrain
SetAzElMask */Facility/MyFacility1 Terrain
Graphics */Facility/MyFacility1 AzElMask Type Range Show On NumSteps 10 MinRange 0 MaxRange 100 Color cyan
- 位置參數:
Latitude Longitude Altitude;UseTerrain= 高度貼地形。
4. Radar(雷達,掛在 Facility 下)
New / */Facility/MyFacility1/Radar MyRadar1
Radar */Facility/MyFacility1/Radar/MyRadar1 SetValue Model Monostatic
Radar */Facility/MyFacility1/Radar/MyRadar1 SetValue Model.Transmitter.Power 45.0
Radar */Facility/MyFacility1/Radar/MyRadar1 SetValue Model.Transmitter.Frequency 2.8 GHz
Point */Facility/MyFacility1/Radar/MyRadar1 Spinning 0 90 0 Continuous 0.2 360
地面 Sensor 視場 + 旋轉掃描(旋轉雷達/搜索):
New / */Facility/Fac1/Sensor Sen1
# Conical <水平角Min> <水平角Max> <俯仰Min> <俯仰Max>
Define */Facility/Fac1/Sensor/Sen1 Conical 0.0 30.0 10.0 20.0
# Spinning <初始Az> <初始El> <Roll> Continuous <轉速deg/s> <總旋轉deg>
Point */Facility/Fac1/Sensor/Sen1 Spinning 0 90 0 Continuous 30 360
5. Area Target(區域目標)
New / */AreaTarget MyAreaTarget1 # 未指定位置預設落在西非外海(0,0)
# 多邊形:Pattern LatLon <點數N> <lat1> <lon1> ... <latN> <lonN>
SetBoundary */AreaTarget/MyAreaTarget1 Pattern LatLon 4 24.560032 117.640594 24.560297 117.670697 24.571258 117.669028 24.571616 117.645613
GetBoundary */AreaTarget/MyAreaTarget1 # 回傳所有邊界點(空白分隔)
# 橢圓:Ellipse <半長軸> <半短軸> <方位角deg> (單位為 Connect 距離單位)
SetBoundary */AreaTarget/MyAreaTarget1 Ellipse 100 10 45
6. Report(報告輸出)
ReportCreate */Satellite/mysat Type Save Style "Access" File "D:\stkdata\access.txt" AccessObject */Facility/myfac
Type Save(存檔)/Display(顯示)/Return(回傳文字);Style指定報表樣式;AccessObject指定對哪個物件算 access。
7. General(常用雜項)
Terrain * Add Type PDTT File "F:\STK\taiwan20m.pdtt" # 加地形檔
VO * Declutter Enable On # 3D 標籤防重疊
Unload / * # 卸載目前場景
Unload / */Chain/TestCh RemAssignedObjs # 卸載 Chain 並移除其指派物件
8. 星座(Constellation)與覆蓋/重訪分析
這是本筆記最有價值的部分:用種子衛星展 Walker 星座 → 建 CoverageDefinition →
用 FigureOfMerit 算「覆蓋率 / 最大重訪 / 平均重訪」。以下為純 Connect 指令骨幹
(原筆記以 Pythonroot.ExecuteCommand()包裝)。
8a. 種子衛星 → Walker Delta 星座
# 種子衛星(六根數:a=6800 km, e=0, i=90, w=12, RAAN=24, TA=180)
# 加 SAR 感測器: Define ... SAR <參數> TrackParentAltitude On
Define */Satellite/SatWalkerSeed/Sensor/sensar SAR 12 52 80 80 TrackParentAltitude On
# 展成 Walker:Type Delta / NumPlanes / NumSatsPerPlane / InterPlanePhaseIncrement
Walker */Satellite/SatWalkerSeed Type Delta NumPlanes 20 NumSatsPerPlane 5 InterPlanePhaseIncrement 0 ColorByPlane No ConstellationName SimConst
8b. CoverageDefinition + FigureOfMerit(覆蓋率/重訪)
New / */CoverageDefinition CovCalc
Cov */CoverageDefinition/CovCalc Grid AreaOfInterest LatBounds -70 70 # 依緯度設區域
Cov */CoverageDefinition/CovCalc Grid PointGranularity LatLon 20 # 網格間隔
Cov */CoverageDefinition/CovCalc Grid PointAltitude AltAboveTerrain 0.0
Cov */CoverageDefinition/CovCalc Access AutoRecompute Off # 關自動計算
Graphics */CoverageDefinition/CovCalc Static Points Off
# 最大重訪
New / */CoverageDefinition/CovCalc/FigureOfMerit fomrevisit
Cov */CoverageDefinition/CovCalc/FigureOfMerit/fomrevisit FOMDefine Definition RevisitTime Compute Maximum
# 平均重訪
New / */CoverageDefinition/CovCalc/FigureOfMerit fomrevisit_ave
Cov */CoverageDefinition/CovCalc/FigureOfMerit/fomrevisit_ave FOMDefine Definition RevisitTime Compute Average
# 簡單覆蓋
New / */CoverageDefinition/CovCalc/FigureOfMerit fom
Cov */CoverageDefinition/CovCalc/FigureOfMerit/fom FOMDefine Definition Simple Coverage
Graphics */CoverageDefinition/CovCalc/FigureOfMerit/fom FOMContours Animation StartStop 0 2 1 ColorRamp red green Show On
Graphics */CoverageDefinition/CovCalc/FigureOfMerit/fom Legend Animation Display On ShowOnMap On
# 指派資產(逐衛星感測器,或整個星座)
Cov */CoverageDefinition/CovCalc Asset */Satellite/<name>/Sensor/sensar Assign
Cov */CoverageDefinition/CovCalc Asset */Satellite/<name>/Sensor/sensar Activate
# 或:
Cov */CoverageDefinition/CovCalc Asset */Constellation/SimConst Assign
Cov */CoverageDefinition/CovCalc Asset */Constellation/SimConst Activate
Cov */CoverageDefinition/CovCalc Access Compute # 計算覆蓋
取回數值(需用 DataProvider,不是 ReportCreate):
# 覆蓋率
t = fom.DataProviders.GetDataPrvFixedFromPath('Static Satisfaction').Exec()
coverageRate = t.DataSets.GetDataSetByName('Percent Satisfied').GetValues()[0]
# 最大 / 平均重訪(依緯度)
t2 = fomrevisit.DataProviders.GetDataPrvFixedFromPath('Value by Latitude').Exec()
revisit_max = t2.DataSets.GetDataSetByName('Maximum').GetValues()
t3 = fomrevisit_ave.DataProviders.GetDataPrvFixedFromPath('Value by Latitude').Exec()
revisit_ave = t3.DataSets.GetDataSetByName('Average').GetValues()
8c. CoverageDefinition + Facility 約束(地面站可見性覆蓋)
New / */CoverageDefinition MyCoverageDefinition
Cov */CoverageDefinition/MyCoverageDefinition Grid AreaOfInterest Custom AreaTarget AreaTarget/MyAreaTarget
Cov */CoverageDefinition/MyCoverageDefinition Grid PointGranularity LatLon 5
Cov */CoverageDefinition/MyCoverageDefinition Asset Satellite/MySatellite Assign
Cov */CoverageDefinition/MyCoverageDefinition Grid GridConstraint Facility UsePointAltitudeType Facility/MyFacility UseActualObject
Cov */CoverageDefinition/MyCoverageDefinition Access Compute
Cov */CoverageDefinition/MyCoverageDefinition Access DataRetention All AutoRecompute Off
Cov */CoverageDefinition/MyCoverageDefinition Access SaveMode Save
9. STK Python API 建星座(新版 agi.stk12,非 Connect)
from agi.stk12.stkengine import STKEngine
stk = STKEngine.StartApplication(noGraphics=True) # 無介面 headless
# 或連現有桌面:
from agi.stk12.stkdesktop import STKDesktop
from agi.stk12.stkobjects import *
stk = STKDesktop.AttachToApplication()
root = stk.Root
scenario = root.CurrentScenario
# 種子衛星 + 六根數(物件模型)
sat = scenario.Children.New(AgESTKObjectType.eSatellite, 'SatWalkerSeed')
kep = sat.Propagator.InitialState.Representation.ConvertTo(1) # eOrbitStateClassical
kep.SizeShapeType = 4 # SMA + Ecc
kep.LocationType = 5 # TrueAnomaly
kep.Orientation.AscNodeType= 1 # RAAN
kep.SizeShape.SemiMajorAxis= 6800 # km
kep.SizeShape.Eccentricity = 0
kep.Orientation.Inclination= 90
kep.Orientation.ArgOfPerigee=12
kep.Orientation.AscNode.Value=24
kep.Location.Value = 180
sat.Propagator.InitialState.Representation.Assign(kep)
sat.Propagator.Propagate()
參考連結(原檔內)
- 指令字母索引(v12.8):help.agi.com/stk/12.8.0 → Connect Command Library → Alphabetical Listing
- Antenna 指令:help.agi.com/stk/12.8.0 → connectCmds → cmd_Antenna.htm
- 指令字母索引(v11.4):help.agi.com/stkdevkit/11.4.0 → Connect Command Library
- 覆蓋/重訪 Python 範例出處:blog.csdn.net/Beau_Wen/article/details/129961249