From 693329647d508be1f5c3a5bb7a1ba34934eab428 Mon Sep 17 00:00:00 2001 From: betaBison Date: Mon, 28 Aug 2023 16:46:39 -0700 Subject: [PATCH 1/7] start of updated downloader --- gnss_lib_py/utils/ephemeris_downloader.py | 105 +++++++++++++++++++--- 1 file changed, 95 insertions(+), 10 deletions(-) diff --git a/gnss_lib_py/utils/ephemeris_downloader.py b/gnss_lib_py/utils/ephemeris_downloader.py index ea3c7282..bd37ffcc 100644 --- a/gnss_lib_py/utils/ephemeris_downloader.py +++ b/gnss_lib_py/utils/ephemeris_downloader.py @@ -37,24 +37,52 @@ rapid solution from GFZ is downloaded (GFZ0MGXRAP). The GFZ rapid solution became available starting GPS week 2038 or Jan 27, 2019. The GFZ rapid solution includes: GPS+GLO+GAL+BDS+QZS +More about the GFZ solution can be found on their MGEX website [8]_. If the SP3 or CLK date requested is more than two weeks previous to the current date, then the CODE final solution is downloaded (COD0MGXFIN). -The CODE final solutions became available starting GPS week 1962 or -Aug 13, 2017. The CODE final solution includes: GPS+GLO+GAL+BDS+QZS +The CODE final SP3 solutions became available starting GPS week 1962 or +Aug 13, 2017. + +The CODE final CLK solution becomes available GPS week 2113 +or July 5th, 2020. + +The CODE final solution includes: GPS+GLO+GAL+BDS+QZS +More about the CODE solution can be found in their papers [6]_[7]_. + +WUM0MGXFIN for CLK from week 2035 to week 2112 + +for week 2034?? + +wum for CLK from week 1962 to week 2033 + +com available week 1690 and after for SP3 +week 1710 and after for clk and both end on week 1961. +More about the CODE com solution can be found in their papers [9]_[10]_. + +gbm available week 2017 day 772 and after Details on the MGEX precise orbit and clock products can be found on the IGS website [4]_. +IGS files can be viewed online using their file browser [5]_. + References ---------- .. [1] https://cddis.nasa.gov/Data_and_Derived_Products/GNSS/daily_30second_data.html .. [2] https://igs.org/mgex/data-products/#bce .. [3] https://network.igs.org/ .. [4] https://igs.org/mgex/data-products/#orbit_clock - +.. [5] https://igs.bkg.bund.de/browseFiles +.. [6] http://dx.doi.org/10.1016/j.asr.2020.04.038 +.. [7] http://dx.doi.org/10.7892/boris.75882.3 +.. [8] https://www.gfz-potsdam.de/en/section/space-geodetic-techniques/projects/mgex +.. [9] http://doi.org/10.1007/1345_2015_161 +.. [10] http://doi.org/10.1007/s00190-016-0968-8 """ +# CLK: 2020, 7, 2 + __authors__ = "Shubh Gupta, Ashwin Kanhere, Derek Knowles" __date__ = "13 July 2021" @@ -87,7 +115,7 @@ def load_ephemeris(file_type, gps_millis, GPS milliseconds for which downloaded ephemeris should be obtained. constellations : list, set, or array-like - Constellations for which to download ephemeris. + Constellations for which to download ephemeris, i.e. ["gps"]. file_paths : list, string or path-like Paths to existing ephemeris files if they exist. download_directory : string or path-like @@ -138,7 +166,7 @@ def _verify_ephemeris(file_type, gps_millis, constellations=None, GPS milliseconds for which downloaded ephemeris should be obtained. constellations : list, set, or array-like - Constellations for which to download ephemeris. + Constellations for which to download ephemeris, i.e. ["gps"]. file_paths : string or path-like Paths to existing ephemeris files if they exist. verbose : bool @@ -165,6 +193,10 @@ def _verify_ephemeris(file_type, gps_millis, constellations=None, possible_types = [] if file_type == "rinex_nav": + if date < datetime(2013,1,1): + raise RuntimeError("gnss_lib_py cannot automatically " \ + + "download rinex nav files for "\ + + "times before Jan 1, 2013") if datetime.utcnow().date() == date: possible_types = ["rinex_nav_today"] else: @@ -185,20 +217,32 @@ def _verify_ephemeris(file_type, gps_millis, constellations=None, possible_types += ["rinex_nav_multi_s"] if file_type == "sp3": + if date < datetime(2017,8,13): + raise RuntimeError("gnss_lib_py cannot automatically " \ + + "download sp3 files for "\ + + "times before Aug 13, 2017") if datetime.utcnow().date() - timedelta(days=3) < date: possible_types += ["sp3_rapid_CODE"] elif datetime.utcnow().date() - timedelta(days=14) < date: possible_types += ["sp3_rapid_GFZ"] - else: + elif date >= datetime(2017, 8, 13).date(): possible_types += ["sp3_final_CODE"] + else: + possible_types += ["sp3_final_GFZ"] if file_type == "clk": + if date < datetime(2017,8,13): + raise RuntimeError("gnss_lib_py cannot automatically " \ + + "download clk files for "\ + + "times before Aug 13, 2017") if datetime.utcnow().date() - timedelta(days=3) < date: possible_types += ["clk_rapid_CODE"] elif datetime.utcnow().date() - timedelta(days=14) < date: possible_types += ["clk_rapid_GFZ"] - else: + elif date >= datetime(2017, 8, 13).date(): possible_types += ["clk_final_CODE"] + else: + possible_types += ["clk_final_GFZ"] already_exists, filepath = _valid_ephemeris_in_paths(date, possible_types, file_paths) @@ -401,7 +445,6 @@ def _valid_ephemeris_in_paths(date, possible_types, file_paths=None): if os.path.split(path)[1][-22:] == recommended_file[1][-25:-3]: return True, path - # rinex that only contains GPS elif possible_type == "rinex_nav_gps": recommended_file = ("gdc.cddis.eosdis.nasa.gov", @@ -508,7 +551,7 @@ def _valid_ephemeris_in_paths(date, possible_types, file_paths=None): if os.path.split(path)[1][3:] == str(gps_week).zfill(4) + str((timetuple.tm_wday+1)%7) + ".sp3": return True, path - # sp3 if longer than two weeks ago + # sp3 if longer than two weeks ago and more recent than Aug 13, 2017 elif possible_type == "sp3_final_CODE": gps_week, _ = tc.datetime_to_tow(datetime.combine(date, time(tzinfo=timezone.utc))) @@ -532,6 +575,27 @@ def _valid_ephemeris_in_paths(date, possible_types, file_paths=None): if os.path.split(path)[1][3:] == str(gps_week).zfill(4) + str((timetuple.tm_wday+1)%7) + ".sp3": return True, path + # sp3 before Aug 13, 2017 + elif possible_type == "sp3_final_GFZ": + gps_week, _ = tc.datetime_to_tow(datetime.combine(date, + time(tzinfo=timezone.utc))) + recommended_file = ("gdc.cddis.eosdis.nasa.gov", + "/gnss/products/" \ + + str(gps_week).zfill(4) + "/" \ + + "gbm" + str(gps_week).zfill(4) \ + + str((timetuple.tm_wday+1)%7) \ + + ".sp3.Z") + recommended_files.append(recommended_file) + if file_paths is None: + return False, recommended_file + # check compatible file types + for path in file_paths: + if os.path.split(path)[1] + ".Z" == os.path.split(recommended_file[1])[1]: + return True, path + for path in file_paths: + if os.path.split(path)[1][3:] + ".Z" == os.path.split(recommended_file[1])[1]: + return True, path + # clk from last three days elif possible_type == "clk_rapid_CODE": gps_week, _ = tc.datetime_to_tow(datetime.combine(date, @@ -580,7 +644,7 @@ def _valid_ephemeris_in_paths(date, possible_types, file_paths=None): if os.path.split(path)[1][3:] == str(gps_week).zfill(4) + str((timetuple.tm_wday+1)%7) + ".clk": return True, path - # clk if longer than two weeks ago + # clk if longer than two weeks ago and more recent than Aug 13, 2017 elif possible_type == "clk_final_CODE": gps_week, _ = tc.datetime_to_tow(datetime.combine(date, time(tzinfo=timezone.utc))) @@ -604,6 +668,27 @@ def _valid_ephemeris_in_paths(date, possible_types, file_paths=None): if os.path.split(path)[1][3:] == str(gps_week).zfill(4) + str((timetuple.tm_wday+1)%7) + ".clk": return True, path + # clk before Aug 13, 2017 + elif possible_type == "clk_final_GFZ": + gps_week, _ = tc.datetime_to_tow(datetime.combine(date, + time(tzinfo=timezone.utc))) + recommended_file = ("gdc.cddis.eosdis.nasa.gov", + "/gnss/products/" \ + + str(gps_week).zfill(4) + "/" \ + + "gbm" + str(gps_week).zfill(4) \ + + str((timetuple.tm_wday+1)%7) \ + + ".clk.Z") + recommended_files.append(recommended_file) + if file_paths is None: + return False, recommended_file + # check compatible file types + for path in file_paths: + if os.path.split(path)[1] + ".Z" == os.path.split(recommended_file[1])[1]: + return True, path + for path in file_paths: + if os.path.split(path)[1][3:] + ".Z" == os.path.split(recommended_file[1])[1]: + return True, path + else: raise RuntimeError(possible_type,"invalid possible_type "\ +"for valid ephemeris") From e08b2c55812d5eef9469932f1751df287f9e2690 Mon Sep 17 00:00:00 2001 From: betaBison Date: Tue, 29 Aug 2023 12:50:02 -0700 Subject: [PATCH 2/7] adds clk sources --- gnss_lib_py/utils/ephemeris_downloader.py | 201 ++++++++++++++++------ 1 file changed, 152 insertions(+), 49 deletions(-) diff --git a/gnss_lib_py/utils/ephemeris_downloader.py b/gnss_lib_py/utils/ephemeris_downloader.py index bd37ffcc..0f2bdc6f 100644 --- a/gnss_lib_py/utils/ephemeris_downloader.py +++ b/gnss_lib_py/utils/ephemeris_downloader.py @@ -1,5 +1,8 @@ """Functions to download Rinex, SP3, and CLK ephemeris files. +Rinex Navigation +---------------- + Rinex navigation files are pulled from one of five sources. More about rinex files can be found in the CDDIS documentation [1]_. @@ -23,49 +26,72 @@ GPS+GLO+GAL+BDS+QZSS+IRNSS+SBAS. For more information on multi-gnss combined rinex navigation files, see MGEX documentation [2]_. -IGS network station information can be found at [3]_. - +SP3 and CLK within Two Weeks +---------------------------- SP3 and CLK files are obtained from CDDIS and produced by either the -Center for Orbit Determination in Europe (CODE) or GeoForschungsZentrum -Potsdam (GFZ). Products are available through the MGEX data program [4]_. +Center for Orbit Determination in Europe (CODE), GeoForschungsZentrum +Potsdam (GFZ) or Wuhan University. Products are available through the +MGEX data program [4]_. Details on the MGEX precise orbit and clock +products can be found on the IGS website [4]_. If the SP3 or CLK date requested is within the three days, then the rapid solution from CODE is downloaded (COD0OPSRAP). The CODE rapid -solution includes: GPS+GLO+GAL +solution includes: GPS+GLO+GAL. If the SP3 or CLK date requested is within the last two weeks, then the rapid solution from GFZ is downloaded (GFZ0MGXRAP). The GFZ rapid solution became available starting GPS week 2038 or Jan 27, 2019. The -GFZ rapid solution includes: GPS+GLO+GAL+BDS+QZS -More about the GFZ solution can be found on their MGEX website [8]_. - -If the SP3 or CLK date requested is more than two weeks previous to the -current date, then the CODE final solution is downloaded (COD0MGXFIN). -The CODE final SP3 solutions became available starting GPS week 1962 or -Aug 13, 2017. - -The CODE final CLK solution becomes available GPS week 2113 -or July 5th, 2020. - -The CODE final solution includes: GPS+GLO+GAL+BDS+QZS -More about the CODE solution can be found in their papers [6]_[7]_. - -WUM0MGXFIN for CLK from week 2035 to week 2112 - -for week 2034?? - -wum for CLK from week 1962 to week 2033 - -com available week 1690 and after for SP3 -week 1710 and after for clk and both end on week 1961. -More about the CODE com solution can be found in their papers [9]_[10]_. - -gbm available week 2017 day 772 and after - -Details on the MGEX precise orbit and clock products can be found on the -IGS website [4]_. - -IGS files can be viewed online using their file browser [5]_. +GFZ rapid solution includes: GPS+GLO+GAL+BDS+QZS. More about the GFZ +solution can be found on their MGEX website [8]_. + +SP3 Older than Two Weeks +------------------------ +If the SP3 date requested is more than two weeks previous to the +current date and GPS week 1962 or later, then the CODE final solution +is downloaded (COD0MGXFIN). The CODE final SP3 solutions became +available starting GPS week 1962 or Aug 13, 2017. The CODE final +solution includes: GPS+GLO+GAL+BDS+QZS. More about the CODE solution can +be found in their papers [6]_[7]_. + +If the SP3 date requested is between GPS week 1690 and 1961 or between +May 25, 2012 and Aug 12, 2017, then the CODE 'com' short name solution +is downloaded. More about the CODE 'com' solution can be found in their +papers [9]_[10]_. + +CLK Older than Two Weeks +------------------------ +If the CLK date requested is more than two weeks previous to the +current date and GPS week 2113 or later, then the CODE final solution +is downloaded (COD0MGXFIN). The CODE final CLK solutions became +available starting GPS week 2113 or July 5th, 2020. The CODE final +solution includes: GPS+GLO+GAL+BDS+QZS. More about the CODE solution can +be found in their papers [6]_[7]_. + +If the CLK date requested is between GPS week 2034 and 2112 or between +Jan 1, 2019 and July 4th, 2020, then the Wuhan University final +solution is downloaded (WUM0MGXFIN). More about the WUM0MGXFIN solution +can be found in their documention [11]_. + +If the CLK date requested is week GPS week 2034 and between Dec 30, 2018 +and Dec 31, 2018, then the GFZ short name solution is downloaded (gbm). +More about the GFZ 'gbm' solution can be found in their +documentation [13]_[14]_. + +If the CLK date requested is between GPS week 1962 and 2033 or between +Aug 13, 2017 and Dec 29th, 2018 then the Wuhan University short name +solution is downloaded (wum). More about the "wum" solution can be found +in their paper [12]_. + +If the CLK date requested is between GPS week 1710 and 1961 or between +Oct 14, 2012 and Aug 12, 2017, then the CODE 'com' short name solution +is downloaded. More about the CODE 'com' solution can be found in their +papers [9]_[10]_. + +IGS Resources +------------- + +IGS network station information can be found at [3]_. IGS files can be +viewed online using their file browser [5]_. References ---------- @@ -79,6 +105,11 @@ .. [8] https://www.gfz-potsdam.de/en/section/space-geodetic-techniques/projects/mgex .. [9] http://doi.org/10.1007/1345_2015_161 .. [10] http://doi.org/10.1007/s00190-016-0968-8 +.. [11] https://files.igs.org/pub/center/analysis/WUM0MGXFIN.acn +.. [12] http://dx.doi.org/10.1007/s00190-015-0862-9 +.. [13] https://files.igs.org/pub/resource/pubs/workshop/2014/Workshop%202014%20-%20PS11%20-%20Deng%20-%202226%20-%20Precise%20orbit%20determination%20of%20Beidou%20Satellites%20at%20GFZ.pdf +.. [14] http://doi.org/10.1007/1345_2015_120 + """ # CLK: 2020, 7, 2 @@ -193,7 +224,7 @@ def _verify_ephemeris(file_type, gps_millis, constellations=None, possible_types = [] if file_type == "rinex_nav": - if date < datetime(2013,1,1): + if date < datetime(2013,1,1).date(): raise RuntimeError("gnss_lib_py cannot automatically " \ + "download rinex nav files for "\ + "times before Jan 1, 2013") @@ -217,10 +248,10 @@ def _verify_ephemeris(file_type, gps_millis, constellations=None, possible_types += ["rinex_nav_multi_s"] if file_type == "sp3": - if date < datetime(2017,8,13): + if date < datetime(2012,5,25).date(): raise RuntimeError("gnss_lib_py cannot automatically " \ + "download sp3 files for "\ - + "times before Aug 13, 2017") + + "times before May 25, 2012") if datetime.utcnow().date() - timedelta(days=3) < date: possible_types += ["sp3_rapid_CODE"] elif datetime.utcnow().date() - timedelta(days=14) < date: @@ -228,21 +259,27 @@ def _verify_ephemeris(file_type, gps_millis, constellations=None, elif date >= datetime(2017, 8, 13).date(): possible_types += ["sp3_final_CODE"] else: - possible_types += ["sp3_final_GFZ"] + possible_types += ["sp3_short_CODE"] if file_type == "clk": - if date < datetime(2017,8,13): + if date < datetime(2012,10,14).date(): raise RuntimeError("gnss_lib_py cannot automatically " \ + "download clk files for "\ - + "times before Aug 13, 2017") + + "times before Oct 14, 2012") if datetime.utcnow().date() - timedelta(days=3) < date: possible_types += ["clk_rapid_CODE"] elif datetime.utcnow().date() - timedelta(days=14) < date: possible_types += ["clk_rapid_GFZ"] - elif date >= datetime(2017, 8, 13).date(): + elif date >= datetime(2020, 7, 5).date(): possible_types += ["clk_final_CODE"] + elif date >= datetime(2019, 1, 1).date(): + possible_types += ["clk_final_WUM"] + elif date >= datetime(2018, 12, 30).date(): + possible_types += ["clk_short_GFZ"] + elif date >= datetime(2017, 8, 13).date(): + possible_types += ["clk_short_WUM"] else: - possible_types += ["clk_final_GFZ"] + possible_types += ["clk_short_CODE"] already_exists, filepath = _valid_ephemeris_in_paths(date, possible_types, file_paths) @@ -575,14 +612,14 @@ def _valid_ephemeris_in_paths(date, possible_types, file_paths=None): if os.path.split(path)[1][3:] == str(gps_week).zfill(4) + str((timetuple.tm_wday+1)%7) + ".sp3": return True, path - # sp3 before Aug 13, 2017 - elif possible_type == "sp3_final_GFZ": + # sp3 before Aug 13, 2017 and May 25, 2012 or later + elif possible_type == "sp3_short_CODE": gps_week, _ = tc.datetime_to_tow(datetime.combine(date, time(tzinfo=timezone.utc))) recommended_file = ("gdc.cddis.eosdis.nasa.gov", "/gnss/products/" \ + str(gps_week).zfill(4) + "/" \ - + "gbm" + str(gps_week).zfill(4) \ + + "com" + str(gps_week).zfill(4) \ + str((timetuple.tm_wday+1)%7) \ + ".sp3.Z") recommended_files.append(recommended_file) @@ -644,7 +681,7 @@ def _valid_ephemeris_in_paths(date, possible_types, file_paths=None): if os.path.split(path)[1][3:] == str(gps_week).zfill(4) + str((timetuple.tm_wday+1)%7) + ".clk": return True, path - # clk if longer than two weeks ago and more recent than Aug 13, 2017 + # clk if longer than two weeks ago and more recent than Jul 5, 2020 elif possible_type == "clk_final_CODE": gps_week, _ = tc.datetime_to_tow(datetime.combine(date, time(tzinfo=timezone.utc))) @@ -668,8 +705,32 @@ def _valid_ephemeris_in_paths(date, possible_types, file_paths=None): if os.path.split(path)[1][3:] == str(gps_week).zfill(4) + str((timetuple.tm_wday+1)%7) + ".clk": return True, path - # clk before Aug 13, 2017 - elif possible_type == "clk_final_GFZ": + # clk for Jan 1, 2019 to Jul 4, 2020 + elif possible_type == "clk_final_WUM": + gps_week, _ = tc.datetime_to_tow(datetime.combine(date, + time(tzinfo=timezone.utc))) + recommended_file = ("gdc.cddis.eosdis.nasa.gov", + "/gnss/products/" \ + + str(gps_week).zfill(4) + "/" \ + + "WUM0MGXFIN_" + str(timetuple.tm_year) \ + + str(timetuple.tm_yday).zfill(3) \ + + "0000_01D_30S_CLK.CLK.gz") + recommended_files.append(recommended_file) + if file_paths is None: + return False, recommended_file + # check compatible file types + for path in file_paths: + if os.path.split(path)[1] + ".gz" == os.path.split(recommended_file[1])[1]: + return True, path + for path in file_paths: + if os.path.split(path)[1][10:] == os.path.split(recommended_file[1])[1][10:-3]: + return True, path + for path in file_paths: + if os.path.split(path)[1][3:] == str(gps_week).zfill(4) + str((timetuple.tm_wday+1)%7) + ".clk": + return True, path + + # clk for Dec 30, 2018 to Dec 31, 2018 + elif possible_type == "clk_short_GFZ": gps_week, _ = tc.datetime_to_tow(datetime.combine(date, time(tzinfo=timezone.utc))) recommended_file = ("gdc.cddis.eosdis.nasa.gov", @@ -689,6 +750,48 @@ def _valid_ephemeris_in_paths(date, possible_types, file_paths=None): if os.path.split(path)[1][3:] + ".Z" == os.path.split(recommended_file[1])[1]: return True, path + # clk for Aug 13, 2017 to Dec 29, 2018 + elif possible_type == "clk_short_WUM": + gps_week, _ = tc.datetime_to_tow(datetime.combine(date, + time(tzinfo=timezone.utc))) + recommended_file = ("gdc.cddis.eosdis.nasa.gov", + "/gnss/products/" \ + + str(gps_week).zfill(4) + "/" \ + + "wum" + str(gps_week).zfill(4) \ + + str((timetuple.tm_wday+1)%7) \ + + ".clk.Z") + recommended_files.append(recommended_file) + if file_paths is None: + return False, recommended_file + # check compatible file types + for path in file_paths: + if os.path.split(path)[1] + ".Z" == os.path.split(recommended_file[1])[1]: + return True, path + for path in file_paths: + if os.path.split(path)[1][3:] + ".Z" == os.path.split(recommended_file[1])[1]: + return True, path + + # clk for Oct 14, 2012 to Aug 12, 2017 + elif possible_type == "clk_short_CODE": + gps_week, _ = tc.datetime_to_tow(datetime.combine(date, + time(tzinfo=timezone.utc))) + recommended_file = ("gdc.cddis.eosdis.nasa.gov", + "/gnss/products/" \ + + str(gps_week).zfill(4) + "/" \ + + "com" + str(gps_week).zfill(4) \ + + str((timetuple.tm_wday+1)%7) \ + + ".clk.Z") + recommended_files.append(recommended_file) + if file_paths is None: + return False, recommended_file + # check compatible file types + for path in file_paths: + if os.path.split(path)[1] + ".Z" == os.path.split(recommended_file[1])[1]: + return True, path + for path in file_paths: + if os.path.split(path)[1][3:] + ".Z" == os.path.split(recommended_file[1])[1]: + return True, path + else: raise RuntimeError(possible_type,"invalid possible_type "\ +"for valid ephemeris") From d79cc655474a3e331a122449eb4cb1319f69c32a Mon Sep 17 00:00:00 2001 From: betaBison Date: Mon, 6 Nov 2023 14:39:57 -0800 Subject: [PATCH 3/7] add secondary download options --- .../WUM0MGXFIN_20190730000_01D_30S_CLK.CLK | 267 +++++++++++++ data/unit_test/clk/com19402.clk | 370 ++++++++++++++++++ data/unit_test/clk/gbm20340.clk | 365 +++++++++++++++++ data/unit_test/clk/wum19923.clk | 245 ++++++++++++ data/unit_test/sp3/com19402.sp3 | 100 +++++ gnss_lib_py/utils/ephemeris_downloader.py | 78 +++- tests/utils/test_ephemeris_downloader.py | 125 +++++- 7 files changed, 1528 insertions(+), 22 deletions(-) create mode 100644 data/unit_test/clk/WUM0MGXFIN_20190730000_01D_30S_CLK.CLK create mode 100644 data/unit_test/clk/com19402.clk create mode 100644 data/unit_test/clk/gbm20340.clk create mode 100644 data/unit_test/clk/wum19923.clk create mode 100644 data/unit_test/sp3/com19402.sp3 diff --git a/data/unit_test/clk/WUM0MGXFIN_20190730000_01D_30S_CLK.CLK b/data/unit_test/clk/WUM0MGXFIN_20190730000_01D_30S_CLK.CLK new file mode 100644 index 00000000..59704570 --- /dev/null +++ b/data/unit_test/clk/WUM0MGXFIN_20190730000_01D_30S_CLK.CLK @@ -0,0 +1,267 @@ + 3.00 C M RINEX VERSION / TYPE + 30.00 INTERVAL +PANDA-CLKDEN WHU 20190317 065126 UTC PGM / RUN BY / DATE +WHU MGEX clock information COMMENT +Clock information consistent with phase and P1/P2 code data COMMENT +Clocks are not re-aligned to broadcast GPS time COMMENT + GPS TIME SYSTEM ID +G CC2NONCC V6.5 P1C1.DCB @ ftp.unibe.ch/aiub/CODE SYS / DCBS APPLIED +R CC2NONCC V6.5 P1C1.DCB @ ftp.unibe.ch/aiub/CODE SYS / DCBS APPLIED +G PANDA-LSQ IGS08_2038.ATX SYS / PCVS APPLIED +R PANDA-LSQ IGS08_2038.ATX SYS / PCVS APPLIED + 2 AR AS # / TYPES OF DATA +WHU GNSS RESEARCH CENTER, WUHAN UNIVERSITY, P.R.CHINA ANALYSIS CENTER + 1 # OF CLK REF +NIST ANALYSIS CLK REF + 131 IGb08 # OF SOLN STA / TRF +NIST -1288398520 -4721696921 4078625347SOLN STA NAME / NUM +NRC1 1112776972 -4341475900 4522955878SOLN STA NAME / NUM +WSRT 3828735649 443305180 5064884848SOLN STA NAME / NUM +ONSA 3370658338 711877342 5349787090SOLN STA NAME / NUM +ALGO 918129146 -4346071322 4561977912SOLN STA NAME / NUM +KOKB -5543838329 -2054585861 2387810417SOLN STA NAME / NUM +WTZR 4075580317 931854037 4801568264SOLN STA NAME / NUM +ABMF 2919785782 -5383744972 1774604852SOLN STA NAME / NUM +ABPO 4097216548 4429119192 -2065771191SOLN STA NAME / NUM +ADIS 4913652581 3945922817 995383500SOLN STA NAME / NUM +AIRA -3530185849 4118797211 3344036718SOLN STA NAME / NUM +ALIC -4052052707 4212835984 -2545104632SOLN STA NAME / NUM +ALRT 388042380 -740382454 6302001980SOLN STA NAME / NUM +AREQ 1942826266 -5804070350 -1796894117SOLN STA NAME / NUM +ARTU 1843956379 3016203237 5291261785SOLN STA NAME / NUM +ASPA -6100260157 -996502660 -1567977253SOLN STA NAME / NUM +AUCK -5105681516 461563996 -3782181029SOLN STA NAME / NUM +BAKE -289834270 -2756501164 5725162374SOLN STA NAME / NUM +BAKO -1836969457 6065616937 -716257929SOLN STA NAME / NUM +BJCO 6333076443 270973748 704552253SOLN STA NAME / NUM +BJFS -2148744529 4426641166 4044655806SOLN STA NAME / NUM +BOGT 1744398873 -6116037031 512731900SOLN STA NAME / NUM +BRAZ 4115014055 -4550641632 -1741443773SOLN STA NAME / NUM +BRMU 2304703278 -4874817166 3395187047SOLN STA NAME / NUM +BRST 4231162410 -332746428 4745131063SOLN STA NAME / NUM +BUCU 4093760626 2007794052 4445130109SOLN STA NAME / NUM +CAGS 1096348826 -4335060658 4533255264SOLN STA NAME / NUM +CAS1 -901776139 2409383231 -5816748536SOLN STA NAME / NUM +CCJ2 -4490605155 3483895003 2884928308SOLN STA NAME / NUM +CEDU -3753473169 3912741028 -3347959740SOLN STA NAME / NUM +CHAN -2674427636 3757143077 4391521526SOLN STA NAME / NUM +CHTI -4607856209 -272375382 -4386954196SOLN STA NAME / NUM +CHUM 1228950408 4508079984 4327868525SOLN STA NAME / NUM +CHUR -236439131 -3307616946 5430049330SOLN STA NAME / NUM +COCO -741951042 6190961721 -1337767425SOLN STA NAME / NUM +CRAO 3783896818 2551404635 4441264404SOLN STA NAME / NUM +CUSV -1132914960 6092528534 1504633175SOLN STA NAME / NUM +DARW -4091359585 4684606432 -1408579168SOLN STA NAME / NUM +DAV1 486854580 2285099170 -5914955715SOLN STA NAME / NUM +DGAR 1916268803 6029977715 -801719446SOLN STA NAME / NUM +DRAO -2059165014 -3621108400 4814432227SOLN STA NAME / NUM +FAA1 -5247393608 -3076866455 -1911521049SOLN STA NAME / NUM +FAIR -2281621955 -1453595963 5756961707SOLN STA NAME / NUM +FFMJ 4053455670 617729893 4869395855SOLN STA NAME / NUM +FLIN -766174831 -3611375368 5184056211SOLN STA NAME / NUM +FLRS 4221529915 -2549242326 4031398424SOLN STA NAME / NUM +FUNC 5143339203 -1563412518 3421191770SOLN STA NAME / NUM +GLPS -33800943 -6377516516 -82154233SOLN STA NAME / NUM +GRAZ 4194423576 1162702944 4647245557SOLN STA NAME / NUM +GUAT -56063530 -6174978646 1596665292SOLN STA NAME / NUM +GUUG -5070465163 3576460287 1472093829SOLN STA NAME / NUM +HARB 5084657610 2670325385 -2768480919SOLN STA NAME / NUM +HNPT 1196626127 -4846358485 3956723139SOLN STA NAME / NUM +HNUS 4973168863 1734085600 -3585433975SOLN STA NAME / NUM +HOB2 -3950072223 2522415358 -4311637441SOLN STA NAME / NUM +HOFN 2679689927 -727950998 5722789526SOLN STA NAME / NUM +IISC 1337935844 6070317124 1427877267SOLN STA NAME / NUM +INEG -1260435711 -5788546757 2360339866SOLN STA NAME / NUM +IQAL 1036000839 -2631455594 5697819746SOLN STA NAME / NUM +IRKJ -968328946 3794426503 5018167194SOLN STA NAME / NUM +ISBA 3808364561 3734430201 3485693703SOLN STA NAME / NUM +JPLM -2493304840 -4655214902 3565497615SOLN STA NAME / NUM +KERG 1406337197 3918161098 -4816167392SOLN STA NAME / NUM +KIR0 2248122964 865686836 5886425948SOLN STA NAME / NUM +KOKV -5543838326 -2054585861 2387810416SOLN STA NAME / NUM +KOUR 3839591322 -5059567592 579957226SOLN STA NAME / NUM +KUUJ 772857293 -3558198856 5219096120SOLN STA NAME / NUM +LAMA 3524522668 1329693835 5129846468SOLN STA NAME / NUM +LHAZ -106942100 5549269769 3139215201SOLN STA NAME / NUM +MAC1 -3464038879 1334173202 -5169223901SOLN STA NAME / NUM +MAL2 4865385453 4110717475 -331137394SOLN STA NAME / NUM +MANA 407981936 -6222925643 1333529088SOLN STA NAME / NUM +MAR6 2998189222 931451980 5533398864SOLN STA NAME / NUM +MARS 4630532552 433946576 4350142869SOLN STA NAME / NUM +MAS1 5439192142 -1522055226 2953455054SOLN STA NAME / NUM +MAW1 1111287206 2168911187 -5874493598SOLN STA NAME / NUM +MBAR 5482951145 3260442853 -66519631SOLN STA NAME / NUM +MCM4 -1311703053 310814829 -6213255147SOLN STA NAME / NUM +MKEA -5464105388 -2495165491 2148291636SOLN STA NAME / NUM +MOBJ 2936424340 2178374211 5208858517SOLN STA NAME / NUM +MOBS -4130636739 2894953139 -3890530281SOLN STA NAME / NUM +MORP 3645667657 -107277015 5215053671SOLN STA NAME / NUM +MQZG -4580569790 590466312 -4384379696SOLN STA NAME / NUM +NANO -2335726964 -3451608350 4812009882SOLN STA NAME / NUM +NICO 4359415451 2874117216 3650777999SOLN STA NAME / NUM +NIUM -5937160911 -1054675217 -2071386024SOLN STA NAME / NUM +NOT1 4934545975 1321265262 3806456329SOLN STA NAME / NUM +NOVM 452260728 3635877579 5203453305SOLN STA NAME / NUM +NRIL 64536875 2253782908 5946363513SOLN STA NAME / NUM +NTUS -1508023211 6195576545 148799326SOLN STA NAME / NUM +NYAL 1202430331 252626811 6237767770SOLN STA NAME / NUM +OHI2 1525812126 -2432478237 -5676165552SOLN STA NAME / NUM +PBRI -295635915 6240848785 1278178537SOLN STA NAME / NUM +PDEL 4551595885 -2186892893 3883411004SOLN STA NAME / NUM +PERT -2368688007 4881316690 -3341795020SOLN STA NAME / NUM +PETS -3580828386 1399698236 5072185033SOLN STA NAME / NUM +PIE1 -1640917105 -5014781180 3575447018SOLN STA NAME / NUM +POVE 2774265570 -5662060163 -959415748SOLN STA NAME / NUM +PRDS -1659603212 -3676725781 4925493447SOLN STA NAME / NUM +PTAG -3184318639 5291065553 1590418262SOLN STA NAME / NUM +REUN 3364098933 4907944652 -2293466701SOLN STA NAME / NUM +REYK 2587384002 -1043033549 5716564129SOLN STA NAME / NUM +ROTH 909246227 -2264764187 -5873056304SOLN STA NAME / NUM +SALU 4566947850 -4443098559 -286674562SOLN STA NAME / NUM +SANT 1769693418 -5044574291 -3468320886SOLN STA NAME / NUM +SBOK 5279492063 1703114492 -3139092809SOLN STA NAME / NUM +SCH2 1448636537 -3385243792 5191047238SOLN STA NAME / NUM +SCOR 1982095784 -798821018 5989464647SOLN STA NAME / NUM +SFER 5105518922 -555145635 3769803602SOLN STA NAME / NUM +SHAO -2831733938 4675665760 3275369251SOLN STA NAME / NUM +STJO 2612630837 -3426807050 4686757997SOLN STA NAME / NUM +STK2 -3642161449 2861487862 4370351223SOLN STA NAME / NUM +SUTH 5041274894 1916054421 -3397075713SOLN STA NAME / NUM +SYDN -4648240840 2560636448 -3526317834SOLN STA NAME / NUM +SYOG 1766207929 1460290311 -5932297662SOLN STA NAME / NUM +TCMS -2982783337 4966659905 2658809316SOLN STA NAME / NUM +TIXI -1264873475 1569455754 6031003382SOLN STA NAME / NUM +TOW2 -5054583374 3275504119 -2091538513SOLN STA NAME / NUM +TSK2 -3957184886 3310231001 3737703831SOLN STA NAME / NUM +UFPR 3763751680 -4365113944 -2724404490SOLN STA NAME / NUM +ULDI 4796680875 2930311667 -3005435630SOLN STA NAME / NUM +UNBJ 1761287881 -4078238515 4561417801SOLN STA NAME / NUM +VNDP -2678090563 -4525436894 3597431988SOLN STA NAME / NUM +WARN 3658785574 784471096 5147870715SOLN STA NAME / NUM +WHIT -2218338190 -2201205127 5543057473SOLN STA NAME / NUM +WILL -2084258391 -3313873000 5019852958SOLN STA NAME / NUM +XMIS -1696344725 6039590006 -1149275131SOLN STA NAME / NUM +YAKT -1914999260 2308241458 5610225496SOLN STA NAME / NUM +YAR3 -2389043737 5043313577 -3078524434SOLN STA NAME / NUM +YELL -1224452958 -2689216204 5633638284SOLN STA NAME / NUM +ZECK 3451174388 3060335632 4391955771SOLN STA NAME / NUM + 113 # OF SOLN SATS +G01 G02 G03 G05 G06 G07 G08 G09 G10 G11 G12 G13 G14 G15 G16 PRN LIST +G17 G18 G19 G20 G21 G22 G23 G24 G25 G26 G27 G28 G29 G30 G31 PRN LIST +G32 R01 R02 R03 R04 R05 R07 R08 R09 R10 R11 R13 R14 R15 R16 PRN LIST +R17 R18 R20 R21 R22 R23 R24 R19 E01 E02 E03 E04 E05 E07 E08 PRN LIST +E09 E11 E12 E14 E18 E19 E21 E24 E25 E26 E27 E30 E31 E33 E36 PRN LIST +C01 C02 C03 C04 C05 C06 C07 C08 C09 C10 C11 C12 C13 C14 C16 PRN LIST +C18 C19 C20 C21 C22 C23 C24 C25 C26 C27 C28 C29 C30 C32 C33 PRN LIST +C34 C36 J01 J02 J03 J07 C35 C37 PRN LIST + END OF HEADER +AS G01 2019 3 14 0 0 0.000000 1 -0.180257608449E-03 +AS G02 2019 3 14 0 0 0.000000 1 -0.162795101070E-03 +AS G03 2019 3 14 0 0 0.000000 1 0.186318172420E-03 +AS G05 2019 3 14 0 0 0.000000 1 0.118547972278E-05 +AS G06 2019 3 14 0 0 0.000000 1 0.255796586951E-03 +AS G07 2019 3 14 0 0 0.000000 1 0.154711893386E-04 +AS G08 2019 3 14 0 0 0.000000 1 -0.136044576045E-03 +AS G09 2019 3 14 0 0 0.000000 1 0.445623260042E-03 +AS G10 2019 3 14 0 0 0.000000 1 0.978446325024E-04 +AS G11 2019 3 14 0 0 0.000000 1 -0.645484510054E-03 +AS G12 2019 3 14 0 0 0.000000 1 0.260389415267E-03 +AS G13 2019 3 14 0 0 0.000000 1 -0.717987931838E-04 +AS G14 2019 3 14 0 0 0.000000 1 -0.884353275825E-04 +AS G15 2019 3 14 0 0 0.000000 1 -0.323663149158E-03 +AS G16 2019 3 14 0 0 0.000000 1 -0.252010636638E-04 +AS G17 2019 3 14 0 0 0.000000 1 0.230279800768E-04 +AS G18 2019 3 14 0 0 0.000000 1 0.345739313429E-04 +AS G19 2019 3 14 0 0 0.000000 1 -0.342600708020E-03 +AS G20 2019 3 14 0 0 0.000000 1 0.523077581925E-03 +AS G21 2019 3 14 0 0 0.000000 1 -0.233024869425E-03 +AS G22 2019 3 14 0 0 0.000000 1 -0.663655543963E-03 +AS G23 2019 3 14 0 0 0.000000 1 -0.194119608506E-03 +AS G24 2019 3 14 0 0 0.000000 1 -0.633173089698E-04 +AS G25 2019 3 14 0 0 0.000000 1 -0.732691136379E-03 +AS G26 2019 3 14 0 0 0.000000 1 0.148472541294E-03 +AS G27 2019 3 14 0 0 0.000000 1 -0.856002342127E-04 +AS G28 2019 3 14 0 0 0.000000 1 0.766274184222E-03 +AS G29 2019 3 14 0 0 0.000000 1 0.250015842026E-03 +AS G30 2019 3 14 0 0 0.000000 1 -0.679832766173E-04 +AS G31 2019 3 14 0 0 0.000000 1 0.523737399691E-04 +AS G32 2019 3 14 0 0 0.000000 1 -0.182508856110E-03 +AS R01 2019 3 14 0 0 0.000000 1 0.407934795678E-04 +AS R02 2019 3 14 0 0 0.000000 1 0.358642931604E-03 +AS R03 2019 3 14 0 0 0.000000 1 -0.768606954082E-05 +AS R04 2019 3 14 0 0 0.000000 1 0.298506372499E-03 +AS R05 2019 3 14 0 0 0.000000 1 0.239996110910E-04 +AS R07 2019 3 14 0 0 0.000000 1 -0.597937563192E-04 +AS R08 2019 3 14 0 0 0.000000 1 0.186725298139E-04 +AS R09 2019 3 14 0 0 0.000000 1 0.589645609097E-04 +AS R10 2019 3 14 0 0 0.000000 1 0.448753371908E-04 +AS R11 2019 3 14 0 0 0.000000 1 -0.595884604275E-04 +AS R13 2019 3 14 0 0 0.000000 1 -0.211790610823E-04 +AS R14 2019 3 14 0 0 0.000000 1 0.368865839514E-04 +AS R15 2019 3 14 0 0 0.000000 1 0.100616449497E-03 +AS R16 2019 3 14 0 0 0.000000 1 0.107899291449E-04 +AS R17 2019 3 14 0 0 0.000000 1 0.211866100614E-03 +AS R18 2019 3 14 0 0 0.000000 1 0.363017329475E-04 +AS R20 2019 3 14 0 0 0.000000 1 -0.371657072974E-03 +AS R21 2019 3 14 0 0 0.000000 1 -0.363685345280E-04 +AS R22 2019 3 14 0 0 0.000000 1 -0.924325547910E-05 +AS R23 2019 3 14 0 0 0.000000 1 0.215158209550E-03 +AS R24 2019 3 14 0 0 0.000000 1 -0.178160338510E-03 +AS E01 2019 3 14 0 0 0.000000 1 -0.561541336740E-03 +AS E02 2019 3 14 0 0 0.000000 1 0.513516886739E-04 +AS E03 2019 3 14 0 0 0.000000 1 -0.143586807477E-03 +AS E04 2019 3 14 0 0 0.000000 1 -0.239790805945E-03 +AS E05 2019 3 14 0 0 0.000000 1 0.921271116500E-04 +AS E07 2019 3 14 0 0 0.000000 1 -0.148637711860E-03 +AS E08 2019 3 14 0 0 0.000000 1 0.638937191422E-02 +AS E09 2019 3 14 0 0 0.000000 1 0.650106014915E-02 +AS E11 2019 3 14 0 0 0.000000 1 0.571585320442E-02 +AS E12 2019 3 14 0 0 0.000000 1 0.636656625318E-02 +AS E14 2019 3 14 0 0 0.000000 1 0.643174370868E-02 +AS E18 2019 3 14 0 0 0.000000 1 -0.589971063715E-03 +AS E19 2019 3 14 0 0 0.000000 1 -0.777395767575E-05 +AS E21 2019 3 14 0 0 0.000000 1 -0.523946621599E-03 +AS E24 2019 3 14 0 0 0.000000 1 0.618682274952E-02 +AS E25 2019 3 14 0 0 0.000000 1 0.186633473565E-02 +AS E26 2019 3 14 0 0 0.000000 1 0.480169169553E-02 +AS E27 2019 3 14 0 0 0.000000 1 0.511097862775E-03 +AS E30 2019 3 14 0 0 0.000000 1 0.503515814884E-02 +AS E31 2019 3 14 0 0 0.000000 1 0.883827946566E-03 +AS E33 2019 3 14 0 0 0.000000 1 0.847938854086E-03 +AS E36 2019 3 14 0 0 0.000000 1 0.736838203782E-03 +AS C01 2019 3 14 0 0 0.000000 1 0.327260734558E-03 +AS C02 2019 3 14 0 0 0.000000 1 -0.375652516682E-03 +AS C03 2019 3 14 0 0 0.000000 1 -0.632646404000E-04 +AS C04 2019 3 14 0 0 0.000000 1 0.119529861222E-04 +AS C05 2019 3 14 0 0 0.000000 1 -0.116373282479E-03 +AS C06 2019 3 14 0 0 0.000000 1 0.527502027586E-03 +AS C07 2019 3 14 0 0 0.000000 1 0.988946084494E-04 +AS C08 2019 3 14 0 0 0.000000 1 0.128188652498E-03 +AS C09 2019 3 14 0 0 0.000000 1 0.603117160172E-03 +AS C10 2019 3 14 0 0 0.000000 1 -0.571767873126E-03 +AS C11 2019 3 14 0 0 0.000000 1 -0.496958330419E-04 +AS C12 2019 3 14 0 0 0.000000 1 0.490016442709E-03 +AS C13 2019 3 14 0 0 0.000000 1 -0.591934564211E-03 +AS C14 2019 3 14 0 0 0.000000 1 0.765560941196E-03 +AS C16 2019 3 14 0 0 0.000000 1 -0.362387899732E-03 +AS C18 2019 3 14 0 0 0.000000 1 -0.322929098170E-04 +AS C19 2019 3 14 0 0 0.000000 1 0.615616232747E-04 +AS C20 2019 3 14 0 0 0.000000 1 0.285133266795E-03 +AS C21 2019 3 14 0 0 0.000000 1 0.446603167382E-03 +AS C22 2019 3 14 0 0 0.000000 1 0.350574379960E-03 +AS C23 2019 3 14 0 0 0.000000 1 -0.450836027002E-03 +AS C24 2019 3 14 0 0 0.000000 1 -0.475635347404E-03 +AS C25 2019 3 14 0 0 0.000000 1 -0.150196910991E-03 +AS C26 2019 3 14 0 0 0.000000 1 0.166844433491E-03 +AS C27 2019 3 14 0 0 0.000000 1 0.789416011259E-04 +AS C28 2019 3 14 0 0 0.000000 1 0.774793101700E-04 +AS C29 2019 3 14 0 0 0.000000 1 0.351575392200E-04 +AS C30 2019 3 14 0 0 0.000000 1 0.873944819186E-04 +AS C32 2019 3 14 0 0 0.000000 1 -0.478592291638E-03 +AS C33 2019 3 14 0 0 0.000000 1 -0.499422094868E-04 +AS C34 2019 3 14 0 0 0.000000 1 0.354907571991E-03 +AS C36 2019 3 14 0 0 0.000000 1 -0.191962778430E-03 +AS J01 2019 3 14 0 0 0.000000 1 -0.347188410290E-03 +AS J02 2019 3 14 0 0 0.000000 1 0.246510104000E-06 +AS J03 2019 3 14 0 0 0.000000 1 -0.276873542963E-06 +AS J07 2019 3 14 0 0 0.000000 1 0.673835714373E-04 diff --git a/data/unit_test/clk/com19402.clk b/data/unit_test/clk/com19402.clk new file mode 100644 index 00000000..906618ec --- /dev/null +++ b/data/unit_test/clk/com19402.clk @@ -0,0 +1,370 @@ + 2.00 CLOCK DATA RINEX VERSION / TYPE +CCRNXC V5.3 AIUB 24-MAR-17 17:57 PGM / RUN BY / DATE +CODE MGEX clock information for day 073, 2017 COMMENT +BASED ON CODE AND PHASE MEASUREMENTS COMMENT +Satellite/receiver clock values at intervals of 300 sec COMMENT +Free choice of reference clock COMMENT + GPS TIME SYSTEM ID + 18 LEAP SECONDS +C GPSEST V5.3 IGS14 SYS / PCVS APPLIED +E GPSEST V5.3 IGS14 SYS / PCVS APPLIED +G GPSEST V5.3 IGS14 SYS / PCVS APPLIED +J GPSEST V5.3 IGS14 SYS / PCVS APPLIED +R GPSEST V5.3 IGS14 SYS / PCVS APPLIED +C GPSEST V5.3 CODE.OSB @ ftp.unibe.ch/aiub/CODE/ SYS / DCBS APPLIED +E GPSEST V5.3 CODE.OSB @ ftp.unibe.ch/aiub/CODE/ SYS / DCBS APPLIED +G GPSEST V5.3 CODE.OSB @ ftp.unibe.ch/aiub/CODE/ SYS / DCBS APPLIED +J GPSEST V5.3 CODE.OSB @ ftp.unibe.ch/aiub/CODE/ SYS / DCBS APPLIED +R GPSEST V5.3 CODE.OSB @ ftp.unibe.ch/aiub/CODE/ SYS / DCBS APPLIED + 2 AR AS # / TYPES OF DATA +COM CODE MGEX ANALYSIS CENTER + 1 # OF CLK REF +YEL2 40127M006 0.000000000000E+00 ANALYSIS CLK REF + 133 IGS14 # OF SOLN STA / TRF +YEL2 40127M006 -1224442092 -2689174674 5633660370SOLN STA NAME / NUM +AIRA 21742S001 -3530185797 4118797217 3344036752SOLN STA NAME / NUM +AJAC 10077M005 4696989274 723994710 4239678690SOLN STA NAME / NUM +ALIC 50137M001 -4052052629 4212835999 -2545104746SOLN STA NAME / NUM +AMU2 66040M002 26252 -175355 -6359569982SOLN STA NAME / NUM +ANKR 20805M002 4121948432 2652187864 4069023850SOLN STA NAME / NUM +AREG 42202M008 1942816399 -5804077156 -1796884387SOLN STA NAME / NUM +AXPV 10057M001 4614666743 430786727 4367411677SOLN STA NAME / NUM +BADG 12338M002 -838281989 3865777321 4987624577SOLN STA NAME / NUM +BAKE 40152M001 -289834231 -2756501150 5725162353SOLN STA NAME / NUM +BBYS 11514M001 3980358603 1382292289 4772772068SOLN STA NAME / NUM +BJCO 32701M001 6333076467 270973712 704552213SOLN STA NAME / NUM +BRAZ 41606M001 4115014073 -4550641630 -1741443815SOLN STA NAME / NUM +BRMU 42501S004 2304703307 -4874817169 3395187031SOLN STA NAME / NUM +BRST 10004M004 4231162435 -332746461 4745131044SOLN STA NAME / NUM +BRUX 13101M010 4027881409 306998698 4919498982SOLN STA NAME / NUM +BSHM 20705M001 4395951211 3080707209 3433498235SOLN STA NAME / NUM +CALL 42205M001 1387454356 -6081996201 -1324212111SOLN STA NAME / NUM +CAS1 66011M001 -901776136 2409383249 -5816748526SOLN STA NAME / NUM +CCJ2 21732M002 -4490605206 3483894957 2884928294SOLN STA NAME / NUM +CHPG 41609M004 4163476681 -4163821974 -2444511122SOLN STA NAME / NUM +CHTI 50242M001 -4607856151 -272375459 -4386954246SOLN STA NAME / NUM +CHUR 40128M002 -236439086 -3307616924 5430049307SOLN STA NAME / NUM +CKIS 50213M003 -5583182566 -2054142884 -2292166309SOLN STA NAME / NUM +CNMR 50512M001 -5087757748 3465029017 1664653843SOLN STA NAME / NUM +COCO 50127M001 -741950950 6190961707 -1337767530SOLN STA NAME / NUM +CORD 41511M001 2345503859 -4910842907 -3316365253SOLN STA NAME / NUM +COYQ 41715S001 1391587229 -4255574556 -4527925876SOLN STA NAME / NUM +CPVG 39601M001 5626883444 -2380932406 1824483945SOLN STA NAME / NUM +DARW 50134M001 -4091359501 4684606449 -1408579297SOLN STA NAME / NUM +DGAR 30802M001 1916268897 6029977681 -801719512SOLN STA NAME / NUM +DLF1 13502M009 3924697664 301125226 5001905302SOLN STA NAME / NUM +DUBO 40137M001 -417603909 -4064529823 4881432126SOLN STA NAME / NUM +FAIV -2281592981 -1453617994 5756973405SOLN STA NAME / NUM +FLIN 40135M001 -766174791 -3611375360 5184056204SOLN STA NAME / NUM +FLRS 31907M001 4221529951 -2549242320 4031398393SOLN STA NAME / NUM +FUNC 13911S001 5143339214 -1563412543 3421191741SOLN STA NAME / NUM +GANP 11515M001 3929181319 1455236925 4793654011SOLN STA NAME / NUM +GLPS 42005M002 -33801038 -6377516521 -82154265SOLN STA NAME / NUM +GLSV 12356M001 3512888712 2068980057 4888903284SOLN STA NAME / NUM +GMSD 21749S002 -3607665407 4147867938 3223717006SOLN STA NAME / NUM +GOP6 11502M006 3979319123 1050312345 4857064683SOLN STA NAME / NUM +GRAC 10002M010 4581708177 556132866 4389341406SOLN STA NAME / NUM +GUAM 50501M002 -5071312677 3568363622 1488904391SOLN STA NAME / NUM +GUAT 40901S001 -56063532 -6174978645 1596665288SOLN STA NAME / NUM +HARB 30302M009 5084657617 2670325348 -2768480949SOLN STA NAME / NUM +HNPT 49913S001 1196626158 -4846358489 3956723133SOLN STA NAME / NUM +HOB2 50116M004 -3950072140 2522415343 -4311637530SOLN STA NAME / NUM +HOFN 10204M002 2679689943 -727951028 5722789512SOLN STA NAME / NUM +INEG 40507M001 -1260435708 -5788546893 2360339906SOLN STA NAME / NUM +IQAL 40194M001 1036000875 -2631455586 5697819728SOLN STA NAME / NUM +ISBA 20308M001 3808364624 3734430197 3485693663SOLN STA NAME / NUM +JFNG 21602M006 -2279828991 5004706480 3219777413SOLN STA NAME / NUM +JOG2 23109M002 -2200208029 5924895523 -855929210SOLN STA NAME / NUM +KARR 50139M001 -2713833149 5303935108 -2269513910SOLN STA NAME / NUM +KIR8 10422M002 2248126864 865685750 5886424636SOLN STA NAME / NUM +KIRU 10403M002 2251420591 862817353 5885476835SOLN STA NAME / NUM +KLOP 14214M002 4041875261 620655499 4878636944SOLN STA NAME / NUM +KOKV 40424M004 -5543838312 -2054585988 2387810353SOLN STA NAME / NUM +KOUG 97301M402 3855263313 -5049732009 563040489SOLN STA NAME / NUM +KRGG 91201M007 1406336195 3918154606 -4816172885SOLN STA NAME / NUM +LHAZ 21613M002 -106942009 5549269794 3139215180SOLN STA NAME / NUM +LMMF 97205M001 2993387379 -5399363859 1596748120SOLN STA NAME / NUM +LPAL 81701M001 5326646228 -1719826038 3052043871SOLN STA NAME / NUM +MAC1 50135M001 -3464038836 1334173164 -5169223948SOLN STA NAME / NUM +MAJU 51501M001 -6257572156 950333294 785215510SOLN STA NAME / NUM +MAR7 10405M003 2998198289 931450073 5533392999SOLN STA NAME / NUM +MARS 10073M008 4630532588 433946544 4350142854SOLN STA NAME / NUM +MAS1 31303M002 5439192160 -1522055262 2953455026SOLN STA NAME / NUM +MAW1 66004M001 1111287206 2168911204 -5874493604SOLN STA NAME / NUM +MAYG 90101M001 4379104532 4418744547 -1401897864SOLN STA NAME / NUM +MDVJ 12309M005 2845455813 2160954389 5265993289SOLN STA NAME / NUM +METG 10503M002 2890652402 1310295621 5513958915SOLN STA NAME / NUM +MGUE 41558M001 1823327836 -4850352518 -3709085480SOLN STA NAME / NUM +MKEA 40477M001 -5464105370 -2495165611 2148291585SOLN STA NAME / NUM +MOBS 50182M001 -4130636652 2894953131 -3890530375SOLN STA NAME / NUM +MRO1 59913M001 -2556629916 5097138268 -2848384935SOLN STA NAME / NUM +MYVA 10205M001 2524224530 -766501947 5787949733SOLN STA NAME / NUM +NANO 40138M001 -2335726948 -3451608351 4812009892SOLN STA NAME / NUM +NICO 14302M001 4359415487 2874117199 3650777977SOLN STA NAME / NUM +NKLG 32809M002 6287385731 1071574801 39133135SOLN STA NAME / NUM +NOVM 12367M002 452260778 3635877576 5203453318SOLN STA NAME / NUM +NRMD 92701M005 -5743538060 1380503914 -2397896140SOLN STA NAME / NUM +NYA2 10317M008 1202379318 252474652 6237786544SOLN STA NAME / NUM +OHI2 66008M005 1525812098 -2432478230 -5676165563SOLN STA NAME / NUM +OHI3 66008M006 1525809267 -2432478743 -5676166259SOLN STA NAME / NUM +ONS1 10402M007 3370666736 711819099 5349788210SOLN STA NAME / NUM +OUS2 50212M002 -4387891016 733420875 -4555176083SOLN STA NAME / NUM +PADO 12750S001 4388881814 924567677 4519588859SOLN STA NAME / NUM +PARK 50108M001 -4554255117 2816652451 -3454059842SOLN STA NAME / NUM +PDEL 31906M004 4551595896 -2186892922 3883410979SOLN STA NAME / NUM +PERT 50133M001 -2368687907 4881316668 -3341795120SOLN STA NAME / NUM +PIMO 22003M001 -3186293619 5286624391 1601158377SOLN STA NAME / NUM +POTS 14106M003 3800689433 882077578 5028791432SOLN STA NAME / NUM +RAMO 20703S001 4514721592 3133508006 3228024915SOLN STA NAME / NUM +REUN 97401M003 3364098955 4907944631 -2293466722SOLN STA NAME / NUM +REYK 10202M001 2587384047 -1043033548 5716564121SOLN STA NAME / NUM +RGDG 41507M007 1429870436 -3495334813 -5122722990SOLN STA NAME / NUM +RIO2 41507M006 1429907875 -3495354913 -5122698552SOLN STA NAME / NUM +SAMO 50603M001 -6129702374 -890028693 -1516806881SOLN STA NAME / NUM +SCH2 40133M002 1448636556 -3385243779 5191047202SOLN STA NAME / NUM +SCRZ 41801M001 2743005920 -5420745272 -1937117025SOLN STA NAME / NUM +SEYG 39801M004 3597835947 5240884074 -516780991SOLN STA NAME / NUM +SGOC 23501M003 1113279807 6233644313 760277135SOLN STA NAME / NUM +STJ3 40101M005 2612588571 -3426820652 4686773792SOLN STA NAME / NUM +STK2 21731S004 -3642161426 2861487856 4370351241SOLN STA NAME / NUM +SUTV 30314M002 5041274890 1916054387 -3397075745SOLN STA NAME / NUM +SYDN 50124M003 -4648240763 2560636452 -3526317926SOLN STA NAME / NUM +TASH 12327M001 1695944870 4487138634 4190140739SOLN STA NAME / NUM +THTG 92201M016 -5246415027 -3077260950 -1913841997SOLN STA NAME / NUM +TID1 50103M108 -4460996859 2682557084 -3674442765SOLN STA NAME / NUM +TLSE 10003M009 4627851676 119640253 4372993684SOLN STA NAME / NUM +TN22 49450M001 419472940 -5188697499 3673388650SOLN STA NAME / NUM +TOW2 50140M001 -5054583311 3275504152 -2091538622SOLN STA NAME / NUM +TSK2 21730S010 -3957184846 3310231009 3737703853SOLN STA NAME / NUM +TUVA 51101M001 -6307543780 88455172 -939277697SOLN STA NAME / NUM +ULAB 24201M001 -1257408880 4099404308 4707992582SOLN STA NAME / NUM +UNBJ 40146M002 1761287914 -4078238506 4561417779SOLN STA NAME / NUM +UNSA 41514M001 2412830463 -5271936782 -2652208909SOLN STA NAME / NUM +URUM 21612M001 193030245 4606851292 4393311524SOLN STA NAME / NUM +VALD 40156M001 919075608 -4167766331 4724323625SOLN STA NAME / NUM +VILL 13406M001 4849833579 -335048788 4116015083SOLN STA NAME / NUM +WHIT 40136M001 -2218338150 -2201205132 5543057479SOLN STA NAME / NUM +WIND 31101M001 5633708792 1732017969 -2433985552SOLN STA NAME / NUM +WTZ2 14201M015 4075534988 931822536 4801609126SOLN STA NAME / NUM +WTZR 14201M010 4075580349 931854006 4801568244SOLN STA NAME / NUM +WTZZ 14201M014 4075579226 931853320 4801569150SOLN STA NAME / NUM +WUH2 21602M007 -2267750027 5009154536 3221294424SOLN STA NAME / NUM +XMIS 50183M001 -1696344640 6039590004 -1149275239SOLN STA NAME / NUM +YARR 50107M006 -2389025448 5043315516 -3078533124SOLN STA NAME / NUM +ZIM2 14001M008 4331299702 567537542 4633133850SOLN STA NAME / NUM +ZIM3 14001M008 4331299702 567537542 4633133850SOLN STA NAME / NUM +ZIMJ 14001M006 4331293749 567542348 4633135854SOLN STA NAME / NUM + 75 # OF SOLN SATS +C06 C07 C08 C09 C10 C12 C13 C14 E01 E02 E08 E09 E11 E12 E14 PRN LIST +E18 E19 E22 E24 E26 E30 G01 G02 G03 G05 G06 G07 G08 G09 G10 PRN LIST +G11 G12 G13 G14 G15 G16 G17 G18 G19 G20 G21 G22 G23 G24 G25 PRN LIST +G26 G27 G28 G29 G30 G31 G32 J01 R01 R02 R03 R04 R05 R07 R08 PRN LIST +R09 R10 R11 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 PRN LIST + END OF HEADER +AR YEL2 2017 03 14 00 00 0.000000 2 0.403838585820E-03 0.103310713148E-09 +AR AIRA 2017 03 14 00 00 0.000000 2 -0.336091496583E-07 0.991929714943E-10 +AR AJAC 2017 03 14 00 00 0.000000 2 0.390431717882E-07 0.998123111661E-10 +AR ALIC 2017 03 14 00 00 0.000000 2 0.335379705240E-07 0.810820422101E-10 +AR AMU2 2017 03 14 00 00 0.000000 2 -0.269094642331E-07 0.138183079824E-09 +AR ANKR 2017 03 14 00 00 0.000000 2 0.354274787682E-03 0.139042670437E-09 +AR AREG 2017 03 14 00 00 0.000000 2 -0.428110931490E-07 0.100600951258E-09 +AR AXPV 2017 03 14 00 00 0.000000 2 -0.191376888670E-07 0.139165182364E-09 +AR BADG 2017 03 14 00 00 0.000000 2 0.274220466630E-03 0.139051175575E-09 +AR BAKE 2017 03 14 00 00 0.000000 2 0.104668791261E-07 0.138099234952E-09 +AR BBYS 2017 03 14 00 00 0.000000 2 -0.259234061202E-07 0.139040663223E-09 +AR BJCO 2017 03 14 00 00 0.000000 2 -0.289142740037E-07 0.138111167425E-09 +AR BRAZ 2017 03 14 00 00 0.000000 2 -0.301533084934E-07 0.139181587837E-09 +AR BRMU 2017 03 14 00 00 0.000000 2 0.401284687946E-08 0.139166581536E-09 +AR BRST 2017 03 14 00 00 0.000000 2 -0.194389349265E-07 0.100701471529E-09 +AR BRUX 2017 03 14 00 00 0.000000 2 0.155696571112E-06 0.138095301951E-09 +AR BSHM 2017 03 14 00 00 0.000000 2 0.482052433599E-08 0.139165855511E-09 +AR CALL 2017 03 14 00 00 0.000000 2 -0.166593043627E-08 0.138121473105E-09 +AR CAS1 2017 03 14 00 00 0.000000 2 -0.291105697120E-07 0.819240605702E-10 +AR CCJ2 2017 03 14 00 00 0.000000 2 -0.271131147459E-07 0.988510282789E-10 +AR CHPG 2017 03 14 00 00 0.000000 2 -0.297768864553E-07 0.980335350220E-10 +AR CHTI 2017 03 14 00 00 0.000000 2 -0.110688739643E-07 0.820100130985E-10 +AR CHUR 2017 03 14 00 00 0.000000 2 -0.603884092725E-04 0.139165184352E-09 +AR CKIS 2017 03 14 00 00 0.000000 2 -0.255788990081E-07 0.820655256434E-10 +AR CNMR 2017 03 14 00 00 0.000000 2 -0.427225268142E-07 0.139060808003E-09 +AR COCO 2017 03 14 00 00 0.000000 2 0.109023881593E-03 0.138130742113E-09 +AR CORD 2017 03 14 00 00 0.000000 2 -0.489970414368E-08 0.139070245470E-09 +AR COYQ 2017 03 14 00 00 0.000000 2 0.541193056579E-07 0.138187777807E-09 +AR CPVG 2017 03 14 00 00 0.000000 2 -0.213563561908E-07 0.100741825602E-09 +AR DARW 2017 03 14 00 00 0.000000 2 -0.237789552958E-03 0.985519052117E-10 +AR DGAR 2017 03 14 00 00 0.000000 2 -0.571317555474E-07 0.139111852831E-09 +AR DLF1 2017 03 14 00 00 0.000000 2 -0.288118404286E-07 0.999659577677E-10 +AR DUBO 2017 03 14 00 00 0.000000 2 0.253464657012E-05 0.139038187956E-09 +AR FAIV 2017 03 14 00 00 0.000000 2 -0.915658200477E-09 0.139172637603E-09 +AR FLIN 2017 03 14 00 00 0.000000 2 0.249361417193E-07 0.138100595889E-09 +AR FLRS 2017 03 14 00 00 0.000000 2 -0.499288726501E-08 0.138102694309E-09 +AR FUNC 2017 03 14 00 00 0.000000 2 0.419065385551E-08 0.139173373095E-09 +AR GANP 2017 03 14 00 00 0.000000 2 -0.170754259742E-07 0.995530235155E-10 +AR GLPS 2017 03 14 00 00 0.000000 2 -0.132884806803E-07 0.139062128490E-09 +AR GLSV 2017 03 14 00 00 0.000000 2 0.360244334116E-08 0.139164950359E-09 +AR GMSD 2017 03 14 00 00 0.000000 2 -0.346331308551E-07 0.817285177690E-10 +AR GOP6 2017 03 14 00 00 0.000000 2 -0.386925254588E-07 0.139164565976E-09 +AR GRAC 2017 03 14 00 00 0.000000 2 0.436487765954E-07 0.139044099080E-09 +AR GUAM 2017 03 14 00 00 0.000000 2 -0.844143413420E-08 0.139186365458E-09 +AR GUAT 2017 03 14 00 00 0.000000 2 0.619586179641E-08 0.980343955223E-10 +AR HARB 2017 03 14 00 00 0.000000 2 0.167773397304E-04 0.100004425287E-09 +AR HNPT 2017 03 14 00 00 0.000000 2 0.463206113450E-08 0.138097588891E-09 +AR HOB2 2017 03 14 00 00 0.000000 2 -0.295660522896E-03 0.987048604678E-10 +AR HOFN 2017 03 14 00 00 0.000000 2 0.427447684461E-07 0.138092989635E-09 +AR INEG 2017 03 14 00 00 0.000000 2 0.394571561868E-07 0.139173611661E-09 +AR IQAL 2017 03 14 00 00 0.000000 2 0.840599657426E-08 0.139042954014E-09 +AR ISBA 2017 03 14 00 00 0.000000 2 -0.203187134405E-07 0.138097147629E-09 +AR JFNG 2017 03 14 00 00 0.000000 2 -0.310171809316E-07 0.811755814543E-10 +AR JOG2 2017 03 14 00 00 0.000000 2 0.483184460100E-03 0.996668865844E-10 +AR KARR 2017 03 14 00 00 0.000000 2 -0.257745483264E-07 0.809102804289E-10 +AR KIR8 2017 03 14 00 00 0.000000 2 -0.297436554245E-07 0.100445695699E-09 +AR KIRU 2017 03 14 00 00 0.000000 2 -0.699383906676E-04 0.139161093740E-09 +AR KLOP 2017 03 14 00 00 0.000000 2 -0.146503917542E-07 0.139043889052E-09 +AR KOKV 2017 03 14 00 00 0.000000 2 -0.146305420818E-04 0.100414401276E-09 +AR KOUG 2017 03 14 00 00 0.000000 2 -0.464913611236E-05 0.100952469315E-09 +AR KRGG 2017 03 14 00 00 0.000000 2 0.412490218589E-07 0.992887472668E-10 +AR LHAZ 2017 03 14 00 00 0.000000 2 0.272815080462E-07 0.992407047602E-10 +AR LMMF 2017 03 14 00 00 0.000000 2 -0.175964195350E-07 0.101196695387E-09 +AR LPAL 2017 03 14 00 00 0.000000 2 0.132214303236E-08 0.138107516155E-09 +AR MAC1 2017 03 14 00 00 0.000000 2 0.100444138641E-03 0.139195298058E-09 +AR MAJU 2017 03 14 00 00 0.000000 2 0.279609590293E-03 0.100855051416E-09 +AR MAR7 2017 03 14 00 00 0.000000 2 -0.260983021745E-07 0.139041547992E-09 +AR MARS 2017 03 14 00 00 0.000000 2 0.372278248749E-07 0.138098551664E-09 +AR MAS1 2017 03 14 00 00 0.000000 2 0.352267934772E-03 0.100688231457E-09 +AR MAW1 2017 03 14 00 00 0.000000 2 0.870776347305E-08 0.138124012391E-09 +AR MAYG 2017 03 14 00 00 0.000000 2 -0.171103724991E-07 0.996042288523E-10 +AR MDVJ 2017 03 14 00 00 0.000000 2 0.247526011211E-04 0.138100963606E-09 +AR METG 2017 03 14 00 00 0.000000 2 -0.192686374305E-07 0.997602120513E-10 +AR MGUE 2017 03 14 00 00 0.000000 2 -0.175385572450E-03 0.100724749614E-09 +AR MKEA 2017 03 14 00 00 0.000000 2 0.114903444327E-03 0.139083123165E-09 +AR MOBS 2017 03 14 00 00 0.000000 2 0.338758694321E-03 0.985784981381E-10 +AR MRO1 2017 03 14 00 00 0.000000 2 -0.237483148760E-07 0.811308359155E-10 +AR MYVA 2017 03 14 00 00 0.000000 2 0.329848669892E-07 0.139160192007E-09 +AR NANO 2017 03 14 00 00 0.000000 2 -0.148739716597E-08 0.139050773719E-09 +AR NICO 2017 03 14 00 00 0.000000 2 0.364443740450E-07 0.998367024518E-10 +AR NKLG 2017 03 14 00 00 0.000000 2 -0.240124690875E-07 0.100475930215E-09 +AR NOVM 2017 03 14 00 00 0.000000 2 0.554788393950E-05 0.139201994412E-09 +AR NYA2 2017 03 14 00 00 0.000000 2 -0.211627126422E-03 0.103846461381E-09 +AR OHI2 2017 03 14 00 00 0.000000 2 -0.380920237377E-03 0.139059826125E-09 +AR OHI3 2017 03 14 00 00 0.000000 2 -0.916471911915E-07 0.101234143208E-09 +AR ONS1 2017 03 14 00 00 0.000000 2 -0.265243152276E-07 0.997375231187E-10 +AR OUS2 2017 03 14 00 00 0.000000 2 -0.245206307557E-03 0.994986595728E-10 +AR PADO 2017 03 14 00 00 0.000000 2 0.343739845877E-07 0.139164617427E-09 +AR PARK 2017 03 14 00 00 0.000000 2 -0.273833154980E-07 0.997063232899E-10 +AR PDEL 2017 03 14 00 00 0.000000 2 -0.364576569282E-08 0.139049351868E-09 +AR PERT 2017 03 14 00 00 0.000000 2 -0.255089814340E-07 0.813873012702E-10 +AR PIMO 2017 03 14 00 00 0.000000 2 -0.527259950247E-08 0.139197564352E-09 +AR POTS 2017 03 14 00 00 0.000000 2 0.426719240596E-03 0.139040371227E-09 +AR RAMO 2017 03 14 00 00 0.000000 2 0.376796855714E-03 0.139043129534E-09 +AR REUN 2017 03 14 00 00 0.000000 2 -0.520657003430E-08 0.993413296561E-10 +AR REYK 2017 03 14 00 00 0.000000 2 0.367128692149E-07 0.100733892327E-09 +AR RGDG 2017 03 14 00 00 0.000000 2 -0.213207186802E-07 0.100811210849E-09 +AR RIO2 2017 03 14 00 00 0.000000 2 -0.292983543621E-04 0.139172913604E-09 +AR SAMO 2017 03 14 00 00 0.000000 2 -0.375992530444E-07 0.998599529392E-10 +AR SCH2 2017 03 14 00 00 0.000000 2 0.169026542149E-07 0.139163260506E-09 +AR SCRZ 2017 03 14 00 00 0.000000 2 0.140846496311E-07 0.138124214693E-09 +AR SEYG 2017 03 14 00 00 0.000000 2 -0.343522265062E-07 0.100307604596E-09 +AR SGOC 2017 03 14 00 00 0.000000 2 -0.412326000605E-04 0.138109079962E-09 +AR STJ3 2017 03 14 00 00 0.000000 2 0.121954633885E-03 0.102118586347E-09 +AR STK2 2017 03 14 00 00 0.000000 2 -0.142327368040E-07 0.993362414997E-10 +AR SUTV 2017 03 14 00 00 0.000000 2 -0.234458116748E-08 0.139056518129E-09 +AR SYDN 2017 03 14 00 00 0.000000 2 0.158433673128E-05 0.981812541881E-10 +AR TASH 2017 03 14 00 00 0.000000 2 0.317951980540E-03 0.101472428427E-09 +AR THTG 2017 03 14 00 00 0.000000 2 0.306420024889E-07 0.100707698309E-09 +AR TID1 2017 03 14 00 00 0.000000 2 0.466087147036E-04 0.139202124425E-09 +AR TLSE 2017 03 14 00 00 0.000000 2 -0.316082536798E-07 0.139042983783E-09 +AR TN22 2017 03 14 00 00 0.000000 2 0.271486243997E-03 0.139164622162E-09 +AR TOW2 2017 03 14 00 00 0.000000 2 -0.168763320661E-03 0.986183085402E-10 +AR TSK2 2017 03 14 00 00 0.000000 2 -0.143919778777E-07 0.994633277009E-10 +AR TUVA 2017 03 14 00 00 0.000000 2 -0.328184546598E-07 0.817745999954E-10 +AR ULAB 2017 03 14 00 00 0.000000 2 0.587471847059E-05 0.994809720774E-10 +AR UNBJ 2017 03 14 00 00 0.000000 2 -0.423608958619E-03 0.138096793155E-09 +AR UNSA 2017 03 14 00 00 0.000000 2 -0.354859485610E-03 0.100424438648E-09 +AR URUM 2017 03 14 00 00 0.000000 2 -0.270965628030E-03 0.138103260839E-09 +AR VALD 2017 03 14 00 00 0.000000 2 0.119813523949E-07 0.139044140956E-09 +AR VILL 2017 03 14 00 00 0.000000 2 -0.250553575050E-03 0.100002963679E-09 +AR WHIT 2017 03 14 00 00 0.000000 2 0.439883041259E-04 0.138104290631E-09 +AR WIND 2017 03 14 00 00 0.000000 2 -0.359993692604E-03 0.138097770246E-09 +AR WTZ2 2017 03 14 00 00 0.000000 2 -0.273192492195E-05 0.138095757300E-09 +AR WTZR 2017 03 14 00 00 0.000000 2 -0.417883677723E-06 0.139041872612E-09 +AR WTZZ 2017 03 14 00 00 0.000000 2 0.460546186174E-03 0.998807523353E-10 +AR WUH2 2017 03 14 00 00 0.000000 2 0.482975220213E-03 0.995152886704E-10 +AR XMIS 2017 03 14 00 00 0.000000 2 -0.342191529354E-07 0.811327893969E-10 +AR YARR 2017 03 14 00 00 0.000000 2 0.254524233865E-07 0.138134857837E-09 +AR ZIM2 2017 03 14 00 00 0.000000 2 -0.196701621893E-07 0.138097207823E-09 +AR ZIM3 2017 03 14 00 00 0.000000 2 -0.434649223854E-03 0.139165660631E-09 +AR ZIMJ 2017 03 14 00 00 0.000000 2 -0.115665816132E-03 0.139041743282E-09 +AS C06 2017 03 14 00 00 0.000000 2 0.156048012175E-03 0.139568374139E-09 +AS C07 2017 03 14 00 00 0.000000 2 -0.117480155709E-03 0.139511704251E-09 +AS C08 2017 03 14 00 00 0.000000 2 -0.916024352996E-03 0.139509322339E-09 +AS C09 2017 03 14 00 00 0.000000 2 -0.105193831035E-03 0.139528411276E-09 +AS C10 2017 03 14 00 00 0.000000 2 -0.429984958636E-03 0.139512459593E-09 +AS C12 2017 03 14 00 00 0.000000 2 0.814513686583E-03 0.139504588315E-09 +AS C13 2017 03 14 00 00 0.000000 2 0.552746003759E-03 0.139517810399E-09 +AS C14 2017 03 14 00 00 0.000000 2 0.238607350977E-03 0.139638663926E-09 +AS E01 2017 03 14 00 00 0.000000 2 -0.180592747567E-04 0.835248574939E-10 +AS E02 2017 03 14 00 00 0.000000 2 -0.737295222001E-07 0.809095127183E-10 +AS E08 2017 03 14 00 00 0.000000 2 0.688576902718E-02 0.812515792223E-10 +AS E09 2017 03 14 00 00 0.000000 2 0.704601725768E-02 0.807160713966E-10 +AS E11 2017 03 14 00 00 0.000000 2 0.167286139624E-02 0.804528879842E-10 +AS E12 2017 03 14 00 00 0.000000 2 0.104549774803E-02 0.804632212205E-10 +AS E14 2017 03 14 00 00 0.000000 2 0.654310235836E-02 0.809579495822E-10 +AS E18 2017 03 14 00 00 0.000000 2 0.727118171511E-02 0.801865163053E-10 +AS E19 2017 03 14 00 00 0.000000 2 0.768685362566E-05 0.808181122979E-10 +AS E22 2017 03 14 00 00 0.000000 2 0.404323926462E-02 0.803369977177E-10 +AS E24 2017 03 14 00 00 0.000000 2 -0.168873063605E-03 0.808648709205E-10 +AS E26 2017 03 14 00 00 0.000000 2 0.755088795084E-02 0.803010127045E-10 +AS E30 2017 03 14 00 00 0.000000 2 0.698097899316E-02 0.808388865974E-10 +AS G01 2017 03 14 00 00 0.000000 2 0.512397150908E-04 0.700611417817E-10 +AS G02 2017 03 14 00 00 0.000000 2 0.459417414537E-03 0.625290846714E-10 +AS G03 2017 03 14 00 00 0.000000 2 -0.106958886907E-03 0.700597254299E-10 +AS G05 2017 03 14 00 00 0.000000 2 -0.559372380379E-04 0.624661483004E-10 +AS G06 2017 03 14 00 00 0.000000 2 0.324231587255E-03 0.626344338315E-10 +AS G07 2017 03 14 00 00 0.000000 2 0.373492789782E-03 0.705083072526E-10 +AS G08 2017 03 14 00 00 0.000000 2 -0.526869769997E-04 0.702623337021E-10 +AS G09 2017 03 14 00 00 0.000000 2 0.321575537745E-03 0.698526626630E-10 +AS G10 2017 03 14 00 00 0.000000 2 -0.944648681169E-04 0.649875138337E-10 +AS G11 2017 03 14 00 00 0.000000 2 -0.674783912526E-03 0.703259424631E-10 +AS G12 2017 03 14 00 00 0.000000 2 0.387062407843E-03 0.625874913583E-10 +AS G13 2017 03 14 00 00 0.000000 2 -0.737071901365E-04 0.632456939021E-10 +AS G14 2017 03 14 00 00 0.000000 2 -0.626303056445E-04 0.662280488666E-10 +AS G15 2017 03 14 00 00 0.000000 2 -0.345494059781E-03 0.632217708129E-10 +AS G16 2017 03 14 00 00 0.000000 2 0.288119516655E-04 0.697888811575E-10 E +AS G17 2017 03 14 00 00 0.000000 2 -0.188019710860E-03 0.639805421742E-10 +AS G18 2017 03 14 00 00 0.000000 2 0.604451042253E-03 0.631773708761E-10 +AS G19 2017 03 14 00 00 0.000000 2 -0.510539786571E-03 0.625191486128E-10 +AS G20 2017 03 14 00 00 0.000000 2 0.463941824409E-03 0.630437646777E-10 +AS G21 2017 03 14 00 00 0.000000 2 -0.517487572773E-03 0.628501837628E-10 +AS G22 2017 03 14 00 00 0.000000 2 0.739808458003E-04 0.697126313548E-10 +AS G23 2017 03 14 00 00 0.000000 2 -0.207504772002E-03 0.701304196586E-10 +AS G24 2017 03 14 00 00 0.000000 2 -0.318358420944E-04 0.631512311084E-10 +AS G25 2017 03 14 00 00 0.000000 2 -0.351712063025E-03 0.625434708021E-10 +AS G26 2017 03 14 00 00 0.000000 2 -0.518633616505E-03 0.696901908956E-10 +AS G27 2017 03 14 00 00 0.000000 2 0.223644588863E-03 0.661181305638E-10 +AS G28 2017 03 14 00 00 0.000000 2 0.596720685423E-03 0.666201496011E-10 +AS G29 2017 03 14 00 00 0.000000 2 0.620536117488E-03 0.624404959286E-10 +AS G30 2017 03 14 00 00 0.000000 2 0.160243970566E-03 0.712071749698E-10 +AS G31 2017 03 14 00 00 0.000000 2 0.213655938498E-03 0.633295044142E-10 +AS G32 2017 03 14 00 00 0.000000 2 -0.351301437797E-03 0.646645042426E-10 +AS J01 2017 03 14 00 00 0.000000 2 0.771423030562E-04 0.141215984132E-09 +AS R01 2017 03 14 00 00 0.000000 2 0.906910631065E-05 0.803227013664E-10 +AS R02 2017 03 14 00 00 0.000000 2 0.240061893874E-03 0.803736898945E-10 +AS R03 2017 03 14 00 00 0.000000 2 0.950606681875E-04 0.805255105977E-10 +AS R04 2017 03 14 00 00 0.000000 2 0.207561463999E-03 0.808470222648E-10 +AS R05 2017 03 14 00 00 0.000000 2 -0.868015101006E-04 0.824525390525E-10 +AS R07 2017 03 14 00 00 0.000000 2 0.364126200830E-05 0.804074661382E-10 +AS R08 2017 03 14 00 00 0.000000 2 -0.268218313243E-04 0.805077497052E-10 +AS R09 2017 03 14 00 00 0.000000 2 0.683879174712E-05 0.803556580815E-10 +AS R10 2017 03 14 00 00 0.000000 2 0.182540348892E-04 0.804352202060E-10 +AS R11 2017 03 14 00 00 0.000000 2 0.334956153935E-05 0.803975892467E-10 +AS R13 2017 03 14 00 00 0.000000 2 0.203500100956E-05 0.803086744869E-10 +AS R14 2017 03 14 00 00 0.000000 2 0.460412945174E-03 0.810614565615E-10 +AS R15 2017 03 14 00 00 0.000000 2 0.454875277078E-05 0.805510178969E-10 +AS R16 2017 03 14 00 00 0.000000 2 0.598473659189E-04 0.801425071957E-10 +AS R17 2017 03 14 00 00 0.000000 2 0.299840933361E-04 0.802825542549E-10 +AS R18 2017 03 14 00 00 0.000000 2 0.142728281951E-03 0.802241202719E-10 +AS R19 2017 03 14 00 00 0.000000 2 -0.176731017747E-03 0.802501599231E-10 +AS R20 2017 03 14 00 00 0.000000 2 -0.280572536984E-03 0.806625314262E-10 +AS R21 2017 03 14 00 00 0.000000 2 0.106836982232E-03 0.802996307714E-10 +AS R22 2017 03 14 00 00 0.000000 2 0.230493593751E-03 0.802085352032E-10 +AS R23 2017 03 14 00 00 0.000000 2 0.749051499955E-04 0.802467932740E-10 +AS R24 2017 03 14 00 00 0.000000 2 -0.148076900439E-03 0.804810706946E-10 diff --git a/data/unit_test/clk/gbm20340.clk b/data/unit_test/clk/gbm20340.clk new file mode 100644 index 00000000..5827c470 --- /dev/null +++ b/data/unit_test/clk/gbm20340.clk @@ -0,0 +1,365 @@ + 3.00 C RINEX VERSION / TYPE +EPOS-8 GFZ 20181231 081425 LCL PGM / RUN BY / DATE + 2 AS AR # / TYPES OF DATA +GFZ GeoForschungsZentrum Potsdam ANALYSIS CENTER + 1 # OF CLK REF +kokv 40424M004 ANALYSIS CLK REF +Clocks are re-aligned to broadcast GPS time COMMENT + 127 IGS14 # OF SOLN STA / TRF +mizu 21702M002 -3857170872 3108692907 4004040213SOLN STA NAME / NUM +aira 21742S001 -3530185847 4118797217 3344036730SOLN STA NAME / NUM +algo 40104M002 918129149 -4346071322 4561977912SOLN STA NAME / NUM +alic 50137M001 -4052052698 4212835984 -2545104641SOLN STA NAME / NUM +alrt 40162M001 388042389 -740382459 6302001988SOLN STA NAME / NUM +auck 50209M001 -5105681510 461563997 -3782181039SOLN STA NAME / NUM +bjco 32701M001 6333076446 270973751 704552251SOLN STA NAME / NUM +bjfs 21601M001 -2148744517 4426641162 4044655808SOLN STA NAME / NUM +bogt 41901M001 1744398879 -6116037035 512731894SOLN STA NAME / NUM +brst 10004M004 4231162415 -332746430 4745131066SOLN STA NAME / NUM +brux 13101M010 4027881389 306998728 4919499011SOLN STA NAME / NUM +cas1 66011M001 -901776133 2409383230 -5816748523SOLN STA NAME / NUM +ccj2 21732M002 -4490605163 3483895002 2884928314SOLN STA NAME / NUM +cedu 50138M001 -3753473156 3912741026 -3347959749SOLN STA NAME / NUM +chti 50242M001 -4607856196 -272375395 -4386954200SOLN STA NAME / NUM +chur 40128M002 -236439127 -3307616948 5430049331SOLN STA NAME / NUM +coco 50127M001 -741951031 6190961714 -1337767430SOLN STA NAME / NUM +cusv 21904S001 -1132914958 6092528532 1504633181SOLN STA NAME / NUM +darw 50134M001 -4091359573 4684606434 -1408579186SOLN STA NAME / NUM +dav1 66010M001 486854584 2285099175 -5914955710SOLN STA NAME / NUM +drao 40105M002 -2059165017 -3621108404 4814432234SOLN STA NAME / NUM +dubo 40137M001 -417603942 -4064529835 4881432134SOLN STA NAME / NUM +dund 50212M003 -4388120767 726671975 -4556533182SOLN STA NAME / NUM +fair 40408M001 -2281621948 -1453595962 5756961697SOLN STA NAME / NUM +flin 40135M001 -766174827 -3611375367 5184056208SOLN STA NAME / NUM +glps 42005M002 -33800949 -6377516516 -82154242SOLN STA NAME / NUM +glsv 12356M001 3512888687 2068980084 4888903312SOLN STA NAME / NUM +guam 50501M002 -5071312667 3568363629 1488904400SOLN STA NAME / NUM +guat 40901S001 -56063537 -6174978630 1596665289SOLN STA NAME / NUM +harb 30302M009 5084657608 2670325380 -2768480915SOLN STA NAME / NUM +hofn 10204M002 2679689941 -727951002 5722789555SOLN STA NAME / NUM +hyde 22307M001 1208443990 5966805983 1897077348SOLN STA NAME / NUM +ineg 40507M001 -1260435709 -5788546767 2360339871SOLN STA NAME / NUM +irkj 12313M002 -968328941 3794426505 5018167195SOLN STA NAME / NUM +jplm 40400M007 -2493304839 -4655214918 3565497622SOLN STA NAME / NUM +karr 50139M001 -2713833227 5303935106 -2269513806SOLN STA NAME / NUM +kiru 10403M002 2251420563 862817371 5885476859SOLN STA NAME / NUM +kokv 40424M004 -5543838323 -2054585875 2387810412SOLN STA NAME / NUM +kour 97301M210 3839591324 -5059567588 579957221SOLN STA NAME / NUM +lhaz 21613M002 -106942092 5549269772 3139215201SOLN STA NAME / NUM +lmmf 97205M001 2993387388 -5399363832 1596748150SOLN STA NAME / NUM +mac1 50135M001 -3464038870 1334173197 -5169223902SOLN STA NAME / NUM +mag0 12354M001 -2825810565 1581232923 5477005337SOLN STA NAME / NUM +mas1 31303M002 5439192152 -1522055229 2953455056SOLN STA NAME / NUM +maw1 66004M001 1111287210 2168911193 -5874493598SOLN STA NAME / NUM +mbar 33901M001 5482951138 3260442843 -66519631SOLN STA NAME / NUM +mcm4 66001M003 -1311703046 310814835 -6213255139SOLN STA NAME / NUM +mdo1 40442M012 -1329998952 -5328393363 3236504090SOLN STA NAME / NUM +mdvj 12309M005 2845455779 2160954412 5265993310SOLN STA NAME / NUM +mgue 41558M001 1823327820 -4850352549 -3709085463SOLN STA NAME / NUM +mkea 40477M001 -5464105390 -2495165508 2148291633SOLN STA NAME / NUM +mobs 50182M001 -4130636725 2894953134 -3890530290SOLN STA NAME / NUM +morp 13299S001 3645667651 -107277019 5215053660SOLN STA NAME / NUM +nano 40138M001 -2335726970 -3451608353 4812009888SOLN STA NAME / NUM +nico 14302M001 4359415457 2874117221 3650778001SOLN STA NAME / NUM +nium 50210M001 -5937160895 -1054675234 -2071386025SOLN STA NAME / NUM +nklg 32809M002 6287385710 1071574838 39133174SOLN STA NAME / NUM +novm 12367M002 452260734 3635877582 5203453304SOLN STA NAME / NUM +nril 12364M001 64536876 2253782906 5946363514SOLN STA NAME / NUM +ohi3 66008M006 1525809295 -2432478746 -5676166250SOLN STA NAME / NUM +pado 12750S001 4388881782 924567711 4519588883SOLN STA NAME / NUM +pdel 31906M004 4551595891 -2186892897 3883411002SOLN STA NAME / NUM +pets 12355M003 -3580828385 1399698235 5072185035SOLN STA NAME / NUM +pie1 40456M001 -1640917094 -5014781198 3575447017SOLN STA NAME / NUM +reun 97401M003 3364098939 4907944655 -2293466701SOLN STA NAME / NUM +reyk 10202M001 2587384010 -1043033553 5716564143SOLN STA NAME / NUM +riop 42006M001 1255144950 -6253609441 -182569705SOLN STA NAME / NUM +sch2 40133M002 1448636543 -3385243793 5191047233SOLN STA NAME / NUM +shao 21605M002 -2831733937 4675665772 3275369262SOLN STA NAME / NUM +sthl 30606M003 6104817257 -605827830 -1740738700SOLN STA NAME / NUM +stk2 21731S004 -3642161445 2861487864 4370351228SOLN STA NAME / NUM +syog 66006S002 1766207932 1460290318 -5932297658SOLN STA NAME / NUM +thu3 43001M002 538093235 -1389088119 6180979341SOLN STA NAME / NUM +tidb 50103M108 -4460996924 2682557083 -3674442684SOLN STA NAME / NUM +tlse 10003M009 4627851657 119640288 4372993708SOLN STA NAME / NUM +tow2 50140M001 -5054583366 3275504122 -2091538525SOLN STA NAME / NUM +twtf 23603S002 -2994428566 4951309062 2674496718SOLN STA NAME / NUM +vill 13406M001 4849833559 -335048757 4116015105SOLN STA NAME / NUM +whit 40136M001 -2218338182 -2201205124 5543057473SOLN STA NAME / NUM +wroc 12217M001 3835751061 1177250181 4941605373SOLN STA NAME / NUM +wtzr 14201M010 4075580317 931854035 4801568262SOLN STA NAME / NUM +xmis 50183M001 -1696344715 6039590001 -1149275138SOLN STA NAME / NUM +yakt 12353M002 -1914999246 2308241454 5610225486SOLN STA NAME / NUM +yar2 50107M004 -2389026568 5043317045 -3078529606SOLN STA NAME / NUM +zamb 34601M001 5415352947 2917210171 -1685888618SOLN STA NAME / NUM +zeck 12351M001 3451174392 3060335633 4391955775SOLN STA NAME / NUM +zim2 14001M008 4331299679 567537572 4633133876SOLN STA NAME / NUM +m0se 12772M001 4642432263 1028629682 4236854404SOLN STA NAME / NUM +areg 42202M008 1942816412 -5804077164 -1796884366SOLN STA NAME / NUM +dyng 12602M006 4595220035 2039434171 3912625916SOLN STA NAME / NUM +gop7 11502M006 3979319096 1050312373 4857064703SOLN STA NAME / NUM +grac 10002M010 4581708155 556132898 4389341432SOLN STA NAME / NUM +jfng 21602M006 -2279829043 5004706463 3219777394SOLN STA NAME / NUM +kir8 10422M002 2248126831 865685766 5886424648SOLN STA NAME / NUM +krgg 91201M007 1406336184 3918154600 -4816172882SOLN STA NAME / NUM +kzn2 12374M001 2352345826 2717466558 5251459203SOLN STA NAME / NUM +mar7 10405M003 2998198266 931450097 5533393026SOLN STA NAME / NUM +matg 12734M010 4641952579 1393063006 4133278296SOLN STA NAME / NUM +metg 10503M002 2890652375 1310295644 5513958939SOLN STA NAME / NUM +nrmg 92701M005 -5743538105 1380503887 -2397896064SOLN STA NAME / NUM +ons1 10402M007 3370666707 711819122 5349788224SOLN STA NAME / NUM +seyg 39801M004 3597835919 5240884106 -516780960SOLN STA NAME / NUM +thtg 92201M016 -5246415286 -3077260638 -1913841798SOLN STA NAME / NUM +unb3 40146M002 1761287890 -4078238521 4561417804SOLN STA NAME / NUM +cord 41511M001 2345503861 -4910842925 -3316365240SOLN STA NAME / NUM +laut 50804M002 -6075194655 270923755 -1917189081SOLN STA NAME / NUM +maju 51501M001 -6257572127 950333412 785215569SOLN STA NAME / NUM +naur 50701M001 -6212554902 1442787594 -61006344SOLN STA NAME / NUM +pngm 51006M001 -5367942643 3437432028 -225885602SOLN STA NAME / NUM +pohn 51601M001 -5879158283 2350292700 767748581SOLN STA NAME / NUM +solo 51202M001 -5911340173 2156887721 -1038663621SOLN STA NAME / NUM +tong 50902M001 -5930303522 -500148650 -2286366265SOLN STA NAME / NUM +samo 50603M001 -6129702397 -890028585 -1516806815SOLN STA NAME / NUM +sin1 22601M003 -1507972708 6195613832 148487960SOLN STA NAME / NUM +pen2 11206M007 4052431541 1417705996 4701420206SOLN STA NAME / NUM +stfu 49430S001 -2700404367 -4292605296 3855137517SOLN STA NAME / NUM +chpg 41609M004 4163476681 -4163821987 -2444511096SOLN STA NAME / NUM +rgdg 41507M007 1429870449 -3495334833 -5122722977SOLN STA NAME / NUM +ucal 49106M001 -1641945137 -3664803809 4940009250SOLN STA NAME / NUM +cpvg 39601M001 5626883443 -2380932368 1824483974SOLN STA NAME / NUM +djig 39901M005 4583085965 4250982636 1266243183SOLN STA NAME / NUM +stj3 40101M005 2612588547 -3426820659 4686773822SOLN STA NAME / NUM +yel2 40127M006 -1224442129 -2689174684 5633660375SOLN STA NAME / NUM +cztg 91301M002 2719994802 3463392648 -4598612942SOLN STA NAME / NUM +ptgg 22006M006 -3184364527 5291037220 1590413589SOLN STA NAME / NUM +usn9 40451S009 1112162072 -4842854668 3985497074SOLN STA NAME / NUM +ascg 30602M004 6121151574 -1563978948 -872615316SOLN STA NAME / NUM + 96 # OF SOLN SATS +G01 G02 G03 G04 G05 G06 G07 G08 G09 G10 G11 G12 G13 G14 G15 PRN LIST +G16 G17 G18 G19 G20 G21 G22 G23 G24 G25 G26 G27 G28 G29 G30 PRN LIST +G31 G32 R01 R02 R03 R04 R05 R07 R08 R09 R10 R11 R13 R14 R15 PRN LIST +R17 R18 R19 R20 R21 R22 R23 R24 E01 E02 E03 E04 E05 E07 E08 PRN LIST +E09 E11 E12 E13 E14 E15 E18 E19 E21 E24 E25 E26 E27 E30 E31 PRN LIST +E33 E36 C01 C02 C03 C04 C05 C06 C07 C08 C09 C10 C11 C12 C13 PRN LIST +C14 C16 J01 J02 J03 J07 PRN LIST + END OF HEADER +AR mizu 2018 12 30 0 0 0.000000 1 -0.245818796968E-03 +AR aira 2018 12 30 0 0 0.000000 1 -0.363706137705E-07 +AR algo 2018 12 30 0 0 0.000000 1 -0.105102160232E-04 +AR alic 2018 12 30 0 0 0.000000 1 0.250501441860E-07 +AR alrt 2018 12 30 0 0 0.000000 1 -0.429700459683E-07 +AR auck 2018 12 30 0 0 0.000000 1 -0.166083420992E-07 +AR bjco 2018 12 30 0 0 0.000000 1 -0.302712608641E-07 +AR bjfs 2018 12 30 0 0 0.000000 1 -0.227514919712E-07 +AR bogt 2018 12 30 0 0 0.000000 1 0.115962700395E-07 +AR brst 2018 12 30 0 0 0.000000 1 -0.211137256202E-07 +AR brux 2018 12 30 0 0 0.000000 1 0.143451921992E-06 +AR cas1 2018 12 30 0 0 0.000000 1 -0.339187842451E-07 +AR ccj2 2018 12 30 0 0 0.000000 1 -0.301574487949E-07 +AR cedu 2018 12 30 0 0 0.000000 1 -0.164217661259E-03 +AR chti 2018 12 30 0 0 0.000000 1 -0.136933588277E-07 +AR chur 2018 12 30 0 0 0.000000 1 -0.481838964598E-04 +AR coco 2018 12 30 0 0 0.000000 1 -0.821286738714E-08 +AR cusv 2018 12 30 0 0 0.000000 1 0.171199246739E-07 +AR darw 2018 12 30 0 0 0.000000 1 0.883786175428E-08 +AR dav1 2018 12 30 0 0 0.000000 1 0.241573265743E-03 +AR drao 2018 12 30 0 0 0.000000 1 -0.121683338201E-04 +AR dubo 2018 12 30 0 0 0.000000 1 0.381015540524E-05 +AR dund 2018 12 30 0 0 0.000000 1 -0.141174522183E-07 +AR fair 2018 12 30 0 0 0.000000 1 -0.307898239795E-08 +AR flin 2018 12 30 0 0 0.000000 1 0.285314859348E-07 +AR glps 2018 12 30 0 0 0.000000 1 -0.868653277525E-09 +AR glsv 2018 12 30 0 0 0.000000 1 -0.588859277181E-08 +AR guam 2018 12 30 0 0 0.000000 1 -0.102751274057E-07 +AR guat 2018 12 30 0 0 0.000000 1 0.801030784458E-10 +AR harb 2018 12 30 0 0 0.000000 1 -0.273972535579E-03 +AR hofn 2018 12 30 0 0 0.000000 1 0.421576125800E-07 +AR hyde 2018 12 30 0 0 0.000000 1 0.227972041849E-09 +AR ineg 2018 12 30 0 0 0.000000 1 0.315808955367E-07 +AR irkj 2018 12 30 0 0 0.000000 1 -0.201391018702E-03 +AR jplm 2018 12 30 0 0 0.000000 1 0.407932326184E-03 +AR karr 2018 12 30 0 0 0.000000 1 -0.294700399075E-07 +AR kiru 2018 12 30 0 0 0.000000 1 0.362988242452E-05 +AR kokv 2018 12 30 0 0 0.000000 1 -0.995528740892E-04 +AR kour 2018 12 30 0 0 0.000000 1 -0.305699228483E-03 +AR lhaz 2018 12 30 0 0 0.000000 1 0.276132840499E-07 +AR lmmf 2018 12 30 0 0 0.000000 1 -0.173590280954E-07 +AR mac1 2018 12 30 0 0 0.000000 1 -0.428924394241E-03 +AR mag0 2018 12 30 0 0 0.000000 1 -0.494462595894E-07 +AR mas1 2018 12 30 0 0 0.000000 1 0.293949231853E-03 +AR maw1 2018 12 30 0 0 0.000000 1 -0.258364408956E-09 +AR mbar 2018 12 30 0 0 0.000000 1 0.609769942505E-08 +AR mcm4 2018 12 30 0 0 0.000000 1 -0.956313484451E-08 +AR mdo1 2018 12 30 0 0 0.000000 1 -0.362849588838E-08 +AR mdvj 2018 12 30 0 0 0.000000 1 0.224383801924E-03 +AR mgue 2018 12 30 0 0 0.000000 1 -0.385051199639E-03 +AR mkea 2018 12 30 0 0 0.000000 1 0.280093739431E-03 +AR mobs 2018 12 30 0 0 0.000000 1 0.797219998736E-07 +AR morp 2018 12 30 0 0 0.000000 1 -0.287756928869E-07 +AR nano 2018 12 30 0 0 0.000000 1 0.104294628345E-07 +AR nico 2018 12 30 0 0 0.000000 1 0.426439823872E-07 +AR nium 2018 12 30 0 0 0.000000 1 -0.413749091087E-07 +AR nklg 2018 12 30 0 0 0.000000 1 -0.335928587677E-07 +AR novm 2018 12 30 0 0 0.000000 1 -0.442541577866E-03 +AR nril 2018 12 30 0 0 0.000000 1 -0.470579406678E-07 +AR ohi3 2018 12 30 0 0 0.000000 1 -0.478173485506E-05 +AR pado 2018 12 30 0 0 0.000000 1 0.294041717868E-03 +AR pdel 2018 12 30 0 0 0.000000 1 -0.760382745158E-10 +AR pets 2018 12 30 0 0 0.000000 1 -0.565245564024E-07 +AR pie1 2018 12 30 0 0 0.000000 1 -0.417631495109E-04 +AR reun 2018 12 30 0 0 0.000000 1 -0.228670095903E-08 +AR reyk 2018 12 30 0 0 0.000000 1 0.330400716711E-07 +AR riop 2018 12 30 0 0 0.000000 1 0.622983794301E-07 +AR sch2 2018 12 30 0 0 0.000000 1 0.181984708194E-07 +AR shao 2018 12 30 0 0 0.000000 1 -0.529739667474E-07 +AR sthl 2018 12 30 0 0 0.000000 1 -0.232125819929E-08 +AR stk2 2018 12 30 0 0 0.000000 1 -0.245943335280E-07 +AR syog 2018 12 30 0 0 0.000000 1 -0.226343109046E-07 +AR thu3 2018 12 30 0 0 0.000000 1 -0.529957818392E-07 +AR tidb 2018 12 30 0 0 0.000000 1 -0.636176968175E-07 +AR tlse 2018 12 30 0 0 0.000000 1 -0.271878610810E-07 +AR tow2 2018 12 30 0 0 0.000000 1 -0.170749177757E-06 +AR twtf 2018 12 30 0 0 0.000000 1 -0.362234464770E-03 +AR vill 2018 12 30 0 0 0.000000 1 0.180616346841E-03 +AR whit 2018 12 30 0 0 0.000000 1 0.564314007625E-05 +AR wroc 2018 12 30 0 0 0.000000 1 0.533347072654E-08 +AR wtzr 2018 12 30 0 0 0.000000 1 -0.160286572991E-06 +AR xmis 2018 12 30 0 0 0.000000 1 -0.315008448319E-07 +AR yar2 2018 12 30 0 0 0.000000 1 -0.277874065350E-03 +AR zamb 2018 12 30 0 0 0.000000 1 -0.420209707948E-09 +AR zeck 2018 12 30 0 0 0.000000 1 0.469783980070E-03 +AR zim2 2018 12 30 0 0 0.000000 1 -0.194084792527E-07 +AR m0se 2018 12 30 0 0 0.000000 1 0.445405277633E-07 +AR areg 2018 12 30 0 0 0.000000 1 0.137134523158E-03 +AR dyng 2018 12 30 0 0 0.000000 1 -0.295872209741E-07 +AR gop7 2018 12 30 0 0 0.000000 1 -0.116855364694E-07 +AR grac 2018 12 30 0 0 0.000000 1 0.612327422152E-07 +AR jfng 2018 12 30 0 0 0.000000 1 -0.442745484318E-07 +AR kir8 2018 12 30 0 0 0.000000 1 -0.293415510180E-07 +AR krgg 2018 12 30 0 0 0.000000 1 0.384510149978E-07 +AR kzn2 2018 12 30 0 0 0.000000 1 -0.197643921423E-07 +AR mar7 2018 12 30 0 0 0.000000 1 -0.251676968512E-07 +AR matg 2018 12 30 0 0 0.000000 1 0.285952967462E-07 +AR metg 2018 12 30 0 0 0.000000 1 -0.299505056302E-07 +AR nrmg 2018 12 30 0 0 0.000000 1 0.440682965513E-05 +AR ons1 2018 12 30 0 0 0.000000 1 -0.285597768481E-07 +AR seyg 2018 12 30 0 0 0.000000 1 -0.220978731267E-07 +AR thtg 2018 12 30 0 0 0.000000 1 0.232342212518E-07 +AR unb3 2018 12 30 0 0 0.000000 1 -0.263202942258E-07 +AR cord 2018 12 30 0 0 0.000000 1 0.358449410618E-08 +AR laut 2018 12 30 0 0 0.000000 1 -0.419133106763E-03 +AR maju 2018 12 30 0 0 0.000000 1 0.854555953766E-08 +AR naur 2018 12 30 0 0 0.000000 1 0.110848118394E-08 +AR pngm 2018 12 30 0 0 0.000000 1 -0.339014055558E-07 +AR pohn 2018 12 30 0 0 0.000000 1 -0.460358935333E-03 +AR solo 2018 12 30 0 0 0.000000 1 -0.332814099720E-07 +AR tong 2018 12 30 0 0 0.000000 1 0.280299952890E-03 +AR samo 2018 12 30 0 0 0.000000 1 -0.372608296277E-07 +AR pen2 2018 12 30 0 0 0.000000 1 0.839128177068E-09 +AR stfu 2018 12 30 0 0 0.000000 1 -0.803167889090E-04 +AR chpg 2018 12 30 0 0 0.000000 1 -0.288091160093E-07 +AR rgdg 2018 12 30 0 0 0.000000 1 -0.230800859614E-07 +AR ucal 2018 12 30 0 0 0.000000 1 -0.245257861064E-07 +AR cpvg 2018 12 30 0 0 0.000000 1 -0.227367484382E-07 +AR djig 2018 12 30 0 0 0.000000 1 -0.266175331910E-07 +AR stj3 2018 12 30 0 0 0.000000 1 0.325259839735E-04 +AR yel2 2018 12 30 0 0 0.000000 1 0.392037539798E-03 +AR cztg 2018 12 30 0 0 0.000000 1 -0.238292375628E-07 +AR ptgg 2018 12 30 0 0 0.000000 1 -0.963004582514E-04 +AR usn9 2018 12 30 0 0 0.000000 1 0.110555263865E-06 +AR ascg 2018 12 30 0 0 0.000000 1 -0.295570667799E-07 +AS G01 2018 12 30 0 0 0.000000 1 -0.136819166631E-03 +AS G02 2018 12 30 0 0 0.000000 1 -0.992191237036E-04 +AS G03 2018 12 30 0 0 0.000000 1 0.173523473377E-03 +AS G04 2018 12 30 0 0 0.000000 1 -0.119184677006E-03 +AS G05 2018 12 30 0 0 0.000000 1 0.609157767067E-06 +AS G06 2018 12 30 0 0 0.000000 1 0.307010816677E-03 +AS G07 2018 12 30 0 0 0.000000 1 0.613445481150E-04 +AS G08 2018 12 30 0 0 0.000000 1 -0.127282197425E-03 +AS G09 2018 12 30 0 0 0.000000 1 0.477778267805E-03 +AS G10 2018 12 30 0 0 0.000000 1 0.144074444776E-03 +AS G11 2018 12 30 0 0 0.000000 1 -0.682310695774E-03 +AS G12 2018 12 30 0 0 0.000000 1 0.280545058790E-03 +AS G13 2018 12 30 0 0 0.000000 1 -0.800123320838E-04 +AS G14 2018 12 30 0 0 0.000000 1 -0.939375573141E-04 +AS G15 2018 12 30 0 0 0.000000 1 -0.334330632880E-03 +AS G16 2018 12 30 0 0 0.000000 1 -0.958297461806E-05 +AS G17 2018 12 30 0 0 0.000000 1 -0.118392909861E-04 +AS G18 2018 12 30 0 0 0.000000 1 0.106152630574E-04 +AS G19 2018 12 30 0 0 0.000000 1 -0.368761869539E-03 +AS G20 2018 12 30 0 0 0.000000 1 0.520535383596E-03 +AS G21 2018 12 30 0 0 0.000000 1 -0.278480065051E-03 +AS G22 2018 12 30 0 0 0.000000 1 -0.610633719831E-03 +AS G23 2018 12 30 0 0 0.000000 1 -0.202088413864E-03 +AS G24 2018 12 30 0 0 0.000000 1 -0.601372246853E-04 +AS G25 2018 12 30 0 0 0.000000 1 -0.698440366988E-03 +AS G26 2018 12 30 0 0 0.000000 1 0.818295600829E-04 +AS G27 2018 12 30 0 0 0.000000 1 -0.402891140634E-04 +AS G28 2018 12 30 0 0 0.000000 1 0.760271966296E-03 +AS G29 2018 12 30 0 0 0.000000 1 0.304685044493E-03 +AS G30 2018 12 30 0 0 0.000000 1 -0.275990047612E-04 +AS G31 2018 12 30 0 0 0.000000 1 0.693833673571E-04 +AS G32 2018 12 30 0 0 0.000000 1 -0.297635197299E-03 +AS R01 2018 12 30 0 0 0.000000 1 0.371586391870E-04 +AS R02 2018 12 30 0 0 0.000000 1 0.346828068963E-03 +AS R03 2018 12 30 0 0 0.000000 1 0.153041069858E-03 +AS R04 2018 12 30 0 0 0.000000 1 0.289303074055E-03 +AS R05 2018 12 30 0 0 0.000000 1 0.187952578441E-04 +AS R07 2018 12 30 0 0 0.000000 1 -0.547996183819E-04 +AS R08 2018 12 30 0 0 0.000000 1 0.197689281357E-04 +AS R09 2018 12 30 0 0 0.000000 1 0.462933185858E-04 +AS R10 2018 12 30 0 0 0.000000 1 0.385782483488E-04 +AS R11 2018 12 30 0 0 0.000000 1 -0.518329778402E-04 +AS R13 2018 12 30 0 0 0.000000 1 -0.184468052968E-04 +AS R14 2018 12 30 0 0 0.000000 1 0.344249682819E-04 +AS R15 2018 12 30 0 0 0.000000 1 0.990391976366E-04 +AS R17 2018 12 30 0 0 0.000000 1 0.191934686455E-03 +AS R18 2018 12 30 0 0 0.000000 1 0.288479180081E-04 +AS R19 2018 12 30 0 0 0.000000 1 -0.622959053966E-04 +AS R20 2018 12 30 0 0 0.000000 1 -0.363950881287E-03 +AS R21 2018 12 30 0 0 0.000000 1 -0.226803850822E-04 +AS R22 2018 12 30 0 0 0.000000 1 -0.643888195219E-04 +AS R23 2018 12 30 0 0 0.000000 1 0.199949651795E-03 +AS R24 2018 12 30 0 0 0.000000 1 -0.175485569794E-03 +AS E01 2018 12 30 0 0 0.000000 1 -0.509698474429E-03 +AS E02 2018 12 30 0 0 0.000000 1 0.411814519434E-04 +AS E03 2018 12 30 0 0 0.000000 1 -0.116365822745E-03 +AS E04 2018 12 30 0 0 0.000000 1 -0.189312822432E-03 +AS E05 2018 12 30 0 0 0.000000 1 0.133983123392E-03 +AS E07 2018 12 30 0 0 0.000000 1 -0.102915181702E-03 +AS E08 2018 12 30 0 0 0.000000 1 0.643363106637E-02 +AS E09 2018 12 30 0 0 0.000000 1 0.657369872598E-02 +AS E11 2018 12 30 0 0 0.000000 1 0.571835216776E-02 +AS E12 2018 12 30 0 0 0.000000 1 0.582739805139E-02 +AS E13 2018 12 30 0 0 0.000000 1 0.381096419084E-03 +AS E14 2018 12 30 0 0 0.000000 1 0.646756298193E-02 +AS E15 2018 12 30 0 0 0.000000 1 0.924368040880E-03 +AS E18 2018 12 30 0 0 0.000000 1 0.564516664383E-02 +AS E19 2018 12 30 0 0 0.000000 1 -0.952534428964E-05 +AS E21 2018 12 30 0 0 0.000000 1 -0.511853680315E-03 +AS E24 2018 12 30 0 0 0.000000 1 0.631285380966E-02 +AS E25 2018 12 30 0 0 0.000000 1 0.193932216498E-02 +AS E26 2018 12 30 0 0 0.000000 1 0.507890572558E-02 +AS E27 2018 12 30 0 0 0.000000 1 0.560221451242E-03 +AS E30 2018 12 30 0 0 0.000000 1 0.523011493035E-02 +AS E31 2018 12 30 0 0 0.000000 1 0.945879585577E-03 +AS E33 2018 12 30 0 0 0.000000 1 0.847828509889E-03 +AS E36 2018 12 30 0 0 0.000000 1 0.765752268165E-03 +AS C01 2018 12 30 0 0 0.000000 1 0.232321233407E-04 +AS C02 2018 12 30 0 0 0.000000 1 -0.207419084002E-03 +AS C03 2018 12 30 0 0 0.000000 1 -0.120400060261E-03 +AS C04 2018 12 30 0 0 0.000000 1 -0.235550670288E-03 +AS C05 2018 12 30 0 0 0.000000 1 -0.881691126180E-05 +AS C06 2018 12 30 0 0 0.000000 1 0.211132086188E-03 +AS C07 2018 12 30 0 0 0.000000 1 0.226761651859E-03 +AS C08 2018 12 30 0 0 0.000000 1 0.757124237624E-04 +AS C09 2018 12 30 0 0 0.000000 1 0.407056796909E-03 +AS C10 2018 12 30 0 0 0.000000 1 -0.363799234533E-03 +AS C11 2018 12 30 0 0 0.000000 1 -0.111430807773E-03 +AS C12 2018 12 30 0 0 0.000000 1 0.309472027715E-03 +AS C13 2018 12 30 0 0 0.000000 1 -0.456067333119E-03 +AS C14 2018 12 30 0 0 0.000000 1 0.587427835796E-03 +AS C16 2018 12 30 0 0 0.000000 1 0.104861917536E-04 +AS J01 2018 12 30 0 0 0.000000 1 -0.228125137730E-03 +AS J02 2018 12 30 0 0 0.000000 1 -0.836637030186E-06 +AS J03 2018 12 30 0 0 0.000000 1 0.280614060100E-05 +AS J07 2018 12 30 0 0 0.000000 1 0.495557174885E-03 diff --git a/data/unit_test/clk/wum19923.clk b/data/unit_test/clk/wum19923.clk new file mode 100644 index 00000000..fd223218 --- /dev/null +++ b/data/unit_test/clk/wum19923.clk @@ -0,0 +1,245 @@ + 3.00 C M RINEX VERSION / TYPE + 30.00 INTERVAL +PANDA-CLKDEN WHU 20180331 084200 UTC PGM / RUN BY / DATE +WHU MGEX clock information COMMENT +Clock information consistent with phase and P1/P2 code data COMMENT +Clocks are not re-aligned to broadcast GPS time COMMENT + GPS TIME SYSTEM ID +G CC2NONCC V6.5 P1C1.DCB @ ftp.unibe.ch/aiub/CODE SYS / DCBS APPLIED +R CC2NONCC V6.5 P1C1.DCB @ ftp.unibe.ch/aiub/CODE SYS / DCBS APPLIED +G PANDA-LSQ IGS08_1977.ATX SYS / PCVS APPLIED +R PANDA-LSQ IGS08_1977.ATX SYS / PCVS APPLIED + 2 AR AS # / TYPES OF DATA +WHU GNSS RESEARCH CENTER, WUHAN UNIVERSITY, P.R.CHINA ANALYSIS CENTER + 1 # OF CLK REF +NIST ANALYSIS CLK REF + 139 IGb08 # OF SOLN STA / TRF +NIST -1288398503 -4721696927 4078625351SOLN STA NAME / NUM +NRC1 1112776987 -4341475893 4522955866SOLN STA NAME / NUM +WSRT 3828735662 443305167 5064884837SOLN STA NAME / NUM +ONSA 3370658348 711877329 5349787077SOLN STA NAME / NUM +ALGO 918129160 -4346071314 4561977902SOLN STA NAME / NUM +KOKB -5543838322 -2054585927 2387810384SOLN STA NAME / NUM +WTZR 4075580331 931854021 4801568253SOLN STA NAME / NUM +AMC2 -1248596389 -4819428207 3976505929SOLN STA NAME / NUM +ABMF 2919785772 -5383744976 1774604833SOLN STA NAME / NUM +ADIS 4913652598 3945922799 995383484SOLN STA NAME / NUM +AIRA -3530185828 4118797214 3344036739SOLN STA NAME / NUM +ALIC -4052052661 4212835984 -2545104682SOLN STA NAME / NUM +ALRT 388042404 -740382449 6302001970SOLN STA NAME / NUM +ANTC 1608538534 -4816370495 -3847798286SOLN STA NAME / NUM +ARTU 1843956397 3016203227 5291261777SOLN STA NAME / NUM +ASPA -6100260147 -996502731 -1567977290SOLN STA NAME / NUM +AUCK -5105681495 461563998 -3782181063SOLN STA NAME / NUM +BAKE -289834253 -2756501158 5725162368SOLN STA NAME / NUM +BAKO -1836969436 6065616952 -716257919SOLN STA NAME / NUM +BJCO 6333076451 270973733 704552236SOLN STA NAME / NUM +BJFS -2148744502 4426641179 4044655822SOLN STA NAME / NUM +BOGT 1744398879 -6116037034 512731877SOLN STA NAME / NUM +BRAZ 4115014065 -4550641628 -1741443790SOLN STA NAME / NUM +BRFT 4985393510 -3954993495 -428426536SOLN STA NAME / NUM +BRMU 2304703293 -4874817168 3395187039SOLN STA NAME / NUM +BRST 4231162422 -332746445 4745131055SOLN STA NAME / NUM +BUCU 4093760639 2007794034 4445130100SOLN STA NAME / NUM +CAGS 1096348839 -4335060663 4533255255SOLN STA NAME / NUM +CAS1 -901776133 2409383239 -5816748523SOLN STA NAME / NUM +CCJ2 -4490605172 3483894975 2884928293SOLN STA NAME / NUM +CEDU -3753473122 3912741028 -3347959787SOLN STA NAME / NUM +CHAN -2674427612 3757143088 4391521541SOLN STA NAME / NUM +CHTI -4607856180 -272375421 -4386954219SOLN STA NAME / NUM +CHUM 1228950432 4508079979 4327868524SOLN STA NAME / NUM +CHUR -236439113 -3307616939 5430049321SOLN STA NAME / NUM +CNMR -5087757737 3465029026 1664653845SOLN STA NAME / NUM +CRAO 3783896833 2551404618 4441264394SOLN STA NAME / NUM +CUSV -1132914940 6092528544 1504633189SOLN STA NAME / NUM +DARW -4091359539 4684606416 -1408579238SOLN STA NAME / NUM +DAV1 486854584 2285099180 -5914955710SOLN STA NAME / NUM +DGAR 1916268850 6029977696 -801719474SOLN STA NAME / NUM +DRAO -2059165003 -3621108405 4814432236SOLN STA NAME / NUM +FAIR -2281621936 -1453595960 5756961713SOLN STA NAME / NUM +FALK 2106811389 -3355170744 -4981786242SOLN STA NAME / NUM +FFMJ 4053455683 617729880 4869395848SOLN STA NAME / NUM +FLIN -766174814 -3611375368 5184056214SOLN STA NAME / NUM +FLRS 4221529933 -2549242326 4031398412SOLN STA NAME / NUM +FUNC 5143339223 -1563412541 3421191761SOLN STA NAME / NUM +GLPS -33800989 -6377516508 -82154247SOLN STA NAME / NUM +GODZ 1130773543 -4831253565 3994200448SOLN STA NAME / NUM +GOLD -2353614535 -4641385260 3676976391SOLN STA NAME / NUM +GRAZ 4194423585 1162702927 4647245543SOLN STA NAME / NUM +GUAT -56063532 -6174978650 1596665291SOLN STA NAME / NUM +HARB 5084657613 2670325367 -2768480932SOLN STA NAME / NUM +HOB2 -3950072181 2522415350 -4311637483SOLN STA NAME / NUM +HOFN 2679689934 -727951009 5722789519SOLN STA NAME / NUM +IISC 1337935888 6070317128 1427877238SOLN STA NAME / NUM +INEG -1260435708 -5788546832 2360339891SOLN STA NAME / NUM +IQAL 1036000857 -2631455591 5697819739SOLN STA NAME / NUM +IQQE 2034208134 -5629172503 -2196141694SOLN STA NAME / NUM +IRKJ -968328922 3794426496 5018167199SOLN STA NAME / NUM +ISBA 3808364591 3734430200 3485693684SOLN STA NAME / NUM +KELY 1575558838 -1941827987 5848076600SOLN STA NAME / NUM +KERG 1406337212 3918161104 -4816167392SOLN STA NAME / NUM +KIR0 2248122976 865686824 5886425918SOLN STA NAME / NUM +KIT3 1944944787 4556652325 4004326039SOLN STA NAME / NUM +KOKV -5543838320 -2054585927 2387810384SOLN STA NAME / NUM +KOUR 3839591329 -5059567589 579957211SOLN STA NAME / NUM +KUUJ 772857310 -3558198847 5219096101SOLN STA NAME / NUM +LAMA 3524522683 1329693822 5129846459SOLN STA NAME / NUM +LHAZ -106942056 5549269780 3139215190SOLN STA NAME / NUM +LPGS 2780102928 -4437418911 -3629404306SOLN STA NAME / NUM +MAC1 -3464038853 1334173183 -5169223919SOLN STA NAME / NUM +MAL2 4865385472 4110717453 -331137408SOLN STA NAME / NUM +MANA 407981927 -6222925657 1333529078SOLN STA NAME / NUM +MAR6 2998189234 931451964 5533398850SOLN STA NAME / NUM +MARS 4630532567 433946560 4350142858SOLN STA NAME / NUM +MAS1 5439192152 -1522055243 2953455043SOLN STA NAME / NUM +MAW1 1111287211 2168911197 -5874493597SOLN STA NAME / NUM +MBAR 5482951161 3260442835 -66519643SOLN STA NAME / NUM +MCM4 -1311703052 310814847 -6213255139SOLN STA NAME / NUM +MKEA -5464105374 -2495165547 2148291612SOLN STA NAME / NUM +MOBJ 2936424374 2178374206 5208858497SOLN STA NAME / NUM +MOBS -4130636694 2894953134 -3890530324SOLN STA NAME / NUM +MORP 3645667672 -107277028 5215053662SOLN STA NAME / NUM +MQZG -4580569779 590466280 -4384379726SOLN STA NAME / NUM +NANO -2335726981 -3451608381 4812009937SOLN STA NAME / NUM +NICO 4359415468 2874117206 3650777988SOLN STA NAME / NUM +NIUM -5937160883 -1054675280 -2071386057SOLN STA NAME / NUM +NOT1 4934546040 1321265253 3806456354SOLN STA NAME / NUM +NOVM 452260750 3635877570 5203453304SOLN STA NAME / NUM +NRIL 64536892 2253782901 5946363505SOLN STA NAME / NUM +NTUS -1508023186 6195576570 148799327SOLN STA NAME / NUM +NYAL 1202430344 252626807 6237767761SOLN STA NAME / NUM +OHI2 1525812111 -2432478228 -5676165552SOLN STA NAME / NUM +PARC 1255992539 -3622975221 -5079719164SOLN STA NAME / NUM +PDEL 4551595888 -2186892911 3883410995SOLN STA NAME / NUM +PERT -2368687955 4881316679 -3341795067SOLN STA NAME / NUM +PETS -3580828391 1399698222 5072185037SOLN STA NAME / NUM +PIE1 -1640917086 -5014781196 3575447023SOLN STA NAME / NUM +POVE 2774265578 -5662060165 -959415765SOLN STA NAME / NUM +PRDS -1659603198 -3676725785 4925493460SOLN STA NAME / NUM +PTAG -3184318655 5291065533 1590418255SOLN STA NAME / NUM +QAQ1 2170941859 -2251830026 5539988486SOLN STA NAME / NUM +REYK 2587384024 -1043033547 5716564127SOLN STA NAME / NUM +RIO2 1429907876 -3495354918 -5122698539SOLN STA NAME / NUM +RIOP 1255144943 -6253609432 -182569709SOLN STA NAME / NUM +ROTH 909246209 -2264764177 -5873056290SOLN STA NAME / NUM +SASS 3606145862 875303546 5170194055SOLN STA NAME / NUM +SAVO 4870283744 -3864605366 -1418872393SOLN STA NAME / NUM +SCH2 1448636557 -3385243787 5191047223SOLN STA NAME / NUM +SCOR 1982095804 -798821014 5989464639SOLN STA NAME / NUM +SCUB 1474538008 -5811243264 2168958880SOLN STA NAME / NUM +SFER 5105518839 -555145641 3769803560SOLN STA NAME / NUM +SHAO -2831733915 4675665780 3275369270SOLN STA NAME / NUM +STHL 6104817247 -605827847 -1740738710SOLN STA NAME / NUM +STJO 2612630856 -3426807051 4686757990SOLN STA NAME / NUM +STK2 -3642161439 2861487860 4370351231SOLN STA NAME / NUM +SUTM 5041190279 1916067371 -3397189176SOLN STA NAME / NUM +SYDN -4648240800 2560636450 -3526317875SOLN STA NAME / NUM +TASH 1695944842 4487138638 4190140736SOLN STA NAME / NUM +TEHN 3240498934 4049740412 3701663281SOLN STA NAME / NUM +THU3 538093253 -1389088114 6180979335SOLN STA NAME / NUM +TIXI -1264873457 1569455754 6031003374SOLN STA NAME / NUM +TOW2 -5054583339 3275504133 -2091538564SOLN STA NAME / NUM +TSK2 -3957184873 3310231008 3737703847SOLN STA NAME / NUM +TWTF -2994428546 4951309075 2674496721SOLN STA NAME / NUM +UFPR 3763751685 -4365113933 -2724404500SOLN STA NAME / NUM +ULAB -1257408909 4099404299 4707992573SOLN STA NAME / NUM +UNBJ 1761287902 -4078238520 4561417802SOLN STA NAME / NUM +UNSA 2412830458 -5271936789 -2652208892SOLN STA NAME / NUM +VNDP -2678090537 -4525436934 3597431965SOLN STA NAME / NUM +WHIT -2218338176 -2201205133 5543057483SOLN STA NAME / NUM +WIND 5633708792 1732017988 -2433985532SOLN STA NAME / NUM +YAKT -1914999253 2308241460 5610225491SOLN STA NAME / NUM +YAR3 -2389043686 5043313572 -3078524486SOLN STA NAME / NUM +YELL -1224452939 -2689216205 5633638290SOLN STA NAME / NUM +ZAMB 5415352951 2917210154 -1685888629SOLN STA NAME / NUM +ZECK 3451174405 3060335618 4391955763SOLN STA NAME / NUM + 82 # OF SOLN SATS +G01 G02 G05 G06 G07 G08 G09 G10 G11 G12 G13 G14 G15 G16 G17 PRN LIST +G19 G20 G21 G22 G23 G24 G25 G26 G27 G28 G29 G30 G31 G32 R01 PRN LIST +R02 R03 R04 R05 R06 R07 R08 R09 R10 R11 R13 R14 R15 R16 R17 PRN LIST +R18 R19 R20 R21 R22 R23 R24 E01 E02 E03 E04 E05 E07 E08 E09 PRN LIST +E11 E12 E14 E19 E24 E26 E30 C01 C02 C03 C04 C05 C06 C07 C08 PRN LIST +C09 C10 C11 C12 C13 C14 J01 PRN LIST + END OF HEADER +AS G01 2018 3 14 0 0 0.000000 1 -0.314270819648E-04 +AS G02 2018 3 14 0 0 0.000000 1 0.177589070470E-03 +AS G05 2018 3 14 0 0 0.000000 1 -0.960495677313E-05 +AS G06 2018 3 14 0 0 0.000000 1 0.415276290940E-03 +AS G07 2018 3 14 0 0 0.000000 1 0.226028012719E-03 +AS G08 2018 3 14 0 0 0.000000 1 -0.917024654770E-04 +AS G09 2018 3 14 0 0 0.000000 1 0.509049905251E-03 +AS G10 2018 3 14 0 0 0.000000 1 0.172418705377E-03 +AS G11 2018 3 14 0 0 0.000000 1 -0.734750743796E-03 +AS G12 2018 3 14 0 0 0.000000 1 0.348063943590E-03 +AS G13 2018 3 14 0 0 0.000000 1 -0.929616941864E-04 +AS G14 2018 3 14 0 0 0.000000 1 -0.925235258920E-04 +AS G15 2018 3 14 0 0 0.000000 1 -0.353871683123E-03 +AS G16 2018 3 14 0 0 0.000000 1 0.328912059889E-04 +AS G17 2018 3 14 0 0 0.000000 1 -0.113394639434E-03 +AS G19 2018 3 14 0 0 0.000000 1 -0.448474320124E-03 +AS G20 2018 3 14 0 0 0.000000 1 0.505678203853E-03 +AS G21 2018 3 14 0 0 0.000000 1 -0.417326239108E-03 +AS G22 2018 3 14 0 0 0.000000 1 -0.319566831798E-03 +AS G23 2018 3 14 0 0 0.000000 1 -0.216042073347E-03 +AS G24 2018 3 14 0 0 0.000000 1 -0.446705948487E-04 +AS G25 2018 3 14 0 0 0.000000 1 -0.550474713243E-03 +AS G26 2018 3 14 0 0 0.000000 1 -0.216298245702E-03 +AS G27 2018 3 14 0 0 0.000000 1 0.371995144688E-03 +AS G28 2018 3 14 0 0 0.000000 1 0.699367735228E-03 +AS G29 2018 3 14 0 0 0.000000 1 0.485344041010E-03 +AS G30 2018 3 14 0 0 0.000000 1 0.977502104139E-04 +AS G31 2018 3 14 0 0 0.000000 1 0.138195943442E-03 +AS G32 2018 3 14 0 0 0.000000 1 -0.525985987213E-03 +AS R01 2018 3 14 0 0 0.000000 1 0.258879399494E-04 +AS R02 2018 3 14 0 0 0.000000 1 0.302254665593E-03 +AS R03 2018 3 14 0 0 0.000000 1 0.129189431076E-03 +AS R04 2018 3 14 0 0 0.000000 1 0.255831638667E-03 +AS R05 2018 3 14 0 0 0.000000 1 -0.261537917942E-03 +AS R06 2018 3 14 0 0 0.000000 1 0.131258385860E-03 +AS R07 2018 3 14 0 0 0.000000 1 -0.298711037954E-04 +AS R08 2018 3 14 0 0 0.000000 1 0.361095459913E-04 +AS R09 2018 3 14 0 0 0.000000 1 0.448891153559E-04 +AS R10 2018 3 14 0 0 0.000000 1 0.228972374282E-04 +AS R11 2018 3 14 0 0 0.000000 1 -0.213652030566E-04 +AS R13 2018 3 14 0 0 0.000000 1 -0.581291791537E-05 +AS R14 2018 3 14 0 0 0.000000 1 0.280022578820E-04 +AS R15 2018 3 14 0 0 0.000000 1 -0.485556034235E-05 +AS R16 2018 3 14 0 0 0.000000 1 0.903235358242E-04 +AS R17 2018 3 14 0 0 0.000000 1 0.118977632886E-03 +AS R18 2018 3 14 0 0 0.000000 1 0.190669630855E-03 +AS R19 2018 3 14 0 0 0.000000 1 -0.446408887978E-04 +AS R20 2018 3 14 0 0 0.000000 1 -0.327951308035E-03 +AS R21 2018 3 14 0 0 0.000000 1 0.279966558398E-04 +AS R22 2018 3 14 0 0 0.000000 1 -0.236548432116E-04 +AS R23 2018 3 14 0 0 0.000000 1 0.144105896253E-03 +AS R24 2018 3 14 0 0 0.000000 1 -0.161058594376E-03 +AS E01 2018 3 14 0 0 0.000000 1 -0.294862982544E-03 +AS E02 2018 3 14 0 0 0.000000 1 0.998280430390E-05 +AS E03 2018 3 14 0 0 0.000000 1 -0.671239117697E-05 +AS E04 2018 3 14 0 0 0.000000 1 0.888872911539E-05 +AS E05 2018 3 14 0 0 0.000000 1 0.307255474419E-03 +AS E07 2018 3 14 0 0 0.000000 1 0.711177211136E-04 +AS E08 2018 3 14 0 0 0.000000 1 0.662723450628E-02 +AS E09 2018 3 14 0 0 0.000000 1 0.685221162709E-02 +AS E11 2018 3 14 0 0 0.000000 1 0.184606790078E-02 +AS E12 2018 3 14 0 0 0.000000 1 0.370841170938E-02 +AS E14 2018 3 14 0 0 0.000000 1 0.661883008034E-02 +AS E19 2018 3 14 0 0 0.000000 1 0.228651950944E-04 +AS E24 2018 3 14 0 0 0.000000 1 0.681727605215E-02 +AS E26 2018 3 14 0 0 0.000000 1 0.617140308413E-02 +AS E30 2018 3 14 0 0 0.000000 1 0.600748483422E-02 +AS C01 2018 3 14 0 0 0.000000 1 0.482428758231E-03 +AS C02 2018 3 14 0 0 0.000000 1 -0.287391787321E-03 +AS C03 2018 3 14 0 0 0.000000 1 -0.387165051163E-03 +AS C04 2018 3 14 0 0 0.000000 1 0.325651162645E-04 +AS C05 2018 3 14 0 0 0.000000 1 -0.170475829482E-03 +AS C06 2018 3 14 0 0 0.000000 1 -0.674791627080E-03 +AS C07 2018 3 14 0 0 0.000000 1 0.936739438322E-03 +AS C08 2018 3 14 0 0 0.000000 1 0.229849045102E-03 +AS C09 2018 3 14 0 0 0.000000 1 -0.315765452045E-03 +AS C10 2018 3 14 0 0 0.000000 1 -0.785652281486E-04 +AS C11 2018 3 14 0 0 0.000000 1 -0.424144412365E-03 +AS C12 2018 3 14 0 0 0.000000 1 0.395618080859E-03 +AS C13 2018 3 14 0 0 0.000000 1 -0.242565222071E-03 +AS C14 2018 3 14 0 0 0.000000 1 0.290821368995E-03 +AS J01 2018 3 14 0 0 0.000000 1 -0.601014985841E-04 diff --git a/data/unit_test/sp3/com19402.sp3 b/data/unit_test/sp3/com19402.sp3 new file mode 100644 index 00000000..7a1da03a --- /dev/null +++ b/data/unit_test/sp3/com19402.sp3 @@ -0,0 +1,100 @@ +#cP2017 3 14 0 0 0.00000000 97 d+D IGS14 FIT AIUB +## 1940 172800.00000000 900.00000000 57826 0.0000000000000 ++ 76 G01G02G03G04G05G06G07G08G09G10G11G12G13G14G15G16G17 ++ G18G19G20G21G22G23G24G25G26G27G28G29G30G31G32R01R02 ++ R03R04R05R07R08R09R10R11R13R14R15R16R17R18R19R20R21 ++ R22R23R24E01E02E08E09E11E12E14E18E19E22E24E26E30C06 ++ C07C08C09C10C12C13C14J01 0 0 0 0 0 0 0 0 0 +++ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +++ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +++ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +++ 5 5 5 5 5 5 5 5 5 5 5 5 5 0 0 0 0 +++ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +%c M cc GPS ccc cccc cccc cccc cccc ccccc ccccc ccccc ccccc +%c cc cc ccc ccc cccc cccc cccc cccc ccccc ccccc ccccc ccccc +%f 1.2500000 1.025000000 0.00000000000 0.000000000000000 +%f 0.0000000 0.000000000 0.00000000000 0.000000000000000 +%i 0 0 0 0 0 0 0 0 0 +%i 0 0 0 0 0 0 0 0 0 +/* CODE MGEX orbits and clocks +/* of DOY 17073 +/* +/* PCV:IGS14 OL/AL:FES2004 NONE YN ORB:CoN CLK:CoN +* 2017 3 14 0 0 0.00000000 +PG01 14000.457738 -21359.123323 6675.390241 51.239715 +PG02 -16273.905423 1779.532326 -20355.139566 459.417415 +PG03 17551.114209 -12969.316353 -15129.546849 -106.958887 +PG04 20101.384788 8361.308042 -15626.922154 999999.999999 +PG05 -26463.243312 1780.539029 -2891.748478 -55.937238 +PG06 -10180.970298 -12989.096093 -20784.412589 324.231587 +PG07 5895.089429 -24838.971002 6634.480758 373.492790 +PG08 14420.505976 -5805.292676 21604.418663 -52.686977 +PG09 -4444.422158 -22016.074161 -14198.357357 321.575538 +PG10 14379.543985 11584.348288 19152.589095 -94.464868 +PG11 11450.952138 -18753.602526 14388.826505 -674.783913 +PG12 -20594.214901 10233.704874 -13242.603164 387.062408 +PG13 -17600.438810 -3451.705135 19448.050645 -73.707190 +PG14 18244.964167 17444.117810 -8254.666430 -62.630306 +PG15 -13251.165761 8814.969318 21119.461093 -345.494060 +PG16 26581.608536 726.893110 -3323.143903 28.811952 +PG17 -14958.270466 -22050.862158 462.433415 -188.019711 +PG18 3362.945949 15895.641312 21589.174097 604.451042 +PG19 -17644.511332 -18101.194125 -7902.583416 -510.539787 +PG20 -19969.441286 13252.364288 11299.369080 463.941824 +PG21 631.492940 23893.847469 12206.673956 -517.487573 +PG22 23162.573492 -10166.551030 -7980.099947 73.980846 +PG23 7428.772631 -14658.716691 -20560.076565 -207.504772 +PG24 -14724.508861 19847.069064 9320.650096 -31.835842 +PG25 -7000.741246 15047.372664 -20824.312450 -351.712063 +PG26 22612.209273 5793.021701 -12751.524258 -518.633617 +PG27 19650.253478 7065.825640 16494.065496 223.644589 +PG28 -10182.341101 -13423.334234 21164.900808 596.720685 +PG29 921.313329 20888.200089 -16397.641457 620.536117 +PG30 -3883.119665 -19919.500192 17064.193793 160.243971 +PG31 11041.843849 11165.096966 -21288.210279 213.655938 +PG32 16273.711212 21018.403933 95.306456 -351.301438 +PR01 765.909598 11576.791802 22715.388423 9.069106 +PR02 19084.326877 11504.387944 12488.833775 240.061894 +PR03 24640.724988 4510.001407 -4876.426504 95.060668 +PR04 15439.313307 -5364.194762 -19575.346569 207.561464 +PR05 -2168.787850 -11845.333903 -22496.557256 -86.801510 +PR07 -24567.672089 -4295.700689 5309.096754 3.641262 +PR08 -15907.316907 5087.033567 19330.868625 -26.821831 +PR09 -5193.027238 -10095.140303 22848.973562 6.838792 +PR10 -17910.751123 6321.257215 17041.786896 18.254035 +PR11 -18908.540893 17114.602386 1081.128914 3.349562 +PR13 7306.915663 7877.877492 -23156.169146 2.035001 +PR14 18454.454435 -7605.837483 -15863.143255 460.412945 +PR15 19365.182385 -16343.685356 -3373.249688 4.548753 +PR16 8659.930613 -18565.507448 15250.003680 59.847366 +PR17 11907.157150 5856.302696 21793.446444 29.984093 +PR18 7124.129773 -12117.750083 21286.803754 142.728282 +PR19 -1686.481456 -24099.133681 8186.516245 -176.731018 +PR20 -9647.580212 -21225.537992 -10267.328567 -280.572537 +PR21 -11861.073789 -5998.767139 -21768.101298 106.836982 +PR22 -6485.835949 13446.786594 -20714.087472 230.493594 +PR23 3105.297210 24546.983656 -6222.162873 74.905150 +PR24 9983.736040 21193.888061 10095.885504 -148.076900 +PE01 -6905.389677 -14747.274450 24715.860890 -18.059275 +PE02 6928.706992 14733.655844 -24721.168249 -0.073730 +PE08 28041.502002 8493.001495 -4194.263869 6885.769030 +PE09 -21030.553693 6326.232844 19854.991777 7046.017260 +PE11 -13559.735989 13889.895857 -22347.368725 1672.861400 +PE12 -16869.052596 -7368.394690 -23162.873327 1045.497750 +PE14 6740.970204 -14990.011144 16776.756543 6543.102360 +PE18 -7909.375139 22153.717945 -22394.320012 7271.181720 +PE19 -17003.712449 -18815.027631 -15256.192020 7.686854 +PE22 10866.359699 25148.089772 11206.557701 4043.239260 +PE24 -24489.705165 16412.396854 2509.106828 -168.873064 +PE26 2142.702531 -28371.884503 8175.649425 7550.887950 +PE30 22447.079859 -1288.654640 -19269.282796 6980.978990 +PC06 -13080.576579 21210.171774 34179.077162 156.048012 +PC07 -24623.178490 32109.762716 -12364.345866 -117.480156 +PC08 -9165.600323 34751.450928 -21817.307480 -916.024353 +PC09 4401.525306 27249.857935 32060.634892 -105.193831 +PC10 -12082.197048 32919.937208 -23539.191969 -429.984959 +PC12 17234.145260 2198.575590 21865.374314 814.513687 +PC13 914.485752 41385.428948 -7351.764151 552.746004 +PC14 17150.879322 -11715.889597 -18621.754981 238.607351 +PJ01 -28726.531572 27690.329963 18771.139987 77.142303 +EOF diff --git a/gnss_lib_py/utils/ephemeris_downloader.py b/gnss_lib_py/utils/ephemeris_downloader.py index 0f2bdc6f..3707d4c6 100644 --- a/gnss_lib_py/utils/ephemeris_downloader.py +++ b/gnss_lib_py/utils/ephemeris_downloader.py @@ -51,12 +51,12 @@ is downloaded (COD0MGXFIN). The CODE final SP3 solutions became available starting GPS week 1962 or Aug 13, 2017. The CODE final solution includes: GPS+GLO+GAL+BDS+QZS. More about the CODE solution can -be found in their papers [6]_[7]_. +be found in their papers [6]_ [7]_. If the SP3 date requested is between GPS week 1690 and 1961 or between May 25, 2012 and Aug 12, 2017, then the CODE 'com' short name solution is downloaded. More about the CODE 'com' solution can be found in their -papers [9]_[10]_. +papers [9]_ [10]_. CLK Older than Two Weeks ------------------------ @@ -65,7 +65,7 @@ is downloaded (COD0MGXFIN). The CODE final CLK solutions became available starting GPS week 2113 or July 5th, 2020. The CODE final solution includes: GPS+GLO+GAL+BDS+QZS. More about the CODE solution can -be found in their papers [6]_[7]_. +be found in their papers [6]_ [7]_. If the CLK date requested is between GPS week 2034 and 2112 or between Jan 1, 2019 and July 4th, 2020, then the Wuhan University final @@ -75,7 +75,7 @@ If the CLK date requested is week GPS week 2034 and between Dec 30, 2018 and Dec 31, 2018, then the GFZ short name solution is downloaded (gbm). More about the GFZ 'gbm' solution can be found in their -documentation [13]_[14]_. +documentation [13]_ [14]_. If the CLK date requested is between GPS week 1962 and 2033 or between Aug 13, 2017 and Dec 29th, 2018 then the Wuhan University short name @@ -85,7 +85,7 @@ If the CLK date requested is between GPS week 1710 and 1961 or between Oct 14, 2012 and Aug 12, 2017, then the CODE 'com' short name solution is downloaded. More about the CODE 'com' solution can be found in their -papers [9]_[10]_. +papers [9]_ [10]_. IGS Resources ------------- @@ -172,8 +172,29 @@ def load_ephemeris(file_type, gps_millis, file_paths, verbose) - downloaded_paths = _download_ephemeris(file_type, needed_files, - download_directory, verbose) + try: + downloaded_paths = _download_ephemeris(file_type, + needed_files, + download_directory, verbose) + except ftplib.error_perm as err: + # try second options for some files + print(err) + print("Retrying download...") + if "Connection timed out" in str(err): #pragma: no cover + pass + elif "WUM0MGXFIN" in str(err): + needed_files = [(x[0],x[1].replace("WUM0MGXFIN","GFZ0MGXRAP")) + for x in needed_files] + elif "wum" in str(err): + needed_files = [(x[0],x[1].replace("wum","gbm")) + for x in needed_files] + elif "BRDM00DLR_R" in str(err): + needed_files = [(x[0],x[1].replace("BRDM00DLR_R","BRDC00IGS_R")) + for x in needed_files] + + downloaded_paths = _download_ephemeris(file_type, + needed_files, + download_directory, verbose) if verbose: if len(existing_paths) > 0: @@ -626,11 +647,16 @@ def _valid_ephemeris_in_paths(date, possible_types, file_paths=None): if file_paths is None: return False, recommended_file # check compatible file types - for path in file_paths: + for path in file_paths: # exact match if os.path.split(path)[1] + ".Z" == os.path.split(recommended_file[1])[1]: return True, path - for path in file_paths: - if os.path.split(path)[1][3:] + ".Z" == os.path.split(recommended_file[1])[1]: + for path in file_paths: # other short form files + if os.path.split(path)[1][3:] + ".Z" == os.path.split(recommended_file[1])[1][3:]: + return True, path + for path in file_paths: # other long form files + if os.path.split(path)[1][11:] == str(timetuple.tm_year) \ + + str(timetuple.tm_yday).zfill(3) \ + + "0000_01D_05M_ORB.SP3": return True, path # clk from last three days @@ -743,11 +769,18 @@ def _valid_ephemeris_in_paths(date, possible_types, file_paths=None): if file_paths is None: return False, recommended_file # check compatible file types - for path in file_paths: + for path in file_paths: # exact file match if os.path.split(path)[1] + ".Z" == os.path.split(recommended_file[1])[1]: return True, path - for path in file_paths: - if os.path.split(path)[1][3:] + ".Z" == os.path.split(recommended_file[1])[1]: + print("2. looking for:",os.path.split(recommended_file[1])[1][3:]) + for path in file_paths: # other short form files + print("2. found path:",os.path.split(path)[1][3:] + ".Z") + if os.path.split(path)[1][3:] + ".Z" == os.path.split(recommended_file[1])[1][3:]: + return True, path + for path in file_paths: # other long form files + if os.path.split(path)[1][11:] == str(timetuple.tm_year) \ + + str(timetuple.tm_yday).zfill(3) \ + + "0000_01D_30S_CLK.CLK": return True, path # clk for Aug 13, 2017 to Dec 29, 2018 @@ -768,7 +801,12 @@ def _valid_ephemeris_in_paths(date, possible_types, file_paths=None): if os.path.split(path)[1] + ".Z" == os.path.split(recommended_file[1])[1]: return True, path for path in file_paths: - if os.path.split(path)[1][3:] + ".Z" == os.path.split(recommended_file[1])[1]: + if os.path.split(path)[1][3:] + ".Z" == os.path.split(recommended_file[1])[1][3:]: + return True, path + for path in file_paths: # other long form files + if os.path.split(path)[1][11:] == str(timetuple.tm_year) \ + + str(timetuple.tm_yday).zfill(3) \ + + "0000_01D_30S_CLK.CLK": return True, path # clk for Oct 14, 2012 to Aug 12, 2017 @@ -789,9 +827,13 @@ def _valid_ephemeris_in_paths(date, possible_types, file_paths=None): if os.path.split(path)[1] + ".Z" == os.path.split(recommended_file[1])[1]: return True, path for path in file_paths: - if os.path.split(path)[1][3:] + ".Z" == os.path.split(recommended_file[1])[1]: + if os.path.split(path)[1][3:] + ".Z" == os.path.split(recommended_file[1])[1][3:]: + return True, path + for path in file_paths: # other long form files + if os.path.split(path)[1][11:] == str(timetuple.tm_year) \ + + str(timetuple.tm_yday).zfill(3) \ + + "0000_01D_30S_CLK.CLK": return True, path - else: raise RuntimeError(possible_type,"invalid possible_type "\ +"for valid ephemeris") @@ -930,7 +972,7 @@ def _get_rinex_extension(timestamp): """Get file extension of rinex file based on timestamp. GPS and Glonass Rinex files switched from .Z to .gz on - December 1, 2020 [5]_. + December 1, 2020 [15]_. Parameters ---------- @@ -944,7 +986,7 @@ def _get_rinex_extension(timestamp): References ---------- - .. [5] https://cddis.nasa.gov/Data_and_Derived_Products/GNSS/daily_30second_data.html + .. [15] https://cddis.nasa.gov/Data_and_Derived_Products/GNSS/daily_30second_data.html """ # switched from .Z to .gz compression format on December 1st, 2020 diff --git a/tests/utils/test_ephemeris_downloader.py b/tests/utils/test_ephemeris_downloader.py index c4c7a2f9..4063bcff 100644 --- a/tests/utils/test_ephemeris_downloader.py +++ b/tests/utils/test_ephemeris_downloader.py @@ -228,8 +228,9 @@ def test_load_sp3_clk(ephem_datetime, file_type, ephem_path, paths): @pytest.mark.parametrize('ephem_datetime', [ - datetime(2021, 4, 28, 12, tzinfo=timezone.utc), + datetime(2017, 3, 14, 12, tzinfo=timezone.utc), datetime(2020, 5, 17, 11, 17, 1, tzinfo=timezone.utc), + datetime(2021, 4, 28, 12, tzinfo=timezone.utc), datetime(2023, 3, 14, 11, 17, 1, tzinfo=timezone.utc), ]) @pytest.mark.parametrize('possible_types', @@ -237,16 +238,59 @@ def test_load_sp3_clk(ephem_datetime, file_type, ephem_path, paths): ["sp3_rapid_CODE"], ["sp3_rapid_GFZ"], ["sp3_final_CODE"], + ["sp3_short_CODE"], + ]) +@pytest.mark.parametrize('paths', + [ + lazy_fixture("all_ephem_paths"), + ]) +def test_sp3_different_source(ephem_datetime, possible_types, paths): + """Test using a different source for sp3. + + Parameters + ---------- + ephem_datetime : datetime.datetime + Ephemeris clock time + possible_types : list + What file types would fulfill the requirement in preference + order. + paths : string or path-like + Paths to existing ephemeris files if they exist. + + """ + + valid, file = ed._valid_ephemeris_in_paths(ephem_datetime.date(), + possible_types, + paths) + assert valid + assert os.path.getsize(file) > 0. + +@pytest.mark.parametrize('ephem_datetime', + [ + datetime(2017, 3, 14, 12, tzinfo=timezone.utc), + datetime(2018, 3, 14, 12, tzinfo=timezone.utc), + datetime(2018, 12, 30, 12, tzinfo=timezone.utc), + datetime(2019, 3, 14, 12, tzinfo=timezone.utc), + datetime(2020, 5, 17, 11, 17, 1, tzinfo=timezone.utc), + datetime(2021, 4, 28, 12, tzinfo=timezone.utc), + datetime(2023, 3, 14, 11, 17, 1, tzinfo=timezone.utc), + ]) +@pytest.mark.parametrize('possible_types', + [ ["clk_rapid_CODE"], ["clk_rapid_GFZ"], ["clk_final_CODE"], + ["clk_final_WUM"], + ["clk_short_GFZ"], + ["clk_short_WUM"], + ["clk_short_CODE"], ]) @pytest.mark.parametrize('paths', [ lazy_fixture("all_ephem_paths"), ]) -def test_sp3_clk_different_source(ephem_datetime, possible_types, paths): - """Test using a different source for sp3 and clk. +def test_clk_different_source(ephem_datetime, possible_types, paths): + """Test using a different source for clk. Parameters ---------- @@ -259,13 +303,17 @@ def test_sp3_clk_different_source(ephem_datetime, possible_types, paths): Paths to existing ephemeris files if they exist. """ - valid, file = ed._valid_ephemeris_in_paths(ephem_datetime.date(), possible_types, paths) assert valid assert os.path.getsize(file) > 0. + # test version without any paths added + valid, file = ed._valid_ephemeris_in_paths(ephem_datetime.date(), + possible_types) + assert not valid + def test_extract_ephemeris_dates(): """Test extracting the correct days from timestamps. @@ -415,8 +463,31 @@ def test_ftp_download(ephem_download_path): file_paths=paths, verbose=True) + # test when WUM0MGXFIN doesn't exist and is replaced + paths = ed.load_ephemeris("clk", + tc.datetime_to_gps_millis(datetime(2020,6,7,12, + tzinfo=timezone.utc)), + download_directory=ephem_download_path, + verbose=True) + assert os.path.getsize(paths[0]) > 1E7 + remove_download_eph(ephem_download_path) + # test when wum doesn't exist and is replaced + paths = ed.load_ephemeris("clk", + tc.datetime_to_gps_millis(datetime(2018,7,15,12, + tzinfo=timezone.utc)), + download_directory=ephem_download_path, + verbose=True) + assert os.path.getsize(paths[0]) > 1E7 + remove_download_eph(ephem_download_path) + # test when BRDM00DLR_R doesn't exist and is replaced + paths = ed.load_ephemeris("rinex_nav", + tc.datetime_to_gps_millis(datetime(2016,6,24,12, + tzinfo=timezone.utc)), + download_directory=ephem_download_path, + verbose=True) + assert os.path.getsize(paths[0]) > 1E6 remove_download_eph(ephem_download_path) def download_igs(requests_url): @@ -510,6 +581,52 @@ def test_verify_ephemeris(): assert len(existing_paths) == 0 assert needed_files[0][0] == 'igs-ftp.bkg.bund.de' + clk_dates = [ + tc.datetime_to_gps_millis(datetime(2017, 3, 14, 12, + tzinfo=timezone.utc)), + tc.datetime_to_gps_millis(datetime(2018, 3, 14, 12, + tzinfo=timezone.utc)), + tc.datetime_to_gps_millis(datetime(2018, 12, 30, 12, + tzinfo=timezone.utc)), + tc.datetime_to_gps_millis(datetime(2019, 3, 14, 12, + tzinfo=timezone.utc)), + ] + for gps_millis in clk_dates: + existing_paths, needed_files = ed._verify_ephemeris("clk", + gps_millis, + verbose=True) + assert len(existing_paths) == 0 + assert len(needed_files) == 1 + + sp3_dates = [ + tc.datetime_to_gps_millis(datetime(2017, 3, 14, 12, + tzinfo=timezone.utc)), + ] + for gps_millis in sp3_dates: + existing_paths, needed_files = ed._verify_ephemeris("sp3", + gps_millis, + verbose=True) + assert len(existing_paths) == 0 + assert len(needed_files) == 1 + + with pytest.raises(RuntimeError) as excinfo: + ed._verify_ephemeris("rinex_nav", + tc.datetime_to_gps_millis(datetime(2012,12,31,12, + tzinfo=timezone.utc))) + assert "rinex nav" in str(excinfo.value) + + with pytest.raises(RuntimeError) as excinfo: + ed._verify_ephemeris("sp3", + tc.datetime_to_gps_millis(datetime(2012,5,24,12, + tzinfo=timezone.utc))) + assert "sp3" in str(excinfo.value) + + with pytest.raises(RuntimeError) as excinfo: + ed._verify_ephemeris("clk", + tc.datetime_to_gps_millis(datetime(2012,10,13,12, + tzinfo=timezone.utc))) + assert "clk" in str(excinfo.value) + def test_valid_ephemeris(all_ephem_paths,sp3_path,clk_path): """Extra tests for full valid coverage. From f79f9f5cdcad2cfb218dc44d4edf27df596a08a7 Mon Sep 17 00:00:00 2001 From: betaBison Date: Mon, 6 Nov 2023 14:49:37 -0800 Subject: [PATCH 4/7] remove print statements --- gnss_lib_py/utils/ephemeris_downloader.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/gnss_lib_py/utils/ephemeris_downloader.py b/gnss_lib_py/utils/ephemeris_downloader.py index 3707d4c6..be52fef6 100644 --- a/gnss_lib_py/utils/ephemeris_downloader.py +++ b/gnss_lib_py/utils/ephemeris_downloader.py @@ -178,8 +178,9 @@ def load_ephemeris(file_type, gps_millis, download_directory, verbose) except ftplib.error_perm as err: # try second options for some files - print(err) - print("Retrying download...") + if verbose: + print(err) + print("Retrying download...") if "Connection timed out" in str(err): #pragma: no cover pass elif "WUM0MGXFIN" in str(err): @@ -772,9 +773,7 @@ def _valid_ephemeris_in_paths(date, possible_types, file_paths=None): for path in file_paths: # exact file match if os.path.split(path)[1] + ".Z" == os.path.split(recommended_file[1])[1]: return True, path - print("2. looking for:",os.path.split(recommended_file[1])[1][3:]) for path in file_paths: # other short form files - print("2. found path:",os.path.split(path)[1][3:] + ".Z") if os.path.split(path)[1][3:] + ".Z" == os.path.split(recommended_file[1])[1][3:]: return True, path for path in file_paths: # other long form files From 28014bcf1ff117c4d550b609c22582ce9ffbddf4 Mon Sep 17 00:00:00 2001 From: betaBison Date: Mon, 6 Nov 2023 18:34:40 -0800 Subject: [PATCH 5/7] handle missing directory outliers --- gnss_lib_py/utils/ephemeris_downloader.py | 46 ++++++++++++++++++----- tests/utils/test_ephemeris_downloader.py | 6 ++- 2 files changed, 41 insertions(+), 11 deletions(-) diff --git a/gnss_lib_py/utils/ephemeris_downloader.py b/gnss_lib_py/utils/ephemeris_downloader.py index be52fef6..05a8c5d9 100644 --- a/gnss_lib_py/utils/ephemeris_downloader.py +++ b/gnss_lib_py/utils/ephemeris_downloader.py @@ -112,8 +112,6 @@ """ -# CLK: 2020, 7, 2 - __authors__ = "Shubh Gupta, Ashwin Kanhere, Derek Knowles" __date__ = "13 July 2021" @@ -171,7 +169,6 @@ def load_ephemeris(file_type, gps_millis, constellations, file_paths, verbose) - try: downloaded_paths = _download_ephemeris(file_type, needed_files, @@ -180,22 +177,53 @@ def load_ephemeris(file_type, gps_millis, # try second options for some files if verbose: print(err) - print("Retrying download...") if "Connection timed out" in str(err): #pragma: no cover - pass - elif "WUM0MGXFIN" in str(err): + if verbose: + print("Retrying download.") + elif "WUM0MGXFIN" in str(err) and file_type == "clk": + if verbose: + print("Retrying download with GFZ0MGXRAP.") needed_files = [(x[0],x[1].replace("WUM0MGXFIN","GFZ0MGXRAP")) for x in needed_files] - elif "wum" in str(err): + elif "wum" in str(err) and file_type == "clk": + if verbose: + print("Retrying download with gbm.") needed_files = [(x[0],x[1].replace("wum","gbm")) for x in needed_files] - elif "BRDM00DLR_R" in str(err): + elif "BRDM00DLR" in str(err) and file_type == "rinex_nav": + if verbose: + print("Retrying download with BRDC00IGS.") + needed_files = [(x[0],x[1].replace("BRDM00DLR_S","BRDC00IGS_R")) + for x in needed_files] needed_files = [(x[0],x[1].replace("BRDM00DLR_R","BRDC00IGS_R")) for x in needed_files] + try: + # second download attempt downloaded_paths = _download_ephemeris(file_type, needed_files, - download_directory, verbose) + download_directory, + verbose) + except ftplib.error_perm as err: + # on Nov 26, 2013 - Dec 5, 2013 the entire DDD/YYp/ directory + # is missing, so use gps and glonass only in that case. + if "BRDC00IGS_R" in str(err) and file_type == "rinex_nav": + if verbose: + print("Retrying download with gps/glonass only.") + _,needed_gps = _verify_ephemeris(file_type, + gps_millis, + ["gps"], + verbose=verbose) + _,needed_glonass = _verify_ephemeris(file_type, + gps_millis, + ["glonass"], + verbose=verbose) + needed_files = needed_gps + needed_glonass + # third download attempt + downloaded_paths = _download_ephemeris(file_type, + needed_files, + download_directory, + verbose) if verbose: if len(existing_paths) > 0: diff --git a/tests/utils/test_ephemeris_downloader.py b/tests/utils/test_ephemeris_downloader.py index 4063bcff..55cfcbf9 100644 --- a/tests/utils/test_ephemeris_downloader.py +++ b/tests/utils/test_ephemeris_downloader.py @@ -482,12 +482,14 @@ def test_ftp_download(ephem_download_path): remove_download_eph(ephem_download_path) # test when BRDM00DLR_R doesn't exist and is replaced + # use case between Nov 26, 2013 - Dec 5, 2013 when the entire + # DDD/YYp/ directory is missing paths = ed.load_ephemeris("rinex_nav", - tc.datetime_to_gps_millis(datetime(2016,6,24,12, + tc.datetime_to_gps_millis(datetime(2013,12,3,12, tzinfo=timezone.utc)), download_directory=ephem_download_path, verbose=True) - assert os.path.getsize(paths[0]) > 1E6 + assert os.path.getsize(paths[0]) > 1E5 remove_download_eph(ephem_download_path) def download_igs(requests_url): From 8baf794f04721f823c3fd4c9373db4694691ac74 Mon Sep 17 00:00:00 2001 From: betaBison Date: Mon, 6 Nov 2023 22:55:26 -0800 Subject: [PATCH 6/7] modify extension date change --- gnss_lib_py/utils/ephemeris_downloader.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gnss_lib_py/utils/ephemeris_downloader.py b/gnss_lib_py/utils/ephemeris_downloader.py index 05a8c5d9..c4c6c9e0 100644 --- a/gnss_lib_py/utils/ephemeris_downloader.py +++ b/gnss_lib_py/utils/ephemeris_downloader.py @@ -999,7 +999,9 @@ def _get_rinex_extension(timestamp): """Get file extension of rinex file based on timestamp. GPS and Glonass Rinex files switched from .Z to .gz on - December 1, 2020 [15]_. + December 1, 2020 [5]_. + + But brdc actually switched on November 30, 2020. Parameters ---------- @@ -1013,11 +1015,11 @@ def _get_rinex_extension(timestamp): References ---------- - .. [15] https://cddis.nasa.gov/Data_and_Derived_Products/GNSS/daily_30second_data.html + .. [5] https://cddis.nasa.gov/Data_and_Derived_Products/GNSS/daily_30second_data.html """ # switched from .Z to .gz compression format on December 1st, 2020 - if timestamp >= datetime(2020, 12, 1, tzinfo=timezone.utc).date(): + if timestamp >= datetime(2020, 11, 30, tzinfo=timezone.utc).date(): extension = '.gz' else: extension = '.Z' From 2e1e64e5406bbb3625d11d7e288aa4aa08f49ec9 Mon Sep 17 00:00:00 2001 From: betaBison Date: Tue, 9 Jan 2024 19:36:17 -0800 Subject: [PATCH 7/7] comment updates based on review of #144 --- gnss_lib_py/utils/ephemeris_downloader.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnss_lib_py/utils/ephemeris_downloader.py b/gnss_lib_py/utils/ephemeris_downloader.py index c4c6c9e0..d0f8e094 100644 --- a/gnss_lib_py/utils/ephemeris_downloader.py +++ b/gnss_lib_py/utils/ephemeris_downloader.py @@ -662,7 +662,7 @@ def _valid_ephemeris_in_paths(date, possible_types, file_paths=None): if os.path.split(path)[1][3:] == str(gps_week).zfill(4) + str((timetuple.tm_wday+1)%7) + ".sp3": return True, path - # sp3 before Aug 13, 2017 and May 25, 2012 or later + # sp3 between May 25, 2012 and Aug 12, 2017 inclusive elif possible_type == "sp3_short_CODE": gps_week, _ = tc.datetime_to_tow(datetime.combine(date, time(tzinfo=timezone.utc))) @@ -1018,7 +1018,7 @@ def _get_rinex_extension(timestamp): .. [5] https://cddis.nasa.gov/Data_and_Derived_Products/GNSS/daily_30second_data.html """ - # switched from .Z to .gz compression format on December 1st, 2020 + if timestamp >= datetime(2020, 11, 30, tzinfo=timezone.utc).date(): extension = '.gz' else: