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