Package pygeodesy :: Module sphericalTrigonometry
[frames] | no frames]

Module sphericalTrigonometry

Trigonometric spherical geodetic (lat-longitude) class LatLon and functions intersection and meanOf.

Pure Python implementation of geodetic (lat-/longitude) methods using spherical trigonometry, transcribed from JavaScript originals by (C) Chris Veness 2011-2016 published under the same MIT Licence**, see http://www.movable-type.co.uk/scripts/latlong.html.


Version: 17.06.25

Classes
  LatLon
New point on spherical model earth model.
Functions
 
areaOf(points, radius=6371008.77141)
Calculate the area of a spherical polygon where the sides of the polygon are great circle arcs joining the points.
 
intersection(start1, bearing1, start2, bearing2, height=None, LatLon=<class 'pygeodesy.sphericalTrigonometry.LatLon'>)
Compute the intersection point of two paths each defined by a start point and an initial bearing.
 
isPoleEnclosedBy(points)
Test whether a pole is enclosed by a polygon defined by a list, sequence, set or tuple of points.
 
meanOf(points, height=None, LatLon=<class 'pygeodesy.sphericalTrigonometry.LatLon'>)
Compute the geographic mean of the supplied points.
Function Details

areaOf(points, radius=6371008.77141)

 

Calculate the area of a spherical polygon where the sides of the polygon are great circle arcs joining the points.

Parameters:
  • points - The points defining the polygon (LatLon[]).
  • radius - Mean earth radius (meter).
Returns:
Polygon area (float, same units as radius squared).
Raises:
  • TypeError - Some points are not LatLon.
  • ValueError - Too few polygon points.

Example:

>>> b = LatLon(45, 1), LatLon(45, 2), LatLon(46, 2), LatLon(46, 1)
>>> areaOf(b)  # 8666058750.718977
>>> c = LatLon(0, 0), LatLon(1, 0), LatLon(0, 1)
>>> areaOf(c)  # 6.18e9

intersection(start1, bearing1, start2, bearing2, height=None, LatLon=<class 'pygeodesy.sphericalTrigonometry.LatLon'>)

 

Compute the intersection point of two paths each defined by a start point and an initial bearing.

Parameters:
  • start1 - Start point of first path (LatLon).
  • bearing1 - Initial bearing from start1 (compass degrees).
  • start2 - Start point of second path (LatLon).
  • bearing2 - Initial bearing from start2 (compass degrees).
  • height - Optional height for the intersection point, overriding the mean height (meter).
  • LatLon - LatLon class for the intersection point (LatLon).
Returns:
Intersection point (LatLon).
Raises:
  • TypeError - Point start1 or start2 is not LatLon.
  • ValueError - Intersection is ambiguous or infinite or the paths are parallel or coincide.

Example:

>>> p = LatLon(51.8853, 0.2545)
>>> s = LatLon(49.0034, 2.5735)
>>> i = intersection(p, 108.547, s, 32.435)  # '50.9078°N, 004.5084°E'

isPoleEnclosedBy(points)

 

Test whether a pole is enclosed by a polygon defined by a list, sequence, set or tuple of points.

Parameters:
  • points - The points defining the polygon (LatLon[]).
Returns:
True if the polygon encloses this point (bool).
Raises:
  • ValueError - Too few polygon points.
  • TypeError - Some points are not LatLon.

meanOf(points, height=None, LatLon=<class 'pygeodesy.sphericalTrigonometry.LatLon'>)

 

Compute the geographic mean of the supplied points.

Parameters:
  • points - Points to be averaged (LatLon[]).
  • height - Optional height at mean point overriding the mean height (meter).
  • LatLon - LatLon class for the mean point (LatLon).
Returns:
Point at geographic mean and height (LatLon).
Raises:
  • TypeError - Some points are not LatLon.
  • ValueError - If no points.