def test_cartesian_geodetic(self): a = gpstk.PZ90Ellipsoid().a() eccSq = gpstk.PZ90Ellipsoid().eccSquared() orig = gpstk.Position(100000.0, 20000.0, 30000.0) p = gpstk.Position.convertCartesianToGeodetic(orig, a, eccSq) q = gpstk.Position.convertGeodeticToCartesian(p, a, eccSq) self.assertAlmostEqual(25.33498527029081, p[0], places=4) self.assertAlmostEqual(11.30993247402015, p[1], places=4) self.assertAlmostEqual(-6269217.08416736, p[2], places=4) self.assertAlmostEqual(99999.26269737557, q[0], places=4) self.assertAlmostEqual(19999.85253947465, q[1], places=4) self.assertAlmostEqual(29999.83821484564, q[2], places=4)
def test_geocentric_geodetic(self): a = gpstk.PZ90Ellipsoid().a() eccSq = gpstk.PZ90Ellipsoid().eccSquared() orig = gpstk.Position(40.0, 100.0, 2.5e5, gpstk.Position.Geocentric) p = gpstk.Position.convertGeocentricToGeodetic(orig, a, eccSq) q = gpstk.Position.convertGeodeticToGeocentric(p, a, eccSq) self.assertAlmostEqual(44.90696703221949, p[0], places=4) self.assertAlmostEqual(100.0, p[1], places=4) self.assertAlmostEqual(-6118405.153409380, p[2], places=4) self.assertAlmostEqual(40.00000265961031, q[0], places=4) self.assertAlmostEqual(100.0, q[1], places=4) self.assertAlmostEqual(249998.49546297366, q[2], places=4)
def test_helpers(self): p = gpstk.cartesian(100, 200, 300) self.assertEqual(gpstk.Position.Cartesian, p.getCoordinateSystem()) p = gpstk.spherical(45, 60, 100000, model=gpstk.PZ90Ellipsoid()) self.assertEqual(gpstk.Position.Spherical, p.getCoordinateSystem()) p = gpstk.geodetic(frame=gpstk.ReferenceFrame('WGS84')) self.assertEqual(gpstk.Position.Geodetic, p.getCoordinateSystem()) p = gpstk.geocentric(latitude=60, radius=10000) self.assertEqual(gpstk.Position.Geocentric, p.getCoordinateSystem())
def test_functions(self): system = gpstk.Position.Cartesian ell = gpstk.PZ90Ellipsoid() frame = gpstk.ReferenceFrame(gpstk.ReferenceFrame.PZ90) p = gpstk.Position(10000.0, 150000.0, 200000.0, system, ell, frame) q = gpstk.Position(20000.0, 160000.0, 190000.0, system, ell, frame) self.assertAlmostEqual(1.32756277187, q.elevation(p)) self.assertAlmostEqual(86.18592516570916, p.getPhi()) self.assertAlmostEqual(57.5141089193572, p.geodeticLatitude()) self.assertAlmostEqual(10000.0, p.X())
def test_PZ90(self): p = gpstk.PZ90Ellipsoid() self.assertAlmostEqual(6378136.0, p.a()) self.assertTrue(issubclass(gpstk.WGS84Ellipsoid, gpstk.EllipsoidModel))