STK Components二次开发

STK组件基础篇:外部数据

2019-05-28  本文已影响0人  奔跑伯爵

为了能使计算更加准确,需要在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服务器获得。

6. 太阳物理数据(空间天气)

轨道外推库 中的一些大气密度模型使用有关太阳辐射和地磁通量指数的数据。该数据可以从CSSI的数据文件中加载,网址为 http://celestrak.com/spacedata/。要将此数据加载到STK组件中,请使用类CssiSolarGeophysicalData中的ReadFromFileReadFromStream静态方法构造对象,然后使用该对象构造所需的密度模型。

上一篇下一篇

猜你喜欢

热点阅读