test_UTM.cpp
Go to the documentation of this file.
1 #include "gtest/gtest.h"
3 
4 using namespace lanelet;
6 
7 class UTMProjectionTest : public ::testing::Test {
8  public:
9  void SetUp() override {
10  utmProjector = std::make_shared<UtmProjector>(origin);
11  utmProjectorNoOffset = std::make_shared<UtmProjector>(origin, false);
12  utmProjectorNoOffsetThrow = std::make_shared<UtmProjector>(origin, false, true);
13  }
17 
18  double originLat = 49.01439;
19  double originLon = 8.41722;
20  lanelet::GPSPoint originGps{originLat, originLon, 0.};
21  lanelet::Origin origin{originGps};
22 
23  double originX = 457386.38238563854;
24  double originY = 5429219.051147663;
25  lanelet::BasicPoint3d originMetric{originX, originY, 0.};
26 };
27 
28 TEST_F(UTMProjectionTest, TestForward) { // NOLINT
29  BasicPoint3d metricPoint = utmProjector->forward(originGps);
30  ASSERT_NEAR(metricPoint.x(), 0., 0.001);
31  ASSERT_NEAR(metricPoint.y(), 0., 0.001);
32 
33  metricPoint = utmProjectorNoOffset->forward(originGps);
34  ASSERT_NEAR(metricPoint.x(), originX, 0.001);
35  ASSERT_NEAR(metricPoint.y(), originY, 0.001);
36 }
37 
38 TEST_F(UTMProjectionTest, TestReverse) { // NOLINT
39  lanelet::GPSPoint gpsPoint = utmProjector->reverse({0., 0., 0.});
40  ASSERT_NEAR(gpsPoint.lat, originLat, 0.00001);
41  ASSERT_NEAR(gpsPoint.lon, originLon, 0.00001);
42 
43  gpsPoint = utmProjectorNoOffset->reverse(originMetric);
44  ASSERT_NEAR(gpsPoint.lat, originLat, 0.00001);
45  ASSERT_NEAR(gpsPoint.lon, originLon, 0.00001);
46 }
47 
48 TEST_F(UTMProjectionTest, TestForwardOutOfHemisphere) { // NOLINT
49  // origin is in northern hemisphere
50  double latTest = -originLat; // southern hemisphere
51  ASSERT_NO_THROW(utmProjector->forward({latTest, originLon, 0.})); // NOLINT
52  ASSERT_THROW(utmProjectorNoOffsetThrow->forward({latTest, originLon, 0.}), ForwardProjectionError); // NOLINT
53 }
54 
55 TEST_F(UTMProjectionTest, TestForwardOutOfZoneButInPadding) { // NOLINT
56  // origin is in UTM zone 32
57  double lonTest = 5.; // UTM zone 31 but less than 100km away from zone 32
58  ASSERT_NO_THROW(utmProjector->forward({originLat, lonTest, 0.})); // NOLINT
59  ASSERT_THROW(utmProjectorNoOffsetThrow->forward({originLat, lonTest, 0.}), ForwardProjectionError); // NOLINT
60 }
61 
62 TEST_F(UTMProjectionTest, TestForwardOutOfZoneOutOfPadding) { // NOLINT
63  // origin is in UTM zone 32
64  double lonTest = 0.; // UTM zone 31 and out of padding area of zone 32
65  ASSERT_THROW(utmProjector->forward({originLat, lonTest, 0.}), ForwardProjectionError); // NOLINT
66  ASSERT_THROW(utmProjectorNoOffsetThrow->forward({originLat, lonTest, 0.}), ForwardProjectionError); // NOLINT
67 }
68 
69 TEST_F(UTMProjectionTest, TestReverseOutOfZoneButInPadding) { // NOLINT
70  // origin is in UTM zone 32
71  double x = 207547.; // UTM zone 31 but less than 100km away from zone 32
72  double y = 5436767.;
73  ASSERT_NO_THROW(utmProjectorNoOffset->reverse({x, y, 0.});); // NOLINT
74  ASSERT_THROW(utmProjectorNoOffsetThrow->reverse({x, y, 0.});, ReverseProjectionError); // NOLINT
75 }
76 
77 TEST_F(UTMProjectionTest, TestReverseOutOfZoneOutOfPadding) { // NOLINT
78  // origin is in UTM zone 32
79  double x = 2000000.0; // out of padding area of zone 32
80  double y = 5000000.0;
81  ASSERT_THROW(utmProjectorNoOffset->reverse({x, y, 0.});, ReverseProjectionError); // NOLINT
82  ASSERT_THROW(utmProjectorNoOffsetThrow->reverse({x, y, 0.});, ReverseProjectionError); // NOLINT
83 }
UTMProjectionTest
Definition: test_UTM.cpp:7
lanelet
lanelet::BasicPoint3d
Eigen::Vector3d BasicPoint3d
lanelet::projection::UtmProjector
Definition: UTM.h:7
lanelet::Projector::Ptr
std::shared_ptr< Projector > Ptr
lanelet::ReverseProjectionError
UTMProjectionTest::utmProjector
UtmProjector::Ptr utmProjector
Definition: test_UTM.cpp:14
lanelet::Origin
lanelet::GPSPoint::lat
double lat
UTM.h
lanelet::GPSPoint::lon
double lon
UTMProjectionTest::utmProjectorNoOffset
UtmProjector::Ptr utmProjectorNoOffset
Definition: test_UTM.cpp:15
UTMProjectionTest::SetUp
void SetUp() override
Definition: test_UTM.cpp:9
UtmProjector
lanelet::projection::UtmProjector UtmProjector
Definition: test_UTM.cpp:5
lanelet::ForwardProjectionError
TEST_F
TEST_F(UTMProjectionTest, TestForward)
Definition: test_UTM.cpp:28
UTMProjectionTest::utmProjectorNoOffsetThrow
UtmProjector::Ptr utmProjectorNoOffsetThrow
Definition: test_UTM.cpp:16
lanelet::GPSPoint


lanelet2_projection
Author(s): Maximilian Naumann , Fabian Poggenhans , Jan-Hendrik Pauls , MichaƂ Antkiewicz
autogenerated on Thu Mar 6 2025 03:26:06