Skip to content
Snippets Groups Projects
Commit 1d6d7cdd authored by Pep Martí Saumell's avatar Pep Martí Saumell
Browse files

[improvement] load rinex removed from observations

parent 6c1829ee
No related branches found
No related tags found
3 merge requests!20new tag,!19new tag,!12Resolve "load from rinex outside classes"
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
namespace GnssUtils namespace GnssUtils
{ {
class Observations class Observations
{ {
public: public:
...@@ -15,34 +14,26 @@ public: ...@@ -15,34 +14,26 @@ public:
~Observations(); ~Observations();
void clearObservations(); void clearObservations();
void addObservation(const obsd_t& obs); void addObservation(const obsd_t& obs);
void
loadFromRinex(const std::string& rnx_file, gtime_t t_start, gtime_t t_end, double dt = 0.0, const char* opt = "");
void removeObservationByIdx(const int& _idx); void removeObservationByIdx(const int& _idx);
void removeObservationBySat(const int& _sat); void removeObservationBySat(const int& _sat);
std::vector<obsd_t>& getObservations(); std::vector<obsd_t>& getObservations();
const std::vector<obsd_t>& getObservations() const; const std::vector<obsd_t>& getObservations() const;
obsd_t& getObservationBySat(const unsigned char& sat_number); obsd_t& getObservationBySat(const unsigned char& sat_number);
const obsd_t& getObservationBySat(const unsigned char& sat_number) const; const obsd_t& getObservationBySat(const unsigned char& sat_number) const;
obsd_t& getObservationByIdx(const int& idx); obsd_t& getObservationByIdx(const int& idx);
const obsd_t& getObservationByIdx(const int& idx) const; const obsd_t& getObservationByIdx(const int& idx) const;
obsd_t* data(); obsd_t* data();
const obsd_t* data() const; const obsd_t* data() const;
size_t size() const; size_t size() const;
bool hasSatellite(const unsigned char& i) const; bool hasSatellite(const unsigned char& i) const;
static void print(obsd_t& _obs); static void print(obsd_t& _obs);
void printBySat(const int& _sat); void printBySat(const int& _sat);
void printByIdx(const int& _idx); void printByIdx(const int& _idx);
void print(); void print();
// Filter observations // Filter observations
std::set<int> filterByEphemeris(const SatellitesPositions& sats_pos); std::set<int> filterByEphemeris(const SatellitesPositions& sats_pos);
...@@ -50,38 +41,35 @@ public: ...@@ -50,38 +41,35 @@ public:
std::set<int> filterByCode(); std::set<int> filterByCode();
std::set<int> filterByCarrierPhase(); std::set<int> filterByCarrierPhase();
std::set<int> filterByConstellations(const int& navsys); std::set<int> filterByConstellations(const int& navsys);
std::set<int> filterByElevationSnr(const Eigen::Vector3d& x_r, std::set<int> filterByElevationSnr(const Eigen::Vector3d& x_r,
const SatellitesPositions& sats_pos, const SatellitesPositions& sats_pos,
const snrmask_t& snrmask, const snrmask_t& snrmask,
const double& elmin); const double& elmin);
std::set<int> filter(const SatellitesPositions& sats_pos, std::set<int> filter(const SatellitesPositions& sats_pos,
const std::set<int>& discarded_sats, const std::set<int>& discarded_sats,
const Eigen::Vector3d& x_r, const Eigen::Vector3d& x_r,
const bool& check_code, const bool& check_code,
const bool& check_carrier_phase, const bool& check_carrier_phase,
const prcopt_t& opt); const prcopt_t& opt);
std::set<int> filter(const SatellitesPositions& sats_pos, std::set<int> filter(const SatellitesPositions& sats_pos,
const std::set<int>& discarded_sats, const std::set<int>& discarded_sats,
const Eigen::Vector3d& x_r, const Eigen::Vector3d& x_r,
const bool& check_code, const bool& check_code,
const bool& check_carrier_phase, const bool& check_carrier_phase,
const int& navsys, const int& navsys,
const snrmask_t& snrmask, const snrmask_t& snrmask,
const double& elmin); const double& elmin);
static std::set<int> findCommonObservations(const Observations& obs_1, static std::set<int> findCommonObservations(const Observations& obs_1, const Observations& obs_2);
const Observations& obs_2);
bool operator==(const Observations& other_obs) const; bool operator==(const Observations& other_obs) const;
bool operator !=(const Observations &other_obs) const; bool operator!=(const Observations& other_obs) const;
private: private:
// Private objects // Private objects
std::map<unsigned char, int> sat_2_idx_; //< key: corresponding sat number, value: idx in obs_ vector std::map<unsigned char, int> sat_2_idx_; //< key: corresponding sat number, value: idx in obs_ vector
std::vector<unsigned char> idx_2_sat_; //< key: idx in obs_ vector, value: corresponding sat number std::vector<unsigned char> idx_2_sat_; //< key: idx in obs_ vector, value: corresponding sat number
std::vector<obsd_t> obs_; //< vector of RTKLIB observations for a given epoch std::vector<obsd_t> obs_; //< vector of RTKLIB observations for a given epoch
// Private methods
}; };
} // namespace GnssUtils } // namespace GnssUtils
...@@ -92,7 +80,6 @@ private: ...@@ -92,7 +80,6 @@ private:
namespace GnssUtils namespace GnssUtils
{ {
inline const std::vector<obsd_t>& Observations::getObservations() const inline const std::vector<obsd_t>& Observations::getObservations() const
{ {
return this->obs_; return this->obs_;
...@@ -147,9 +134,9 @@ inline bool Observations::hasSatellite(const unsigned char& i) const ...@@ -147,9 +134,9 @@ inline bool Observations::hasSatellite(const unsigned char& i) const
return sat_2_idx_.count(i) != 0; return sat_2_idx_.count(i) != 0;
} }
inline bool Observations::operator !=(const Observations &other_obs) const inline bool Observations::operator!=(const Observations& other_obs) const
{ {
return !(*this == other_obs); return !(*this == other_obs);
} }
} // namespace GnssUtils } // namespace GnssUtils
......
...@@ -74,41 +74,6 @@ void Observations::addObservation(const obsd_t& obs) ...@@ -74,41 +74,6 @@ void Observations::addObservation(const obsd_t& obs)
assert(sat_2_idx_.size() == obs_.size()); assert(sat_2_idx_.size() == obs_.size());
} }
void Observations::loadFromRinex(const std::string& rnx_file,
gtime_t t_start,
gtime_t t_end,
double dt,
const char* opt)
{
obs_t obs;
obs.data = (obsd_t*)malloc(sizeof(obsd_t) * MAXSAT);
obs.n = 0;
obs.nmax = MAXSAT;
// const char* opt = "";
auto stat = readrnxt(rnx_file.c_str(), 1, t_start, t_end, dt, opt, &obs, NULL, NULL);
if (stat == 1)
sortobs(&obs);
else
{
std::cout << "Observation: couldn't load provided observation file, reason: " << (stat == 0 ? "no data" : "error") << stat << std::endl;
return;
}
for (int i = 0; i < obs.n; i++)
{
// std::cout << "time: " << time_str(obs.data[i].time, 3) << " | sat: " << int(obs.data[i].sat) << " | rcv: " <<
// int(obs.data[i].rcv) <<
// " | SNR: " << int(obs.data[i].SNR[0]) << " | LLI: " << int(obs.data[i].LLI[0]) << " | code: " <<
// int(obs.data[i].code[0]) <<
// " | L: " << obs.data[i].L[0] << " | P: " << obs.data[i].P[0] << " | D: " << obs.data[i].D[0] <<
// std::endl;
addObservation(obs.data[i]);
}
free(obs.data);
}
void Observations::removeObservationByIdx(const int& _idx) void Observations::removeObservationByIdx(const int& _idx)
{ {
// std::cout << "removing observation of idx " << _idx << std::endl; // std::cout << "removing observation of idx " << _idx << std::endl;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment