STK组件基础篇:外部数据
为了能使计算更加准确,需要在STK组件中引入一些外部数据,例如跳秒数据、地球自转参数(EOP)等。AGI的官方FTP服务器提供常用的数据下载,并且每天都更新,但是国内无法直接访问,需要使用代理。ftp地址:ftp://ftp.agi.com
1. 跳秒
国际地球自转服务(IERS)定期发布跳秒信息。在STK组件中,LeapSecondsFacet
用来管理计算中使用的跳秒信息。STK组件的每个版本都会包含发布时已知的过去和未来的全部跳秒。但是由于跳秒的不可预测性,STK组件无法内置未知的跳秒信息,它提供了一种从文本文件加载跳秒信息的方式。
下载地址:
ftp://ftp.agi.com/pub/STKData/Astro/LeapSecond.dat
加载方法:
LeapSecondsFacet leapSeconds = LeapSecondFile.ReadLeapSeconds(filename);
leapSeconds.UseInCurrentContext();
另外,如果程序能联网,也可以使用代码在线下载使用:
LeapSecondsFacet leapSeconds = LeapSecondFile.DownloadLeapSeconds();
leapSeconds.UseInCurrentContext();
2. 地球自转参数(EOP)
EOP包含随时间变化的地球极移、UT1和UTC之间的差。STK组件中没有内置此数据,默认情况下不使用EOP数据。
EOP数据文件有两种类型,一种是包含最近5年的数据,另一种是包含从1962年起的全部数据。可以从AGI的官方FTP服务器下载,也可以从celestrak网站下载:
ftp://ftp.agi.com/pub/DynamicEarthData/EOP-v1.1.txt
ftp://ftp.agi.com/pub/DynamicEarthData/EOP-All-v1.1.txt
http://www.celestrak.com/SpaceData/EOP-Last5Years.txt
http://www.celestrak.com/SpaceData/EOP-All.txt
加载方法:
EarthOrientationParameters eop = EarthOrientationParametersFile.ReadData(Path.Combine(dataPath, "EOP-v1.1.txt"));
CentralBodiesFacet.GetFromContext().Earth.OrientationParameters = eop;
另外,如果程序能联网,也可以使用代码在线下载使用:
CentralBodiesFacet.GetFromContext().Earth.OrientationParameters = EarthOrientationParametersFile.DownloadData();
3. 平均海平面(MSL)
STK组件中的某些功能使用的高度是相对于某个参考表面,而这个参考表面通常是指平均海平面。例如,某些地形提供者是相对于MSL定义的,路径设计库中的路径可以相对于MSL定义,USStandardAtmosphere1976
模型是相对于MSL定义的。STK组件不附带平均海平面数据,但可以下载并加载到程序中。
EGM96
平均海平面数据文件WW15MGH.DAC
,可以从NGA下载:http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/binary/binarygeoid.html
加载方法:
EarthCentralBody earth = CentralBodiesFacet.GetFromContext().Earth;
EarthGravityModel96MeanSeaLevel msl = new EarthGravityModel96MeanSeaLevel(Path.Combine(dataPath, "WW15MGH.DAC"));
earth.MeanSeaLevel = msl;
4. JPL行星星历(JPLDE)
加载JPL行星星历文件,可以提供更准确的CentralBody
位置模型。这些数据文件可以从ftp://ftp.agi.com/pub/STKData/Astro/PlanetEphem/lendian/下载。每种类型的文件都有一个可以读取数据的相应类。编写本文时的最新文件是DE 430,可以使用JplDE430
类加载 。
JplDE430 jplde = new JplDE430(Path.Combine(dataPath, "plneph.430"));
// 在CentralBodiesFacet中使用JplDE数据
CentralBodiesFacet centralBodies = CentralBodiesFacet.GetFromContext();
jplde.UseForCentralBodyPositions(centralBodies);
// 或者直接指定月固系为JplDE的值
MoonCentralBody moon = centralBodies.Moon;
moon.FixedFrame = jplde.GetMoonFixedFrame();
5. GPS数据
导航精度库中使用了几个数据文件来计算有关GPS卫星的信息。这些数据文件可从AGI的FTP服务器获得。
-
GpsDataFile
:ftp://ftp.agi.com/pub/Catalog/Almanacs/SEM/GPSData.txt -
PerformanceAssessmentFile
:ftp://ftp.agi.com/pub/Catalog/PAF/ -
SatelliteOutageFile
:ftp://ftp.agi.com/pub/Catalog/SOF/ -
SemAlmanac
:ftp://ftp.agi.com/pub/Catalog/Almanacs/SEM/
6. 太阳物理数据(空间天气)
轨道外推库 中的一些大气密度模型使用有关太阳辐射和地磁通量指数的数据。该数据可以从CSSI的数据文件中加载,网址为 http://celestrak.com/spacedata/。要将此数据加载到STK组件中,请使用类CssiSolarGeophysicalData
中的ReadFromFile
或ReadFromStream
静态方法构造对象,然后使用该对象构造所需的密度模型。