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