Convert to UTM
							parent
							
								
									32455c3817
								
							
						
					
					
						commit
						94e045e864
					
				|  | @ -16,6 +16,7 @@ | |||
|  */ | ||||
| 
 | ||||
| #include <GeographicLib/Geocentric.hpp> | ||||
| #include <GeographicLib/UTMUPS.hpp> | ||||
| #include <CppUnitLite/TestHarness.h> | ||||
| 
 | ||||
| #include <iostream> | ||||
|  | @ -24,30 +25,47 @@ using namespace std; | |||
| //using namespace gtsam;
 | ||||
| using namespace GeographicLib; | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
| // Dekalb-Peachtree Airport runway 2L
 | ||||
| double lat = 33.87071, lon = -84.30482000000001, h = 274; | ||||
| 
 | ||||
| //**************************************************************************
 | ||||
| TEST( GeographicLib, Geocentric) { | ||||
| 
 | ||||
|   Geocentric earth(Constants::WGS84_a(), Constants::WGS84_f()); | ||||
| 
 | ||||
|   // Dekalb-Peachtree Airport runway 2L
 | ||||
|   double lat = 33.87071, lon = -84.30482000000001, h = 274; | ||||
| 
 | ||||
|   // From lat-lon to geocentric
 | ||||
|   double X, Y, Z; | ||||
|   earth.Forward(lat, lon, h, X, Y, Z); | ||||
|   Geocentric::WGS84.Forward(lat, lon, h, X, Y, Z); | ||||
|   EXPECT_DOUBLES_EQUAL(526, X/1000, 1); | ||||
|   EXPECT_DOUBLES_EQUAL(-5275, Y/1000, 1); | ||||
|   EXPECT_DOUBLES_EQUAL(3535, Z/1000, 1); | ||||
| 
 | ||||
|   // UTM is 45N 250694.42 3751090.08
 | ||||
|   // Obtained by
 | ||||
|   // http://geographiclib.sourceforge.net/cgi-bin/GeoConvert?input=33.87071+84.30482000000001&zone=-3&prec=2&option=Submit
 | ||||
| 
 | ||||
|   // From geocentric to lat-lon
 | ||||
|   double lat_, lon_, h_; | ||||
|   Geocentric::WGS84.Reverse(X, Y, Z, lat_, lon_, h_); | ||||
|   EXPECT_DOUBLES_EQUAL(lat, lat_, 1e-5); | ||||
|   EXPECT_DOUBLES_EQUAL(lon, lon_, 1e-5); | ||||
|   EXPECT_DOUBLES_EQUAL(h, h_, 1e-5); | ||||
| } | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
| //**************************************************************************
 | ||||
| TEST( GeographicLib, UTM) { | ||||
| 
 | ||||
|   // From lat-lon to UTM
 | ||||
|   int zone; | ||||
|   bool northp; | ||||
|   double x, y; | ||||
|   UTMUPS::Forward(lat, lon, zone, northp, x, y); | ||||
| 
 | ||||
|   // UTM is 16N 749305.58 3751090.08
 | ||||
|   // Obtained by
 | ||||
|   // http://geographiclib.sourceforge.net/cgi-bin/GeoConvert?input=33.87071+-84.30482000000001&zone=-3&prec=2&option=Submit
 | ||||
|   EXPECT(UTMUPS::EncodeZone(zone, northp)=="16N"); | ||||
|   EXPECT_DOUBLES_EQUAL(749305.58, x, 1e-2); | ||||
|   EXPECT_DOUBLES_EQUAL(3751090.08, y, 1e-2); | ||||
| } | ||||
| 
 | ||||
| //**************************************************************************
 | ||||
| int main() { | ||||
|   TestResult tr; | ||||
|   return TestRegistry::runAllTests(tr); | ||||
| } | ||||
| /* ************************************************************************* */ | ||||
| //**************************************************************************
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue