From 26d56aa295645d18bf72444624a05bb0116a5a57 Mon Sep 17 00:00:00 2001 From: "S. Kozyr" Date: Sat, 14 Sep 2024 13:06:51 +0300 Subject: [PATCH 1/3] Changed UTM coordinates tests to generate zone letter instead of hemisphere letter. Signed-off-by: S. Kozyr --- .../platform_tests/utm_mgrs_utils_tests.cpp | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/platform/platform_tests/utm_mgrs_utils_tests.cpp b/platform/platform_tests/utm_mgrs_utils_tests.cpp index 67c748dac4..0d892ec60d 100644 --- a/platform/platform_tests/utm_mgrs_utils_tests.cpp +++ b/platform/platform_tests/utm_mgrs_utils_tests.cpp @@ -8,19 +8,19 @@ using namespace utm_mgrs_utils; UNIT_TEST(FormatUTM) { - TEST_EQUAL(FormatUTM(42.0, -93.0), "15N 500000 4649776", ()); - TEST_EQUAL(FormatUTM(31.77597, 35.23406), "36N 711554 3517777", ()); - TEST_EQUAL(FormatUTM(-34.81449, -58.54016), "21S 359135 6146448", ()); - TEST_EQUAL(FormatUTM(36.2361322, -115.0820944), "11N 672349 4011845", ()); + TEST_EQUAL(FormatUTM(42.0, -93.0), "15T 500000 4649776", ()); + TEST_EQUAL(FormatUTM(31.77597, 35.23406), "36R 711554 3517777", ()); + TEST_EQUAL(FormatUTM(-34.81449, -58.54016), "21H 359135 6146448", ()); + TEST_EQUAL(FormatUTM(36.2361322, -115.0820944), "11S 672349 4011845", ()); - TEST_EQUAL(FormatUTM(50.77535, 6.08389), "32N 294409 5628898", ()); - TEST_EQUAL(FormatUTM(40.71435, -74.00597), "18N 583960 4507523", ()); - TEST_EQUAL(FormatUTM(-41.28646, 174.77624), "60S 313784 5427057", ()); - TEST_EQUAL(FormatUTM(-33.92487, 18.42406), "34S 261878 6243186", ()); - TEST_EQUAL(FormatUTM(-32.89018, -68.84405), "19S 514586 6360877", ()); - TEST_EQUAL(FormatUTM(64.83778, -147.71639), "6N 466013 7190568", ()); - TEST_EQUAL(FormatUTM(56.79680, -5.00601), "30N 377486 6296562", ()); - TEST_EQUAL(FormatUTM(84, -5.00601), "30N 476594 9328501", ()); + TEST_EQUAL(FormatUTM(50.77535, 6.08389), "32U 294409 5628898", ()); + TEST_EQUAL(FormatUTM(40.71435, -74.00597), "18T 583960 4507523", ()); + TEST_EQUAL(FormatUTM(-41.28646, 174.77624), "60G 313784 5427057", ()); + TEST_EQUAL(FormatUTM(-33.92487, 18.42406), "34H 261878 6243186", ()); + TEST_EQUAL(FormatUTM(-32.89018, -68.84405), "19H 514586 6360877", ()); + TEST_EQUAL(FormatUTM(64.83778, -147.71639), "6W 466013 7190568", ()); + TEST_EQUAL(FormatUTM(56.79680, -5.00601), "30V 377486 6296562", ()); + TEST_EQUAL(FormatUTM(84, -5.00601), "30X 476594 9328501", ()); TEST_EQUAL(FormatUTM(84.644103, 3.000009), "", ()); // Latitude limit exceeded. TEST_EQUAL(FormatUTM(12.016469, 188.0), "", ()); -- 2.45.3 From 59287f71583b792481a6709ab049aecec22bec04 Mon Sep 17 00:00:00 2001 From: "S. Kozyr" Date: Sat, 14 Sep 2024 13:21:50 +0300 Subject: [PATCH 2/3] Changed generated UTM format to include zone letter instead of hemisphere letter. Signed-off-by: S. Kozyr --- platform/utm_mgrs_utils.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/platform/utm_mgrs_utils.cpp b/platform/utm_mgrs_utils.cpp index e9c49ea288..c39a0abc7e 100644 --- a/platform/utm_mgrs_utils.cpp +++ b/platform/utm_mgrs_utils.cpp @@ -110,7 +110,15 @@ UTMPoint LatLonToUtm(double lat, double lon) double const latTan4 = latTan2 * latTan2; int const zoneNumber = LatLonToZoneNumber(lat, lon); - char const zoneLetter = (lat >= 0.0) ? 'N' : 'S'; + auto const maybeZoneLetter = LatitudeToZoneLetter(lat); + if (!maybeZoneLetter.has_value()) + { + // Invalid latitude should be excluded by FormatUTM and FormatMGRS functions. + ASSERT(false, ("Invalid latitude ",lat,". Can't calculate UTM zone letter")); + return {}; + } + + char const zoneLetter = maybeZoneLetter.value(); double const lonRad = base::DegToRad(lon); double const centralLon = ZoneNumberToCentralLon(zoneNumber); -- 2.45.3 From 362640bf4ff847699df4be6fd27bfc7fd2086172 Mon Sep 17 00:00:00 2001 From: "S. Kozyr" Date: Sat, 14 Sep 2024 20:16:42 +0300 Subject: [PATCH 3/3] Simplified UTM zone check. Signed-off-by: S. Kozyr --- platform/utm_mgrs_utils.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/platform/utm_mgrs_utils.cpp b/platform/utm_mgrs_utils.cpp index c39a0abc7e..9a6f10e66b 100644 --- a/platform/utm_mgrs_utils.cpp +++ b/platform/utm_mgrs_utils.cpp @@ -111,13 +111,7 @@ UTMPoint LatLonToUtm(double lat, double lon) int const zoneNumber = LatLonToZoneNumber(lat, lon); auto const maybeZoneLetter = LatitudeToZoneLetter(lat); - if (!maybeZoneLetter.has_value()) - { - // Invalid latitude should be excluded by FormatUTM and FormatMGRS functions. - ASSERT(false, ("Invalid latitude ",lat,". Can't calculate UTM zone letter")); - return {}; - } - + ASSERT(maybeZoneLetter, (lat)); char const zoneLetter = maybeZoneLetter.value(); double const lonRad = base::DegToRad(lon); -- 2.45.3