🛰️航天仿真算法库 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
30AST_NAMESPACE_BEGIN
31
37class SatelliteDatabaseEntry;
38class SatelliteDatabaseQuery;
39class TimePoint;
40
46class AST_CORE_API SatelliteDatabase : public Database
47{
48public:
50 using EntryList = std::vector<SatelliteDatabaseEntry>;
51
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
71private:
72 void refreshMissions();
73
75 errc_t loadSatcatFile(StringView filePath);
76
77private:
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/*
86celestrak SATCAT Legacy Text Data Format
87参考:https://celestrak.org/satcat/satcat-format.php
88
89Legacy Text Data Format:
90
91------------------------------------------------------------------------------------------------------------------------------------
92Column
93000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111
94000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999000000000011111111112222222222333
95123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012
96------------------------------------------------------------------------------------------------------------------------------------
97yyyy-nnnaaa nnnnn M*O aaaaaaaaaaaaaaaaaaaaaaaa aaaaa yyyy-mm-dd aaaaa yyyy-mm-dd nnnnn.n nnn.n nnnnnn nnnnnn nnn.nnnn aaa
98------------------------------------------------------------------------------------------------------------------------------------
99Columns Description
100001-011 International Designator
101 - Launch Year (001-004)
102 - Launch of the Year (006-008)
103 - Piece of the Launch (009-011)
104014-018 NORAD Catalog Number
105020-020 Multiple Name Flag ("M" if multiple names exist; alternate names found in satcat-annex.csv)
106021-021 Payload Flag ("*" if payload; blank otherwise)
107022-022 Operational Status Code
108024-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
117050-054 Source or Ownership
118057-066 Launch Date [year-month-day]
119069-073 Launch Site
120076-085 Decay Date, if applicable [year-month-day]
121088-094 Orbital period [minutes]; truncated at 99999.9
122097-101 Inclination [degrees]
123104-109 Apogee Altitude [kilometers]; truncated at 999999
124112-117 Perigee Altitude [kilometers]; truncated at 999999
125120-127 Radar Cross Section [meters2]; N/A if no data available
126130-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
158AST_NAMESPACE_END
数据库抽象基类
数据库抽象基类
定义 Database.hpp:36
卫星数据库条目
定义 SatelliteDatabaseEntry.hpp:42
卫星数据库查询条件
定义 SatelliteDatabaseQuery.hpp:40
卫星数据库
定义 SatelliteDatabase.hpp:47
绝对时间点
定义 TimePoint.hpp:108