Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Rinex files reader (observation, nav).

NotificationsYou must be signed in to change notification settings

FlamingDen/RinexReader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 

Repository files navigation

RINEX (Receiver Independent Exchange Format) — формат обмена данными для файлов исходных данных спутниковых навигационных приёмников. Он позволяет пользователям производить пост-обработку полученных данных для выполнения более точных вычислений — обычно с помощью других данных, неизвестных приемнику.

Данная программа читает файлы:

  • файл измерений (расширение .YYO, где YY-номер года, а O - observation, например .19О, или .obs)
  • файлы эфемерид в зависимости от используемых систем
Типы файлов эфемерид и их расширения
  • .YYN – GPS,
  • .YYG – ГЛОНАСС,
  • .YYC – BeiDou
  • .YYL – Galileo
  • .YYJ – QZSS
  • .YYI – IRNSS
  • .nav – смешанные эфемериды

Поддержка чтения только только RINEX v3.* .

А для файлов эфемерид : GPS, GLONASS, GALILEO, BEIDOU.

Installation

Откройте файл проект *.pro в Qt Creator. В будуще можно будет загрузить как библиотеку.

Possibilities and work

Для начала нам нужно созадть экземляр нашего ридера.При объявлении мы можем сразу указать пути к нишему RINEX файлу(obs - измерения, nav - вектор путей для эфемерид ).

RinexReader rr(obs,navPaths);

Так же можно можно читать разные типы раздельно, для этого нужно указать путь и тип файла.

RinexReader rr(pathObs, RinexType::OBSERVATION);RinexReader rr_only_nav(navGPS, RinexType::NAVIGATION); RinexReader rr_only_nav_(navPaths, RinexType::NAVIGATION);

Если при чтении списка только навигационных файлов тип можно не указывать, он сам поймет, что это nav файлы.

RinexReader rr_only_nav_(navPaths);

Getting data from a file

Obs файлы

Во время инициализации идет проверка типа файла(GPS , Glonass, Mixed и т.д.) и его версии. Далее если версия или тип не поддреживаются файл ридер не будет читать файл.

Если все хорошо, то мы сможем полуить данные из файла.

Получение информацию заголовка :

Rinex3Obs::ObsHeaderInfo headObs = rr.getObsHeaderInfo();

В даннщм случае изheadObs мы можем получить практические любые данные из хэдера. Про названия полей и за что они отвечают смотретьтут.

Получение списка всех эпох:

QList<Rinex3Obs::ObsEpochInfo> inf = rr.getEpochs();

Если файл большой это довольно долгая и затратная операция поэтому при первом ее вызове ее результат сохранится, а в дальнейшем при повторном вызове этой функции будет выдаться ссылка на этот лист. Он сохранится либо до переопределения пути в obs файлу , вызова деструктора или вы можете сами отчисить obs data через методclearObs().

Но будьте осторожны т.к.clearObs() обнулит все данные связаные с obs файлом, включая путь к нему.

Далее немного о сруктуре этого листа:

QList<Rinex3Obs::ObsEpochInfo>

  • epochRecord; - вектор даты и времени
  • recClockOffset;
  • gpsTime;
  • numSatsGPS; - кол-во зависей для системы GPS
  • numSatsGLO;
  • numSatsGAL;
  • numSatsBEI;
  • observations; - map отсортерованныей по типу системы --> номер спутника - данныеstd::map<std::string, std::map<int, std::vector<double>>>

Nav файлы

После инициализации мы можем прчитать файлы эфемерид один за други , по индексу или пути который уже добавлен(можно добавить еще) если файлов несколько, для одного наналогично.

ViewNav viewNav;rr.nextNav();viewNav= rr.getNav();rr.nextNav();viewNav= rr.getNav();rr.nextNav();viewNav = rr.getNav();rr.clearNavData();rr.nextNav();viewNav = rr.getNav();

or

rr.readNav(0); // по индексу как расположен в вектореrr.readNav(navGPS); // по пути который уже добавлен

ViewNav - структура для предаствления nav файлов и работы тоько м полями.

CSV

Так же вы можете созранить ваши прочитанные данные в csv формат( вы можете явно задать разделител после указания типа, по-умолчанию это "," , что является стандартом в csv файлах):

QString pathCSVobs = "C:/Utils/RinexSample/infEpochs.csv";QString pathCSVnav = "C:/Utils/RinexSample/infNavs.csv";rr.saveAsCSV(pathCSVobs, RinexType::OBSERVATION);rr.saveAsCSV(pathCSVnav, RinexType::NAVIGATION);

Impotant notes

Вам доступно 3 вида метода clean() :

  • clearObs() - очищает все данные связанные с obs файлом
  • clearRRNav() - очищает все данные связанные с nav файлами
  • clearNavData() - очищает только данные прочитанного файла(очищает информацию о прочитанных nav данных), но сохраняет пути к файлам для дальнейшем работы с ними.

Generate names

Был добавлен специальный класс для генерации url адреса и имен файлов для скачивани их с сервера(пок немного сарой еще):

Примеры есть в коде(продублирую)

RinexNameGenerator rng;std::string extension = "rnx.zip";QDateTime::currentSecsSinceEpoch();// newQDateTime::currentDateTimeUtc().toTime_t();// (obsolete) ver. 5.15 and belowstd::cout <<  rng.generateUrl(IdPDP::BARA, "12", "24", "1", "2024", extension) << std::endl;std::cout <<  rng.generateUrl(IdPDP::BARA, 12, 24, 1, 2024, extension) << std::endl;std::cout <<  rng.generateUrl(IdPDP::KLEC, "24/1/2023 12:00:00", extension) << std::endl;std::cout <<  rng.generateUrl(IdPDP::KLEC, QDateTime::currentSecsSinceEpoch(), extension) << std::endl;std::cout <<  rng.generateUrl(IdPDP::BARA,QDateTime::currentSecsSinceEpoch(), extension) << std::endl;out << "File names: "<< endl;for( const std::string& x : rng.generateRinexFilesNames(IdPDP::BARA,QDateTime::currentSecsSinceEpoch()))    std::cout << x << std::endl;

About

Rinex files reader (observation, nav).

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp