karney.util

Functions

eccentricity2(f)

Returns the first and second eccentricity squared given the flattening, f.

polar_radius(a, f)

Returns the polar radius b given the equatorial radius a and flattening f of the ellipsoid.

third_flattening(f)

Returns the third flattening, n, given the flattening, f.

deg(*rad_angles)

Converts angle in radians to degrees.

rad(*deg_angles)

Converts angle in degrees to radians.

nthroot(x, n)

Returns the n'th root of x to machine precision

get_ellipsoid(name)

Returns semi-major axis (a), flattening (f) and name of reference ellipsoid as a named tuple.

Module Contents

karney.util.eccentricity2(f)[source]

Returns the first and second eccentricity squared given the flattening, f.

Parameters:

f (array-like) – Flattening of the ellipsoid

Notes

The (first) eccentricity squared is defined as e2 = f*(2-f). The second eccentricity squared is defined as e2m = e2 / (1 - e2).

karney.util.polar_radius(a, f)[source]

Returns the polar radius b given the equatorial radius a and flattening f of the ellipsoid.

Parameters:
  • a (array-like) – Semi-major half axis or equatorial radius of ellipsoid

  • f (array-like) – Flattening of the ellipsoid

Notes

The semi minor half axis (polar radius) is defined as b = (1 - f) * a where a is the semi major half axis (equatorial radius) and f is the flattening of the ellipsoid.

karney.util.third_flattening(f)[source]

Returns the third flattening, n, given the flattening, f.

Parameters:

f (array-like) – Flattening of the ellipsoid

Notes

The third flattening is defined as n = f / (2 - f).

karney.util.deg(*rad_angles)[source]

Converts angle in radians to degrees.

Parameters:

rad_angles – angle in radians

Returns:

angle in degrees

Return type:

deg_angles

Examples

>>> import numpy as np
>>> from karney.util import deg
>>> np.allclose(deg(np.pi/2), 90)
True
>>> vals = deg(np.pi/2, [0, np.pi])
>>> np.allclose(vals[0], 90)
True
>>> np.allclose(vals[1], [0, 180])
True

See also

rad

karney.util.rad(*deg_angles)[source]

Converts angle in degrees to radians.

Parameters:

deg_angles – angle in degrees

Returns:

angle in radians

Return type:

rad_angles

Examples

>>> import numpy as np
>>> from karney.util import deg, rad
>>> np.allclose(deg(rad(90)), 90)
True
>>> vals = deg(*rad(90, [0, 180]))
>>> np.allclose(vals[0], 90)
True
>>> np.allclose(vals[1], [0, 180])
True

See also

deg

karney.util.nthroot(x, n)[source]

Returns the n’th root of x to machine precision

Parameters:
  • x (real scalar or numpy array)

  • n (scalar integer)

Examples

>>> import numpy as np
>>> from karney.util import nthroot
>>> np.allclose(nthroot(27.0, 3), 3.0)
True
karney.util.get_ellipsoid(name)[source]

Returns semi-major axis (a), flattening (f) and name of reference ellipsoid as a named tuple.

Parameters:

name (string) – name of ellipsoid. Valid options are: 1) Airy 1858 2) Airy Modified 3) Australian National 4) Bessel 1841 5) Clarke 1880 6) Everest 1830 7) Everest Modified 8) Fisher 1960 9) Fisher 1968 10) Hough 1956 11) Hayford / International ellipsoid 1924 / European Datum 1950 / ED50 12) Krassovsky 1938 13) NWL-9D / WGS 66 14) South American 1969 15) Soviet Geod. System 1985 16) WGS 72 17) Clarke 1866 / NAD27 18) GRS80 / WGS84 / NAD83 19) ETRS89 / EUREF89 20) NGO1948

Notes

See also: https://en.wikipedia.org/wiki/Geodetic_datum https://en.wikipedia.org/wiki/Reference_ellipsoid

Examples

>>> from karney.util import get_ellipsoid
>>> get_ellipsoid(name="wgs84")
Ellipsoid(a=6378137.0, f=0.0033528106647474805, name='GRS80 / WGS84 / NAD83')
>>> get_ellipsoid(name="GRS80")
Ellipsoid(a=6378137.0, f=0.0033528106647474805, name='GRS80 / WGS84 / NAD83')
>>> get_ellipsoid(name="NAD83")
Ellipsoid(a=6378137.0, f=0.0033528106647474805, name='GRS80 / WGS84 / NAD83')
>>> get_ellipsoid(name=18)
Ellipsoid(a=6378137.0, f=0.0033528106647474805, name='GRS80 / WGS84 / NAD83')
>>> wgs72 = get_ellipsoid(name="WGS 72")
>>> wgs72.a == 6378135.0
True
>>> wgs72.f == 0.003352779454167505
True
>>> wgs72.name
'WGS 72'
>>> wgs72 == (6378135.0, 0.003352779454167505, "WGS 72")
True