Reference Ellipsoid (pygeoid.coordinates.ellipsoid.Ellipsoid)¶
Geometry of the reference ellipsoid.
-
class
pygeoid.coordinates.ellipsoid.
Ellipsoid
(ellps: Optional[str] = None, **kwargs)[source]¶ Class represents an ellipsoid of revolution and its geometry.
This class uses proj.Geod class from pyproj package, so any valid init string for Proj are accepted as arguments. See pyproj.Geod.__new__ documentation (https://pyproj4.github.io/pyproj/stable/api/geod.html) for more information.
Parameters: ellps (str, optional) – Ellipsoid name, most common ellipsoids are accepted. Default is ‘GRS80’. -
equatorial_radius
¶ Return semi-major or equatorial axis radius, in metres.
-
polar_radius
¶ Return semi-minor or polar axis radius, in metres.
-
flattening
¶ Return flattening of the ellipsoid.
Notes
The flattening of the ellipsoid \(f\) is
\[f = \frac{a - b}{a},\]where \(a\) and \(b\) – equatorial and polar axis of the ellipsoid respectively.
-
reciprocal_flattening
¶ Return reciprocal (inverse) flattening.
-
eccentricity
¶ Return first eccentricity.
Notes
The first eccentricity of the ellipsoid \(e\) is
\[e = \sqrt{\frac{a^2 - b^2}{a^2}},\]where \(a\) and \(b\) – equatorial and polar axis of the ellipsoid respectively.
-
eccentricity_squared
¶ Return first eccentricity squared.
-
second_eccentricity
¶ Return second eccentricity.
Notes
The second eccentricity of the ellipsoid \(e'\) is
\[e' = \sqrt{\frac{a^2 - b^2}{b^2}}\]where \(a\) and \(b\) – equatorial and polar axis of the ellipsoid respectively.
-
second_eccentricity_squared
¶ Return second eccentricity squared.
-
linear_eccentricity
¶ Return linear eccentricity, in metres.
Notes
The linear eccentricity of the ellipsoid \(E\) is
\[E = ae,\]where \(a\) – equatorial radius of the ellipsoid, \(e\) – (first) eccentricity.
-
polar_curvature_radius
¶ Return polar radius of curvature, in metres.
Notes
The polar radius of curvature of the ellipsoid \(c\) is
\[c = \frac{a^2}{b},\]where \(a\) and \(b\) – equatorial and polar axis of the ellipsoid respectively.
-
quadrant_distance
¶ Return arc of meridian from equator to pole, in metres.
Notes
The arc length of meridian from equator to pole is
\[Q = c\frac{\pi}{2}\left( 1 - \frac{3}{4}e'^2 + \frac{45}{64}e'^4 + \frac{175}{256}e'^6 + \frac{11025}{16384}e'^8\right),\]where \(c\) – polar radius of curvature, \(e'\) – second eccentricity.
-
surface_area
¶ Return surface area of the ellipsoid, in squared metres.
Notes
The surface area of the ellipsoid is
\[A = 2\pi a^2 \left[1 + \frac{1 - e^2}{2e} \ln{\left( \frac{1 + e}{1 - e}\right)}\right],\]where \(a\) – equatorial axis of the ellipsoid, \(e\) – (first) eccentricity.
-
volume
¶ Return volume of the ellipsoid, in cubical metres.
Notes
The volume of the ellipsoid is
\[V = \frac{4}{3}\pi a^2 b,\]where \(a\) and \(b\) – equatorial and polar axis of the ellipsoid respectively.
-
mean_radius
(kind: str = 'arithmetic')[source]¶ Return the radius of a sphere.
Parameters: kind ({'arithmetic', 'same_area', 'same_volume'}, optional) – Controls what kind of radius is returned.
- ’arithmetic’ returns the arithmetic mean value
- \(R_m\) of the 3 semi-axis of the ellipsoid.
- ’same_area’ returns the authalic radius \(R_A\) of
- the sphere with the same surface area as the ellipsoid.
- ’same_volume’ returns the radius \(R_V\) of
- the sphere with the same volume as the ellipsoid.
Default is ‘arithmetic’.
Returns: Mean radius of the ellipsoid, in metres. Return type: float Notes
The arithmetic mean radius of the ellipsoid is
\[R_m = \frac{2a + b}{2},\]where \(a\) and \(b\) are equatorial and polar axis of the ellipsoid respectively.
A sphere with the same surface area as the elliposid has the radius
\[R_A = \sqrt{\frac{A}{4\pi}},\]where \(A\) is the surface area of the ellipsoid.
A sphere with the same volume as the ellipsoid has the radius
\[R_V = a^2 b.\]
-
meridian_curvature_radius
(lat: Unit("deg")) -> Unit("m")[source]¶ Return radius of curvature of meridian normal section.
Parameters: lat (Quantity) – Geodetic latitude. Returns: Value of the radius of curvature of meridian normal section. Return type: Quantity Notes
The radius of curvature of meridian normal section \(M\) is
\[M = \frac{c}{V^3},\]where \(c\) – polar radius of curvature, \(V\) – auxiliary function which depends on geodetic latitude.
-
prime_vertical_curvature_radius
(lat: Unit("deg")) -> Unit("m")[source]¶ Return radius of curvature of prime vertical normal section.
Parameters: lat (Quantity) – Geodetic latitude. Returns: Value of the radius of curvature of prime vertical normal section. Return type: Quantity Notes
The radius of curvature of prime vertical \(N\) is
\[N = \frac{c}{V},\]where \(c\) – polar radius of curvature, \(V\) – auxiliary function which depends on geodetic latitude.
-
mean_curvature
(lat: Unit("deg")) → <Quantity 1. 1 / m>[source]¶ Return mean curvature, in inverse metres.
Parameters: lat (Quantity) – Geodetic latitude. Returns: Value of the mean curvature. Return type: Quantity Notes
The mean curvature is \(1/\sqrt{MN}\), where \(M\) – radius of curvature of meridian normal section, \(N\) – radius of curvature of prime vertical.
-
gaussian_curvature
(lat: Unit("deg")) → <Quantity 1. 1 / m>[source]¶ Return Gaussian curvature, in inverse metres.
Parameters: lat (Quantity) – Geodetic latitude. Returns: Value of the Gaussian radius of curvature. Return type: Quantity Notes
The Gaussian curvature is \(1/MN\), where \(M\) – radius of curvature of meridian normal section, \(N\) – radius of curvature of prime vertical.
-
average_curvature
(lat: Unit("deg")) → <Quantity 1. 1 / m>[source]¶ Return average curvature, in inverse metres.
Parameters: lat (Quantity) – Geodetic latitude. Returns: Value of the average curvature. Return type: Quantity Notes
The average curvature is
\[\frac{1}{2} \left( \frac{1}{M} + \frac{1}{N} \right),\]where \(M\) – radius of curvature of meridian normal section, \(N\) – radius of curvature of prime vertical.
-
meridian_arc_distance
(lat1: Unit("deg"), lat2: Unit("deg")) -> Unit("m")[source]¶ Return the distance between two parallels lat1 and lat2.
Parameters: - lat1 (Quantity) – Geodetic latitude of the first point.
- lat2 (Quantity) – Geodetic latitude of the second point.
Returns: The distance between two parallels.
Return type: Quantity
-
parallel_arc_distance
(lat: Unit("deg"), lon1: Unit("deg"), lon2: Unit("deg"))[source]¶ Return the distance between two points on a parallel.
Parameters: - lat (Quantity) – Geodetic latitude of the parallel.
- lon1 (Quantity) – Geodetic longitude of the first point.
- lon2 (Quantity) – Geodetic longitude of the second point.
Returns: The distance between two meridians along the parallel.
Return type: Quantity
-
fwd
(lat: Unit("deg"), lon: Unit("deg"), azimuth: Unit("deg"), distance: Unit("m"))[source]¶ Solve forward geodetic problem.
Returns latitudes, longitudes and back azimuths of terminus points given latitudes lat and longitudes lon of initial points, plus forward `azimuth`s and `distance`s.
This method use pyproj.Geod.fwd as a backend.
Parameters: - lat (Quantity) – Geodetic latitude of the initial point.
- lon (Quantity) – Longitude of the initial point.
- azimuth (Quantity) – Geodetic azimuth.
- distance (Quantity) – Distance.
Returns: - lat (~astropy.units.Quantity) – Geodetic latitude of the terminus point.
- lon (~astropy.units.Quantity) – Longitude of the terminus point.
- back_azimuth (~astropy.units.Quantity) – Back geodetic azimuth.
-
inv
(lat1: Unit("deg"), lon1: Unit("deg"), lat2: Unit("deg"), lon2: Unit("deg"))[source]¶ Solve inverse geodetic problem.
Returns forward and back azimuths, plus distances between initial points (specified by lat1, lon1) and terminus points (specified by lat1, lon2).
This method use pyproj.Geod.inv as a backend.
Parameters: - lat1 (Quantity) – Geodetic latitude of the initial point.
- lon1 (Quantity) – Longitude of the initial point.
- lat2 (Quantity) – Geodetic latitude of the terminus point.
- lon2 (Quantity) – Longitude of the terminus point.
Returns: - azimuth (~astropy.units.Quantity) – Geodetic azimuth.
- back_azimuth (~astropy.units.Quantity) – Back geodetic azimuth.
- distance (~astropy.units.Quantity) – Distance, in metres.
-
npts
(lat1: Unit("deg"), lon1: Unit("deg"), lat2: Unit("deg"), lon2: Unit("deg"), npts: int) -> Unit("deg")[source]¶ Return equaly spaced points along geodesic line.
Given a single initial point and terminus point (specified by lat1, lon1 and lat2, lon2), returns a list of longitude/latitude pairs describing npts equally spaced intermediate points along the geodesic between the initial and terminus points.
This method use pyproj.Geod.npts as a backend.
Parameters: - lat1 (Quantity) – Geodetic latitude of the initial point.
- lon1 (Quantity) – Longitude of the initial point.
- lat2 (Quantity) – Geodetic latitude of the terminus point.
- lon2 (Quantity) – Longitude of the terminus point.
- npts (int) – Number of intermediate points.
Returns: points – List of latitudes and longitudes of the intermediate points.
Return type: Quantity list of tuples
-
circle_radius
(lat: Unit("deg")) -> Unit("m")[source]¶ Return the radius of the parallel, in metres.
Parameters: lat (Quantity) – Geodetic latitude. Notes
The radius of the parallel \(\phi\) is
\[r_\phi = N \cos{\phi},\]where \(N\) – radius of curvature of prime vertical, \(\phi\) – geodetic latitude.
-
polar_equation
(lat: Unit("deg")) -> Unit("m")[source]¶ Return radius of the ellipsoid with respect to the origin.
Parameters: lat (Quantity) – Geocentric latitude. Returns: Geocentric radius of the parallel. Return type: Quantity Notes
The polar equation of the ellipsoid is
\[r = \frac{ab}{\sqrt{a^2\sin^2{\vartheta} + b^2\cos^2{\vartheta}}},\]where \(a\) and \(b\) – equatorial and polar axis of the ellipsoid respectively, \(\vartheta\) – geocentric latitude.
-
geocentric_latitude
(lat: Unit("deg")) -> Unit("deg")[source]¶ Convert geodetic latitude to geocentric latitude.
Parameters: lat (Quantity) – Geodetic latitude. Returns: Geocentric (spherical) latitude. Return type: Quantity Notes
The relationship between geodetic \(\phi\) and geocentric \(\vartheta\) latitudes is
\[\vartheta = \tan^{-1}{\left(\left(1 - f\right)^2\tan\phi\right)},\]where \(f\) – flattening of the ellipsoid.
-
reduced_latitude
(lat: Unit("deg")) -> Unit("deg")[source]¶ Convert geodetic latitude to reduced (parametric) latitude.
Parameters: lat (Quantity) – Geodetic latitude. Returns: Reduced latitude. Return type: Quantity Notes
The relationship between geodetic \(\phi\) and reduced \(\beta\) latitudes is
\[\beta = \tan^{-1}{\left(\left(1 - f\right)\tan\phi\right)},\]where \(f\) – flattening of the ellipsoid.
-
authalic_latitude
(lat: Unit("deg")) -> Unit("deg")[source]¶ Convert geodetic latitude to authalic latitude.
Authalic latitude will return a geocentric latitude on a sphere having the same surface area as the ellipsoid. It will preserve areas with relative to the ellipsoid. The authalic radius can be calculated from mean_radius(kind=’same_area’) method.
Parameters: lat (Quantity) – Geodetic latitude. Returns: Authalic latitude. Return type: Quantity
-