Exemplo n.º 1
0
    def testDatum(self):
        # datum module tests
        E = Ellipsoid(1000, 1000, 0, name='TestEllipsiod')
        self.test('ellipsoid', E is Ellipsoids.TestEllipsiod, 'True')
        #       print(Ellipsoid())

        T = Transform(name='TestTransform')
        self.test('transform', T is Transforms.TestTransform, 'True')
        #       print(Transform())

        D = Datum(E, T, name='TestDatum')
        self.test('datum', D is Datums.TestDatum, 'True')
        #       print(Datum())

        E = Transforms.ED50
        t = E.inverse().inverse("ED50_")
        self.test('ED50.inverse().inverse()', t == E, 'True')

        R, fmt = Ellipsoids.WGS84.R, '%.4f'
        self.test('meanR', R, fmt % (R_M, ), fmt=fmt)

        E = Datums.WGS84.ellipsoid
        e = (E.a - E.b) / (E.a + E.b) - E.n
        t = (E.toStr(prec=10), 'A=%.10f, e=%.10f, f_=%.10f, n=%.10f(%.10e)' %
             (E.A, E.e, E.f_, E.n, e), 'Alpha6=(%s)' %
             (fStr(E.Alpha6, prec=12, fmt='%.*e', ints=True), ),
             'Beta6=(%s)' % (fStr(E.Beta6, prec=12, fmt='%.*e', ints=True), ))
        self.test(
            'WGS84', t[0],
            "name='WGS84', a=6378137.0, b=6356752.3142499998, f_=298.257223563, f=0.0033528107, e2=0.00669438, e22=0.0067394967, R=6371008.7714166669, Rm=6367435.6797186071, R2=6371007.180920884, R3=6371000.7900107643, Rr=6367449.1458250266"
        )
        self.test(
            'WGS84', t[1],
            "A=6367449.1458234154, e=0.0818191908, f_=298.2572235630, n=0.0016792204(-3.7914875232e-13)"
        )
        self.test(
            'WGS84', t[2],
            "Alpha6=(0, 8.377318206245e-04, 7.608527773572e-07, 1.197645503329e-09, 2.429170607201e-12, 5.711757677866e-15, 1.491117731258e-17)"
        )
        self.test(
            'WGS84', t[3],
            "Beta6=(0, 8.377321640579e-04, 5.905870152220e-08, 1.673482665284e-1, 2.164798040063e-13, 3.787978046169e-16, 7.248748890694e-19)"
        )
Exemplo n.º 2
0
    def testEllipsoids(self):
        # datum module tests
        E = Ellipsoid(1000, 1000, 0, name='TestEllipsiod')
        self.test('ellipsoid', E is Ellipsoids.TestEllipsiod, True)
        #       print(Ellipsoid())

        e = Ellipsoids.unregister('TestEllipsiod')
        self.test(e.name, e, E)

        # to show WGS84 and NAD83 are identical up to 3 decimals
        for E in (Ellipsoids.WGS84, Ellipsoids.GRS80):  # NAD83
            self.subtitle(ellipsoids, E.name)
            self.test('R1', E.R1, R_M, fmt='%.4f')
            self.test('R2', E.R2, '6371007.2', fmt='%.1f')
            self.test('R3', E.R3, '6371000.8', fmt='%.1f')
            self.test('Rr', E.Rr, '6367449.1', fmt='%.1f')  # 6367445.0
            self.test('Rs', E.Rs, '6367435.7', fmt='%.1f')
            self.test('L', E.L, '10001965.7', fmt='%.1f')

            self.test('Rgeocentric',
                      E.Rgeocentric(0),
                      '6378137.000',
                      fmt='%.3f')
            self.test('Rgeocentric',
                      E.Rgeocentric(45),
                      '6367489.544',
                      fmt='%.3f')
            self.test('Rgeocentric',
                      E.Rgeocentric(90),
                      '6356752.314',
                      fmt='%.3f')

            self.test('Rlat', E.Rlat(0), '6378137.000', fmt='%.3f')
            self.test('Rlat', E.Rlat(45), '6367444.657', fmt='%.3f')
            self.test('Rlat', E.Rlat(90), '6356752.314', fmt='%.3f')

            self.test('distance2', fstr(E.distance2(0, 0, 1, 1), prec=3),
                      '156903.472, 45.192')
            self.test('distance2', fstr(E.distance2(0, 0, 10, 10), prec=3),
                      '1569034.719, 45.192')
            self.test('distance2', fstr(E.distance2(40, 40, 50, 50), prec=3),
                      '1400742.676, 37.563')
            self.test('distance2', fstr(E.distance2(70, 70, 80, 80), prec=3),
                      '1179164.848, 18.896')

            self.test('roc2', fstr(E.roc2(0), prec=3),
                      '6335439.327, 6378137.0')
            self.test('roc2', fstr(E.roc2(45), prec=3),
                      '6367381.816, 6388838.29')
            self.test('roc2', fstr(E.roc2(90), prec=3),
                      '6399593.626, 6399593.626')

            self.test('rocBearing',
                      E.rocBearing(0, 0),
                      '6335439.327',
                      fmt='%.3f')
            self.test('rocBearing',
                      E.rocBearing(45, 45),
                      '6378092.008',
                      fmt='%.3f')
            self.test('rocBearing',
                      E.rocBearing(90, 0),
                      '6399593.626',
                      fmt='%.3f')

            self.test('rocGauss', E.rocGauss(0), '6356752.314', fmt='%.3f')
            self.test('rocGauss', E.rocGauss(45), '6378101.030', fmt='%.3f')
            self.test('rocGauss', E.rocGauss(90), '6399593.626', fmt='%.3f')

            self.test('rocMean', E.rocMean(0), '6356716.465', fmt='%.3f')
            self.test('rocMean', E.rocMean(45), '6378092.008', fmt='%.3f')
            self.test('rocMean', E.rocMean(90), '6399593.626', fmt='%.3f')

            self.test('rocMeridional', fstr(E.rocMeridional(0), prec=3),
                      '6335439.327')
            self.test('rocMeridional', fstr(E.rocMeridional(45), prec=3),
                      '6367381.816')
            self.test('rocMeridional', fstr(E.rocMeridional(90), prec=3),
                      '6399593.626')

            self.test('rocPrimeVertical', fstr(E.rocPrimeVertical(0), prec=3),
                      '6378137.0')
            self.test('rocPrimeVertical', fstr(E.rocPrimeVertical(45), prec=3),
                      '6388838.29')
            self.test('rocPrimeVertical', fstr(E.rocPrimeVertical(90), prec=3),
                      '6399593.626')

        self.subtitle(ellipsoids, Ellipsoid.__init__)
        self.test('a, b, None',
                  Ellipsoid(1000, 500, None, name='f_None').f_,
                  2.0)  # coverage
        self.test('a, None, f_',
                  Ellipsoid(1000, None, 2, name='b_None').b, 500.0)  # coverage

        E = Ellipsoids.WGS84.copy()  # coverage
        self.subtitle(ellipsoids, E.name)
        self.test('WGS84.copy', E is not Ellipsoids.WGS84, True)
        self.test('WGS84.copy', E == Ellipsoids.WGS84, True)
        self.test('WGS84.find', Ellipsoids.find(E), None)

        self.test('WGS84.a2_b', E.a2_b, E.a2 / E.b, fmt='%.6f')
        self.test('WGS84.b2_a', E.b2_a, E.b2 / E.a, fmt='%.6f')
        self.test('WGS84.c', E.c, E.R2, fmt='%.6f')
        self.test('WGS84.es', E.es, E.e, fmt='%.6f')
        self.test('WGS84.f2', E.f2, (E.a - E.b) / E.b, fmt='%.6f')
        self.test('WGS84.m2degrees', int(E.m2degrees(E.a * PI_2)), 90)
        self.test('WGS84.area', E.area, '5.101e+14', fmt='%.3e')
        self.test('WGS84.volume', E.volume, '1.083e+21', fmt='%.3e')

        self.test('WGS84.ecef', E.ecef().__class__, EcefKarney)
        self.test('WGS84.ecef', E.ecef().name, E.name)

        t = E.toStr(prec=10)
        self.test(
            'WGS84', t,
            "name='WGS84', a=6378137, b=6356752.3142451793, f_=298.257223563, f=0.0033528107, f2=0.0033640898, n=0.0016792204, e=0.0818191908, e2=0.00669438, e22=0.0067394967, e32=0.0033584313, L=10001965.7293127235, R1=6371008.7714150595, R2=6371007.1809184738, R3=6371000.790009154"
        )
        e = (E.a - E.b) / (E.a + E.b) - E.n
        t = 'A=%.10f, e=%.10f, f_=%.10f, n=%.10f(%.10e)' % (E.A, E.e, E.f_,
                                                            E.n, e)
        self.test(
            'WGS84.', t,
            'A=6367449.1458234144, e=0.0818191908, f_=298.2572235630, n=0.0016792204(-2.1684043450e-19)'
        )

        self.subtitle(ellipsoids, 'Kruegers')

        def _AB(E, K, A, B):
            E.KsOrder = K
            self.test('WGS84.AlphaKs',
                      fstr(E.AlphaKs, prec=12, fmt='%.*e', ints=True), A)
            self.test('WGS84.BetaKs ',
                      fstr(E.BetaKs, prec=12, fmt='%.*e', ints=True), B)

        _AB(
            E, 8,
            '8.377318206245e-04, 7.608527773573e-07, 1.197645503243e-09, 2.429170680397e-12, 5.711818370428e-15, 1.47999793138e-17, 4.107624109371e-20, 1.210785038923e-22',
            '8.37732164058e-04, 5.90587015222e-08, 1.673482665344e-10, 2.164798110491e-13, 3.787930968626e-16, 7.236769021816e-19, 1.493479824778e-21, 3.259522545838e-24'
        )

        _AB(
            E, 6,
            '8.377318206245e-04, 7.608527773572e-07, 1.197645503329e-09, 2.429170607201e-12, 5.711757677866e-15, 1.491117731258e-17',
            '8.37732164058e-04, 5.90587015222e-08, 1.673482665284e-10, 2.164798040063e-13, 3.787978046169e-16, 7.248748890695e-19'
        )

        _AB(
            E, 4,
            '8.377318206304e-04, 7.608527714249e-07, 1.197638001561e-09, 2.443376194522e-12',
            '8.377321640601e-04, 5.905869567934e-08, 1.673488880355e-10, 2.167737763022e-13'
        )

        P = Ellipsoid(E.b, E.a, name='Prolate')
        _TOL = ellipsoids._TOL

        self.subtitle(ellipsoids, P.name)
        for p, e in ((P.a, E.b), (P.b, E.a), (P.n, -E.n), (P.R1, E.R1),
                     (P.R2, E.R2), (P.R3, E.R3), (P.Rbiaxial, E.Rbiaxial),
                     (P.Rgeometric,
                      E.Rgeometric), (P.area, E.area), (P.volume, E.volume)):
            self.test(p.name, p, e, fmt='%.6f', known=abs(p - e) < _TOL)

        for E, el, ob, pr in ((E, True, True, False), (P, True, False, True),
                              (Ellipsoids.Sphere, False, False, False)):
            self.subtitle(ellipsoids, 'AuxiliaryLats ' + E.name)
            self.test('isEllipsoidal', E.isEllipsoidal, el)
            self.test('isOblate', E.isOblate, ob)
            self.test('isProlate', E.isProlate, pr)
            self.test('isSpherical', E.isSpherical, not el)
            for d in range(-90, 91, 30):
                x = 'lat (%d.0)' % (d, )
                for aux in (E.auxAuthalic, E.auxConformal, E.auxGeocentric,
                            E.auxIsometric, E.auxParametric, E.auxRectifying):
                    a = aux(d)
                    t = fstr(a, prec=9)
                    self.test('%s(%d)' % (aux.__name__, d), t, t)
                    self.test('name', a.name, aux.__name__)
                    self.test('inverse',
                              aux(a, inverse=True).toRepr(prec=2), x)

        self.subtitle(ellipsoids, 'Flattenings')
        self.test('_TOL', _TOL, _TOL)
        for n, E in Ellipsoids.items():  # includes f_None, b_None, Prolate
            if E.f and E.f_:
                e = E.f_ - 1 / E.f
                self.test(n + '.f_ - 1 / .f', e, e if abs(e) < _TOL else _TOL)
                e = E.f - 1 / E.f_
                self.test(n + '.f - 1 / .f_', e,
                          e if abs(e) < _TOL else _TOL)  # PYCHOK attr

        self.subtitle(ellipsoids, Ellipsoid2.__name__)
        for n, E in tuple(
                Ellipsoids.items()):  # includes f_None, b_None, Prolate
            E2 = Ellipsoid2(E.a, E.f, name='_2_' + n)
            n, E2 = str(E2).split(', ', 1)
            _, E = str(E).split(', ', 1)
            self.test(n, E2, E)

        self.subtitle(ellipsoids, a_f2Tuple.__name__)
        for n, E in tuple(
                Ellipsoids.items()):  # includes f_None, b_None, Prolate
            a_f = a_f2Tuple(E.a, E.f)
            E2 = Ellipsoid(a_f.a, a_f.b, name='_a_b_' + n)  # PYCHOK a
            n, E2 = str(E2).split(', ', 1)
            _, E = str(E).split(', ', 1)
            self.test(n, E2, E)

        self.subtitle(ellipsoids, 'Functions')
        for n, E in tuple(
                Ellipsoids.items()):  # includes f_None, b_None, Prolate
            f_ = a_b2f_(E.a, E.b)
            self.test('%s(%s)' % (a_b2f_.__name__, E.name),
                      f_,
                      E.f_,
                      fmt='%.8f',
                      known=abs(f_ - E.f_) < _TOL)
            f2 = a_b2f2(E.a, E.b)
            self.test('%s(%s)' % (a_b2f2.__name__, E.name),
                      f2,
                      E.f2,
                      fmt='%.8f',
                      known=abs(f2 - E.f2) < _TOL)
            n = a_b2n(E.a, E.b)
            self.test('%s(%s)' % (a_b2n.__name__, E.name),
                      n,
                      E.n,
                      fmt='%.8f',
                      known=abs(n - E.n) < _TOL)
            a = b_f2a(E.b, E.f)
            self.test('%s(%s)' % (b_f2a.__name__, E.name),
                      a,
                      E.a,
                      fmt='%.3f',
                      known=abs(a - E.a) < _TOL)  # millimeter
            a = b_f_2a(E.b, E.f_)
            self.test('%s(%s)' % (b_f_2a.__name__, E.name),
                      a,
                      E.a,
                      fmt='%.3f',
                      known=abs(a - E.a) < _TOL)  # millimeter
            f = f_2f(E.f_)
            self.test('%s(%s)' % (f_2f.__name__, E.name),
                      f,
                      E.f,
                      fmt='%.8f',
                      known=abs(f - E.f) < _TOL)
            e2 = n2e2(E.n)
            self.test('%s(%s)' % (n2e2.__name__, E.name),
                      e2,
                      E.e2,
                      fmt='%.8f',
                      known=abs(e2 - E.e2) < _TOL)
            f = n2f(E.n)
            self.test('%s(%s)' % (n2f.__name__, E.name),
                      f,
                      E.f,
                      fmt='%.8f',
                      known=abs(f - E.f) < _TOL)
Exemplo n.º 3
0
    def testDatum(self):
        # datum module tests
        E = Ellipsoid(1000, 1000, 0, name='TestEllipsiod')
        self.test('ellipsoid', E is Ellipsoids.TestEllipsiod, True)
        #       print(Ellipsoid())

        T = Transform(name='TestTransform')
        self.test('transform', T is Transforms.TestTransform, True)
        #       print(Transform())

        D = Datum(E, T, name='TestDatum')
        self.test('datum', D is Datums.TestDatum, True)
        #       print(Datum())

        e = Ellipsoids.unregister('TestEllipsiod')
        self.test(e.name, e, E)
        t = Transforms.unregister('TestTransform')
        self.test(t.name, t, T)
        d = Datums.unregister('TestDatum')
        self.test(d.name, d, D)

        T = Transforms.ED50
        t = T.inverse().inverse("ED50_")
        self.test('ED50.inverse().inverse()', t == T, True)

        E = Ellipsoids.WGS84
        self.test('R1', E.R1, R_M, fmt='%.4f')
        self.test('R2', E.R2, '6371007.2', fmt='%.1f')
        self.test('R3', E.R3, '6371000.8', fmt='%.1f')
        self.test('Rr', E.Rr, '6367449.1', fmt='%.1f')  # 6367445.0
        self.test('Rs', E.Rs, '6367435.7', fmt='%.1f')

        self.test('Rgeocentric', E.Rgeocentric(0), '6378137.000', fmt='%.3f')
        self.test('Rgeocentric', E.Rgeocentric(45), '6367489.544', fmt='%.3f')
        self.test('Rgeocentric', E.Rgeocentric(90), '6356752.314', fmt='%.3f')

        self.test('Rlat', E.Rlat(0), '6378137.000', fmt='%.3f')
        self.test('Rlat', E.Rlat(45), '6367444.657', fmt='%.3f')
        self.test('Rlat', E.Rlat(90), '6356752.314', fmt='%.3f')

        self.test('distance2', fStr(E.distance2(0, 0, 1, 1), prec=3),
                  '156903.472, 45.192')
        self.test('distance2', fStr(E.distance2(0, 0, 10, 10), prec=3),
                  '1569034.719, 45.192')
        self.test('distance2', fStr(E.distance2(40, 40, 50, 50), prec=3),
                  '1400742.676, 37.563')
        self.test('distance2', fStr(E.distance2(70, 70, 80, 80), prec=3),
                  '1179164.848, 18.896')

        self.test('roc2', fStr(E.roc2(0), prec=3), '6335439.327, 6378137.0')
        self.test('roc2', fStr(E.roc2(45), prec=3), '6367381.816, 6388838.29')
        self.test('roc2', fStr(E.roc2(90), prec=3), '6399593.626, 6399593.626')

        self.test('rocBearing', E.rocBearing(0, 0), '6335439.327', fmt='%.3f')
        self.test('rocBearing',
                  E.rocBearing(45, 45),
                  '6378092.008',
                  fmt='%.3f')
        self.test('rocBearing', E.rocBearing(90, 0), '6399593.626', fmt='%.3f')

        self.test('rocGauss', E.rocGauss(0), '6356752.314', fmt='%.3f')
        self.test('rocGauss', E.rocGauss(45), '6378101.030', fmt='%.3f')
        self.test('rocGauss', E.rocGauss(90), '6399593.626', fmt='%.3f')

        self.test('rocMean', E.rocMean(0), '6356716.465', fmt='%.3f')
        self.test('rocMean', E.rocMean(45), '6378092.008', fmt='%.3f')
        self.test('rocMean', E.rocMean(90), '6399593.626', fmt='%.3f')

        E = Datums.WGS84.ellipsoid
        e = (E.a - E.b) / (E.a + E.b) - E.n
        t = (E.toStr(prec=10), 'A=%.10f, e=%.10f, f_=%.10f, n=%.10f(%.10e)' %
             (E.A, E.e, E.f_, E.n, e), 'Alpha6=(%s)' %
             (fStr(E.Alpha6, prec=12, fmt='%.*e', ints=True), ),
             'Beta6=(%s)' % (fStr(E.Beta6, prec=12, fmt='%.*e', ints=True), ))
        self.test(
            'WGS84', t[0],
            "name='WGS84', a=6378137, b=6356752.3142499998, f_=298.257223563, f=0.0033528107, e=0.0818191908, e2=0.00669438, e22=0.0067394967, n=0.0016792204, R1=6371008.7714166669, R2=6371007.180920884, R3=6371000.7900107643, Rr=6367449.1458250266, Rs=6367435.6797186071"
        )
        self.test(
            'WGS84', t[1],
            "A=6367449.1458234144, e=0.0818191908, f_=298.2572235630, n=0.0016792204(-3.7914875232e-13)"
        )
        self.test(
            'WGS84', t[2],
            "Alpha6=(0, 8.377318206245e-04, 7.608527773572e-07, 1.197645503329e-09, 2.429170607201e-12, 5.711757677866e-15, 1.491117731258e-17)"
        )
        self.test(
            'WGS84', t[3],
            "Beta6=(0, 8.377321640579e-04, 5.905870152220e-08, 1.673482665284e-1, 2.164798040063e-13, 3.787978046169e-16, 7.248748890694e-19)"
        )
Exemplo n.º 4
0
    def testDatum(self):
        # datum module tests
        E = Ellipsoid(1000, 1000, 0, name='TestEllipsiod')
        self.test('ellipsoid', E is Ellipsoids.TestEllipsiod, True)
        #       print(Ellipsoid())

        T = Transform(name='TestTransform')
        self.test('transform', T is Transforms.TestTransform, True)
        #       print(Transform())

        D = Datum(E, T, name='TestDatum')
        self.test('datum', D is Datums.TestDatum, True)
        #       print(Datum())

        e = Ellipsoids.unregister('TestEllipsiod')
        self.test(e.name, e, E)
        t = Transforms.unregister('TestTransform')
        self.test(t.name, t, T)
        d = Datums.unregister('TestDatum')
        self.test(d.name, d, D)

        T = Transforms.ED50
        t = T.inverse().inverse("ED50_")
        self.test('ED50.inverse().inverse()', t == T, True)

        # to show WGS84 and NAD83 are identical up to 3 decimals
        for E in (Ellipsoids.WGS84, Ellipsoids.GRS80):  # NAD83
            self.test('R1', E.R1, R_M, fmt='%.4f')
            self.test('R2', E.R2, '6371007.2', fmt='%.1f')
            self.test('R3', E.R3, '6371000.8', fmt='%.1f')
            self.test('Rr', E.Rr, '6367449.1', fmt='%.1f')  # 6367445.0
            self.test('Rs', E.Rs, '6367435.7', fmt='%.1f')

            self.test('Rgeocentric',
                      E.Rgeocentric(0),
                      '6378137.000',
                      fmt='%.3f')
            self.test('Rgeocentric',
                      E.Rgeocentric(45),
                      '6367489.544',
                      fmt='%.3f')
            self.test('Rgeocentric',
                      E.Rgeocentric(90),
                      '6356752.314',
                      fmt='%.3f')

            self.test('Rlat', E.Rlat(0), '6378137.000', fmt='%.3f')
            self.test('Rlat', E.Rlat(45), '6367444.657', fmt='%.3f')
            self.test('Rlat', E.Rlat(90), '6356752.314', fmt='%.3f')

            self.test('distance2', fStr(E.distance2(0, 0, 1, 1), prec=3),
                      '156903.472, 45.192')
            self.test('distance2', fStr(E.distance2(0, 0, 10, 10), prec=3),
                      '1569034.719, 45.192')
            self.test('distance2', fStr(E.distance2(40, 40, 50, 50), prec=3),
                      '1400742.676, 37.563')
            self.test('distance2', fStr(E.distance2(70, 70, 80, 80), prec=3),
                      '1179164.848, 18.896')

            self.test('roc2', fStr(E.roc2(0), prec=3),
                      '6335439.327, 6378137.0')
            self.test('roc2', fStr(E.roc2(45), prec=3),
                      '6367381.816, 6388838.29')
            self.test('roc2', fStr(E.roc2(90), prec=3),
                      '6399593.626, 6399593.626')

            self.test('rocBearing',
                      E.rocBearing(0, 0),
                      '6335439.327',
                      fmt='%.3f')
            self.test('rocBearing',
                      E.rocBearing(45, 45),
                      '6378092.008',
                      fmt='%.3f')
            self.test('rocBearing',
                      E.rocBearing(90, 0),
                      '6399593.626',
                      fmt='%.3f')

            self.test('rocGauss', E.rocGauss(0), '6356752.314', fmt='%.3f')
            self.test('rocGauss', E.rocGauss(45), '6378101.030', fmt='%.3f')
            self.test('rocGauss', E.rocGauss(90), '6399593.626', fmt='%.3f')

            self.test('rocMean', E.rocMean(0), '6356716.465', fmt='%.3f')
            self.test('rocMean', E.rocMean(45), '6378092.008', fmt='%.3f')
            self.test('rocMean', E.rocMean(90), '6399593.626', fmt='%.3f')

            self.test('rocMeridional', fStr(E.rocMeridional(0), prec=3),
                      '6335439.327')
            self.test('rocMeridional', fStr(E.rocMeridional(45), prec=3),
                      '6367381.816')
            self.test('rocMeridional', fStr(E.rocMeridional(90), prec=3),
                      '6399593.626')

            self.test('rocPrimeVertical', fStr(E.rocPrimeVertical(0), prec=3),
                      '6378137.0')
            self.test('rocPrimeVertical', fStr(E.rocPrimeVertical(45), prec=3),
                      '6388838.29')
            self.test('rocPrimeVertical', fStr(E.rocPrimeVertical(90), prec=3),
                      '6399593.626')

        E = Ellipsoids.WGS84.copy()
        self.test('WGS84.copy', E is not Ellipsoids.WGS84, True)
        self.test('WGS84.copy', E == Ellipsoids.WGS84, True)
        self.test('WGS84.find', Ellipsoids.find(E), None)

        t = E.toStr(prec=10)
        self.test(
            'WGS84', t,
            "name='WGS84', a=6378137, b=6356752.3142499998, f_=298.257223563, f=0.0033528107, e=0.0818191908, e2=0.00669438, e12=0.99330562, e22=0.0067394967, n=0.0016792204, R1=6371008.7714166669, R2=6371007.180920884, R3=6371000.7900107643, Rr=6367449.1458250266, Rs=6367435.6797186071"
        )
        e = (E.a - E.b) / (E.a + E.b) - E.n
        t = 'A=%.10f, e=%.10f, f_=%.10f, n=%.10f(%.10e)' % (E.A, E.e, E.f_,
                                                            E.n, e)
        self.test(
            'WGS84.', t,
            "A=6367449.1458234144, e=0.0818191908, f_=298.2572235630, n=0.0016792204(-3.7914875232e-13)"
        )

        def _AB(E, K, A, B):
            E.KsOrder = K
            self.test('WGS84.AlphaKs',
                      fStr(E.AlphaKs, prec=12, fmt='%.*e', ints=True), A)
            self.test('WGS84.BetaKs ',
                      fStr(E.BetaKs, prec=12, fmt='%.*e', ints=True), B)

        _AB(
            E, 8,
            '8.377318206245e-04, 7.608527773572e-07, 1.197645503242e-09, 2.429170680397e-12, 5.711818370428e-15, 1.479997931380e-17, 4.107624109371e-20, 1.210785038923e-22',
            '8.377321640579e-04, 5.905870152220e-08, 1.673482665344e-10, 2.164798110491e-13, 3.787930968626e-16, 7.236769021816e-19, 1.493479824778e-21, 3.259522545838e-24'
        )

        _AB(
            E, 6,
            '8.377318206245e-04, 7.608527773572e-07, 1.197645503329e-09, 2.429170607201e-12, 5.711757677866e-15, 1.491117731258e-17',
            '8.377321640579e-04, 5.905870152220e-08, 1.673482665284e-10, 2.164798040063e-13, 3.787978046169e-16, 7.248748890694e-19'
        )

        _AB(
            E, 4,
            '8.377318206304e-04, 7.608527714249e-07, 1.197638001561e-09, 2.443376194522e-12',
            '8.377321640601e-04, 5.905869567934e-08, 1.673488880355e-10, 2.167737763022e-13'
        )