🛰️航天仿真算法库 SpaceAST
0.0.1
载入中...
搜索中...
未找到
SatelliteDatabase.hpp
浏览该文件的文档.
1
21
22
23
#pragma once
24
25
#include "
Database.hpp
"
26
#include "AstUtil/StringView.hpp"
27
#include <string>
28
#include <vector>
29
30
AST_NAMESPACE_BEGIN
31
37
class
SatelliteDatabaseEntry;
38
class
SatelliteDatabaseQuery;
39
class
TimePoint;
40
46
class
AST_CORE_API
SatelliteDatabase
:
public
Database
47
{
48
public
:
49
using
Entry
=
SatelliteDatabaseEntry
;
50
using
EntryList = std::vector<SatelliteDatabaseEntry>;
51
52
SatelliteDatabase
();
53
explicit
SatelliteDatabase
(
StringView
filePath);
54
~SatelliteDatabase
()
override
;
55
56
// -- 加载 --
57
errc_t load(
StringView
filePath);
58
errc_t reload();
59
bool
isLoaded()
const
{
return
loaded_; }
60
61
const
TimePoint
& lastUpdateTime()
const
{
return
lastUpdateTime_; }
62
63
// -- 底层查询 --
64
const
std::vector<std::string>& getMissions()
const
;
65
EntryList getEntries(
const
SatelliteDatabaseQuery
& query)
const
;
66
const
EntryList& getEntries()
const
;
67
size_t
size()
const
{
return
entries_.size(); }
68
69
const
std::string& filePath()
const
{
return
filePath_; }
70
71
private
:
72
void
refreshMissions();
73
75
errc_t loadSatcatFile(
StringView
filePath);
76
77
private
:
78
std::string filePath_{};
79
TimePoint
lastUpdateTime_{};
80
std::vector<SatelliteDatabaseEntry> entries_{};
81
std::vector<std::string> missions_{};
82
bool
loaded_{
false
};
83
};
84
85
/*
86
celestrak SATCAT Legacy Text Data Format
87
参考:https://celestrak.org/satcat/satcat-format.php
88
89
Legacy Text Data Format:
90
91
------------------------------------------------------------------------------------------------------------------------------------
92
Column
93
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111
94
000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999000000000011111111112222222222333
95
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012
96
------------------------------------------------------------------------------------------------------------------------------------
97
yyyy-nnnaaa nnnnn M*O aaaaaaaaaaaaaaaaaaaaaaaa aaaaa yyyy-mm-dd aaaaa yyyy-mm-dd nnnnn.n nnn.n nnnnnn nnnnnn nnn.nnnn aaa
98
------------------------------------------------------------------------------------------------------------------------------------
99
Columns Description
100
001-011 International Designator
101
- Launch Year (001-004)
102
- Launch of the Year (006-008)
103
- Piece of the Launch (009-011)
104
014-018 NORAD Catalog Number
105
020-020 Multiple Name Flag ("M" if multiple names exist; alternate names found in satcat-annex.csv)
106
021-021 Payload Flag ("*" if payload; blank otherwise)
107
022-022 Operational Status Code
108
024-047 Satellite Name(s)
109
- R/B(1) = Rocket body, first stage
110
- R/B(2) = Rocket body, second stage
111
- DEB = Debris
112
- PLAT = Platform
113
- Items in parentheses are alternate names
114
- Items in brackets indicate type of object
115
(e.g., BREEZE-M DEB [TANK] = tank)
116
- An ampersand (&) indicates two or more objects are attached
117
050-054 Source or Ownership
118
057-066 Launch Date [year-month-day]
119
069-073 Launch Site
120
076-085 Decay Date, if applicable [year-month-day]
121
088-094 Orbital period [minutes]; truncated at 99999.9
122
097-101 Inclination [degrees]
123
104-109 Apogee Altitude [kilometers]; truncated at 999999
124
112-117 Perigee Altitude [kilometers]; truncated at 999999
125
120-127 Radar Cross Section [meters2]; N/A if no data available
126
130-132 Orbital Status Code
127
- NCE = No Current Elements
128
- NIE = No Initial Elements
129
- NEA = No Elements Available
130
- DOC = Permanently Docked
131
- ISS = Docked to International Space Station
132
- XXN = Central Body (XX) and Orbit Type (N)
133
- AS = Asteroid
134
- EA = Earth (default if blank)
135
- EL = Earth Lagrange
136
- EM = Earth-Moon Barycenter
137
- JU = Jupiter
138
- MA = Mars
139
- ME = Mercury
140
- MO = Moon (Earth)
141
- NE = Neptune
142
- PL = Pluto
143
- SA = Saturn
144
- SS = Solar System Escape
145
- SU = Sun
146
- UR = Uranus
147
- VE = Venus
148
- 0 = Orbit
149
- 1 = Landing
150
- 2 = Impact
151
- 3 = Roundtrip
152
(e.g., SU0 = Heliocentric Orbit, MO2 = Lunar Impact)
153
154
*/
155
158
AST_NAMESPACE_END
Database.hpp
数据库抽象基类
ast::Database
数据库抽象基类
定义
Database.hpp:36
ast::SatelliteDatabaseEntry
卫星数据库条目
定义
SatelliteDatabaseEntry.hpp:42
ast::SatelliteDatabaseQuery
卫星数据库查询条件
定义
SatelliteDatabaseQuery.hpp:40
ast::SatelliteDatabase
卫星数据库
定义
SatelliteDatabase.hpp:47
ast::StringViewBasic< char >
ast::TimePoint
绝对时间点
定义
TimePoint.hpp:108
src
AstCore
Database
SatelliteDatabase.hpp
制作者
1.12.0