🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
TLEDatabaseQuery.hpp
浏览该文件的文档.
1
21
22#pragma once
23
24#include "AstGlobal.h"
25#include "AstUtil/StringView.hpp"
26#include "AstCore/TimePoint.hpp"
27#include <string>
28
29AST_NAMESPACE_BEGIN
30
36class TLE;
37
42class AST_CORE_API TLEDatabaseQuery
43{
44public:
47
50
51 // -- 名称过滤(子串匹配)--
52
55 void setName(StringView pattern);
56
58 const std::string& name() const { return name_; }
59
60 // -- NORAD 编号过滤(精确匹配)--
61
63 void setNoradId(int id);
65 void clearNoradId();
67 bool hasNoradId() const { return hasNoradId_; }
69 int noradId() const { return noradId_; }
70
71 // -- 历元时间范围过滤 --
72
74 void setMinEpoch(const TimePoint& v);
76 void setMaxEpoch(const TimePoint& v);
78 void clearMinEpoch();
80 void clearMaxEpoch();
82 bool useMinEpoch() const { return useMinEpoch_; }
84 bool useMaxEpoch() const { return useMaxEpoch_; }
86 const TimePoint& minEpoch() const { return minEpoch_; }
88 const TimePoint& maxEpoch() const { return maxEpoch_; }
89
90 // -- 密级过滤 --
91
93 void setClassification(char c);
95 void clearClassification();
97 bool hasClassification() const { return hasClassification_; }
99 char classification() const { return classification_; }
100
101 // -- 轨道参数范围过滤 --
102
104 void setMinInclination(double v);
106 void setMaxInclination(double v);
108 void clearMinInclination();
110 void clearMaxInclination();
112 bool useMinInclination() const { return useMinInclination_; }
114 bool useMaxInclination() const { return useMaxInclination_; }
116 double minInclination() const { return minInclination_; }
118 double maxInclination() const { return maxInclination_; }
119
121 void setMinEccentricity(double v);
123 void setMaxEccentricity(double v);
125 void clearMinEccentricity();
127 void clearMaxEccentricity();
129 bool useMinEccentricity() const { return useMinEccentricity_; }
131 bool useMaxEccentricity() const { return useMaxEccentricity_; }
133 double minEccentricity() const { return minEccentricity_; }
135 double maxEccentricity() const { return maxEccentricity_; }
136
138 void setMinMeanMotion(double v);
140 void setMaxMeanMotion(double v);
142 void clearMinMeanMotion();
144 void clearMaxMeanMotion();
146 bool useMinMeanMotion() const { return useMinMeanMotion_; }
148 bool useMaxMeanMotion() const { return useMaxMeanMotion_; }
150 double minMeanMotion() const { return minMeanMotion_; }
152 double maxMeanMotion() const { return maxMeanMotion_; }
153
155 void setMinBstar(double v);
157 void setMaxBstar(double v);
159 void clearMinBstar();
161 void clearMaxBstar();
163 bool useMinBstar() const { return useMinBstar_; }
165 bool useMaxBstar() const { return useMaxBstar_; }
167 double minBstar() const { return minBstar_; }
169 double maxBstar() const { return maxBstar_; }
170
171 // -- 匹配 --
172
176 bool matches(const TLE& tle) const;
177
179 bool isEmpty() const;
180
181private:
182 std::string name_{};
183 int noradId_{0};
184 bool hasNoradId_{false};
185 TimePoint minEpoch_{};
186 TimePoint maxEpoch_{};
187 bool useMinEpoch_{false};
188 bool useMaxEpoch_{false};
189 char classification_{'U'};
190 bool hasClassification_{false};
191 double minInclination_{0.0};
192 double maxInclination_{0.0};
193 bool useMinInclination_{false};
194 bool useMaxInclination_{false};
195 double minEccentricity_{0.0};
196 double maxEccentricity_{0.0};
197 bool useMinEccentricity_{false};
198 bool useMaxEccentricity_{false};
199 double minMeanMotion_{0.0};
200 double maxMeanMotion_{0.0};
201 bool useMinMeanMotion_{false};
202 bool useMaxMeanMotion_{false};
203 double minBstar_{0.0};
204 double maxBstar_{0.0};
205 bool useMinBstar_{false};
206 bool useMaxBstar_{false};
207};
208
211AST_NAMESPACE_END
TLE 数据库查询条件
定义 TLEDatabaseQuery.hpp:43
double maxBstar() const
获取最大 B*
定义 TLEDatabaseQuery.hpp:169
TLEDatabaseQuery()
默认构造(匹配所有条目)
bool useMaxEpoch() const
是否启用最晚历元过滤
定义 TLEDatabaseQuery.hpp:84
double maxEccentricity() const
获取最大偏心率
定义 TLEDatabaseQuery.hpp:135
bool useMinBstar() const
是否启用最小 B* 过滤
定义 TLEDatabaseQuery.hpp:163
double minEccentricity() const
获取最小偏心率
定义 TLEDatabaseQuery.hpp:133
double maxMeanMotion() const
获取最大平均运动 [rad/s]
定义 TLEDatabaseQuery.hpp:152
double minBstar() const
获取最小 B*
定义 TLEDatabaseQuery.hpp:167
const TimePoint & maxEpoch() const
获取最晚历元
定义 TLEDatabaseQuery.hpp:88
bool useMinEpoch() const
是否启用最早历元过滤
定义 TLEDatabaseQuery.hpp:82
bool useMinEccentricity() const
是否启用最小偏心率过滤
定义 TLEDatabaseQuery.hpp:129
const std::string & name() const
获取卫星名称过滤模式
定义 TLEDatabaseQuery.hpp:58
double minInclination() const
获取最小倾角 [弧度]
定义 TLEDatabaseQuery.hpp:116
double maxInclination() const
获取最大倾角 [弧度]
定义 TLEDatabaseQuery.hpp:118
int noradId() const
获取 NORAD 编号过滤值
定义 TLEDatabaseQuery.hpp:69
bool useMaxMeanMotion() const
是否启用最大平均运动过滤
定义 TLEDatabaseQuery.hpp:148
bool useMaxInclination() const
是否启用最大倾角过滤
定义 TLEDatabaseQuery.hpp:114
bool useMinMeanMotion() const
是否启用最小平均运动过滤
定义 TLEDatabaseQuery.hpp:146
bool useMaxBstar() const
是否启用最大 B* 过滤
定义 TLEDatabaseQuery.hpp:165
char classification() const
获取密级过滤值
定义 TLEDatabaseQuery.hpp:99
bool hasClassification() const
是否设置了密级过滤
定义 TLEDatabaseQuery.hpp:97
double minMeanMotion() const
获取最小平均运动 [rad/s]
定义 TLEDatabaseQuery.hpp:150
bool hasNoradId() const
是否设置了 NORAD 编号过滤
定义 TLEDatabaseQuery.hpp:67
bool useMaxEccentricity() const
是否启用最大偏心率过滤
定义 TLEDatabaseQuery.hpp:131
const TimePoint & minEpoch() const
获取最早历元
定义 TLEDatabaseQuery.hpp:86
bool useMinInclination() const
是否启用最小倾角过滤
定义 TLEDatabaseQuery.hpp:112
两行根数(TLE)
定义 TLE.hpp:52
绝对时间点
定义 TimePoint.hpp:108