From ebfada084239563131438609a5af147f94127865 Mon Sep 17 00:00:00 2001 From: Gene Payne Date: Tue, 30 May 2023 15:15:31 -0600 Subject: [PATCH 1/5] Add support for epoch date with or without dashes between elements --- modules/space/kepler.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/modules/space/kepler.cpp b/modules/space/kepler.cpp index 314823d43a..2a874b2039 100644 --- a/modules/space/kepler.cpp +++ b/modules/space/kepler.cpp @@ -239,8 +239,9 @@ namespace { } double epochFromYMDdSubstring(const std::string& epoch) { - // The epochString is in the form: + // The epochString can be in one of two forms: // YYYYMMDD.ddddddd + // YYYY-MM-DD.ddddddd // With YYYY as the year, MM the month (1 - 12), DD the day of month (1-31), // and dddd the fraction of that day. @@ -258,8 +259,17 @@ namespace { e += ".0"; } // 1, 2 + size_t nDashes = std::count_if( + epoch.begin(), + epoch.end(), + []( char c ) {return c =='-';} + ); + std::string formatString = "{:4}{:2}{:2}{}"; + if (nDashes == 2) { + formatString = "{:4}-{:2}-{:2}{}"; + } auto [res, year, monthNum, dayOfMonthNum, fractionOfDay] = - scn::scan_tuple(e, "{:4}{:2}{:2}{}"); + scn::scan_tuple(e, formatString); if (!res) { throw ghoul::RuntimeError(fmt::format("Error parsing epoch '{}'", epoch)); } From ec11d3686ca3f5b22a021bdd603345de0f61c834 Mon Sep 17 00:00:00 2001 From: GPayne Date: Wed, 31 May 2023 00:05:54 -0600 Subject: [PATCH 2/5] Fix to tolerate double quote characters in header line --- modules/space/kepler.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/space/kepler.cpp b/modules/space/kepler.cpp index 2a874b2039..58076d7a4b 100644 --- a/modules/space/kepler.cpp +++ b/modules/space/kepler.cpp @@ -608,6 +608,8 @@ std::vector readSbdbFile(std::filesystem::path file) { std::string line; std::getline(f, line); + // Newer versions downloaded from the JPL SBDB website have " around variables + line.erase(remove(line.begin(), line.end(), '\"'), line.end()); if (line != ExpectedHeader) { throw ghoul::RuntimeError(fmt::format( "Expected JPL SBDB file to start with '{}' but found '{}' instead", From 68b0b2fb1050e185ee9fa31a8eb9e7dc788169b5 Mon Sep 17 00:00:00 2001 From: GPayne Date: Wed, 31 May 2023 09:32:54 -0600 Subject: [PATCH 3/5] Limit string length when reporting line error --- modules/space/kepler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/space/kepler.cpp b/modules/space/kepler.cpp index 58076d7a4b..850a90807f 100644 --- a/modules/space/kepler.cpp +++ b/modules/space/kepler.cpp @@ -613,7 +613,7 @@ std::vector readSbdbFile(std::filesystem::path file) { if (line != ExpectedHeader) { throw ghoul::RuntimeError(fmt::format( "Expected JPL SBDB file to start with '{}' but found '{}' instead", - ExpectedHeader, line + ExpectedHeader, line.substr(0, 100) )); } From aa49d6d540c588d7afb64c2906035df458ea7cbd Mon Sep 17 00:00:00 2001 From: GPayne Date: Thu, 1 Jun 2023 09:23:48 -0600 Subject: [PATCH 4/5] Code review change --- modules/space/kepler.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/modules/space/kepler.cpp b/modules/space/kepler.cpp index 850a90807f..1af07182bb 100644 --- a/modules/space/kepler.cpp +++ b/modules/space/kepler.cpp @@ -262,12 +262,9 @@ namespace { size_t nDashes = std::count_if( epoch.begin(), epoch.end(), - []( char c ) {return c =='-';} + [](char c) { return c == '-'; } ); - std::string formatString = "{:4}{:2}{:2}{}"; - if (nDashes == 2) { - formatString = "{:4}-{:2}-{:2}{}"; - } + std::string formatString = (nDashes == 2) ? "{:4}-{:2}-{:2}{}" : "{:4}{:2}{:2}{}"; auto [res, year, monthNum, dayOfMonthNum, fractionOfDay] = scn::scan_tuple(e, formatString); if (!res) { From 76a6ecab22c6b7cc075c9f6eab10549adc316e54 Mon Sep 17 00:00:00 2001 From: Gene Payne Date: Mon, 5 Jun 2023 13:37:58 -0600 Subject: [PATCH 5/5] Updated all sssb asteroid / comet files to sync v3 version --- data/assets/scene/solarsystem/sssb/amor_asteroid.asset | 2 +- data/assets/scene/solarsystem/sssb/apollo_asteroid.asset | 2 +- data/assets/scene/solarsystem/sssb/aten_asteroid.asset | 2 +- data/assets/scene/solarsystem/sssb/atira_asteroid.asset | 2 +- data/assets/scene/solarsystem/sssb/centaur_asteroid.asset | 2 +- data/assets/scene/solarsystem/sssb/chiron-type_comet.asset | 2 +- data/assets/scene/solarsystem/sssb/encke-type_comet.asset | 2 +- data/assets/scene/solarsystem/sssb/halley-type_comet.asset | 2 +- .../scene/solarsystem/sssb/inner_main_belt_asteroid.asset | 2 +- data/assets/scene/solarsystem/sssb/jupiter-family_comet.asset | 2 +- .../assets/scene/solarsystem/sssb/jupiter_trojan_asteroid.asset | 2 +- data/assets/scene/solarsystem/sssb/main_belt_asteroid.asset | 2 +- data/assets/scene/solarsystem/sssb/mars-crossing_asteroid.asset | 2 +- .../scene/solarsystem/sssb/outer_main_belt_asteroid.asset | 2 +- data/assets/scene/solarsystem/sssb/pha.asset | 2 +- .../scene/solarsystem/sssb/transneptunian_object_asteroid.asset | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/data/assets/scene/solarsystem/sssb/amor_asteroid.asset b/data/assets/scene/solarsystem/sssb/amor_asteroid.asset index beadc38112..2c5d7f0979 100644 --- a/data/assets/scene/solarsystem/sssb/amor_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/amor_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Amor Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_amor_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/apollo_asteroid.asset b/data/assets/scene/solarsystem/sssb/apollo_asteroid.asset index a5d0e9f1a9..4b051e11ff 100644 --- a/data/assets/scene/solarsystem/sssb/apollo_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/apollo_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Apollo Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_apollo_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/aten_asteroid.asset b/data/assets/scene/solarsystem/sssb/aten_asteroid.asset index 7e8443b73b..ae3d5f0f72 100644 --- a/data/assets/scene/solarsystem/sssb/aten_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/aten_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Aten Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_aten_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/atira_asteroid.asset b/data/assets/scene/solarsystem/sssb/atira_asteroid.asset index c66267f262..ac1f7023ec 100644 --- a/data/assets/scene/solarsystem/sssb/atira_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/atira_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Atira Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_atira_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset b/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset index e6dc435ac2..8b2468a1bf 100644 --- a/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Centaur Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_centaur_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/chiron-type_comet.asset b/data/assets/scene/solarsystem/sssb/chiron-type_comet.asset index 14ab843d84..48b7f01a89 100644 --- a/data/assets/scene/solarsystem/sssb/chiron-type_comet.asset +++ b/data/assets/scene/solarsystem/sssb/chiron-type_comet.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Chiron-type Comet)", Type = "HttpSynchronization", Identifier = "sssb_data_chiron-type_comet", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/encke-type_comet.asset b/data/assets/scene/solarsystem/sssb/encke-type_comet.asset index 7f81cf5dcf..6ebc6a16a8 100644 --- a/data/assets/scene/solarsystem/sssb/encke-type_comet.asset +++ b/data/assets/scene/solarsystem/sssb/encke-type_comet.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Encke-type Comet)", Type = "HttpSynchronization", Identifier = "sssb_data_encke-type_comet", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/halley-type_comet.asset b/data/assets/scene/solarsystem/sssb/halley-type_comet.asset index 5485aeb1ee..81b8efafec 100644 --- a/data/assets/scene/solarsystem/sssb/halley-type_comet.asset +++ b/data/assets/scene/solarsystem/sssb/halley-type_comet.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Halley-type Comet)", Type = "HttpSynchronization", Identifier = "sssb_data_halley-type_comet", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/inner_main_belt_asteroid.asset b/data/assets/scene/solarsystem/sssb/inner_main_belt_asteroid.asset index fde88485e1..17ea63d52d 100644 --- a/data/assets/scene/solarsystem/sssb/inner_main_belt_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/inner_main_belt_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Inner Main Belt Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_inner_main_belt_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/jupiter-family_comet.asset b/data/assets/scene/solarsystem/sssb/jupiter-family_comet.asset index 40891fed51..fc9aa2e9e2 100644 --- a/data/assets/scene/solarsystem/sssb/jupiter-family_comet.asset +++ b/data/assets/scene/solarsystem/sssb/jupiter-family_comet.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Jupiter Family Comet)", Type = "HttpSynchronization", Identifier = "sssb_data_jupiter-family_comet", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/jupiter_trojan_asteroid.asset b/data/assets/scene/solarsystem/sssb/jupiter_trojan_asteroid.asset index 2606fc2b39..f2ad637137 100644 --- a/data/assets/scene/solarsystem/sssb/jupiter_trojan_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/jupiter_trojan_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Jupiter Trojan Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_jupiter_trojan_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/main_belt_asteroid.asset b/data/assets/scene/solarsystem/sssb/main_belt_asteroid.asset index ba984508ab..850e3d9b9a 100644 --- a/data/assets/scene/solarsystem/sssb/main_belt_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/main_belt_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Main Belt Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_main_belt_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/mars-crossing_asteroid.asset b/data/assets/scene/solarsystem/sssb/mars-crossing_asteroid.asset index d6a681aead..ed44f28a94 100644 --- a/data/assets/scene/solarsystem/sssb/mars-crossing_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/mars-crossing_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Mars-Crossing Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_mars-crossing_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/outer_main_belt_asteroid.asset b/data/assets/scene/solarsystem/sssb/outer_main_belt_asteroid.asset index 669505c62f..3047d60dfa 100644 --- a/data/assets/scene/solarsystem/sssb/outer_main_belt_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/outer_main_belt_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Outer Main Belt Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_outer_main_belt_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/pha.asset b/data/assets/scene/solarsystem/sssb/pha.asset index 6d10eea764..ddc49f421e 100644 --- a/data/assets/scene/solarsystem/sssb/pha.asset +++ b/data/assets/scene/solarsystem/sssb/pha.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Potentially hazardous Asteroids)", Type = "HttpSynchronization", Identifier = "sssb_data_pha", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/transneptunian_object_asteroid.asset b/data/assets/scene/solarsystem/sssb/transneptunian_object_asteroid.asset index b16990e027..33de963562 100644 --- a/data/assets/scene/solarsystem/sssb/transneptunian_object_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/transneptunian_object_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Trans-Neptunian Object Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_transneptunian_object_asteroid", - Version = 2 + Version = 3 })