Functions for Working with Geographical Coordinates
greatCircleDistance
Calculates the distance between two points on the Earth's surface using the great-circle formula.
Input parameters
lon1Deg
— Longitude of the first point in degrees. Range:[-180°, 180°]
.lat1Deg
— Latitude of the first point in degrees. Range:[-90°, 90°]
.lon2Deg
— Longitude of the second point in degrees. Range:[-180°, 180°]
.lat2Deg
— Latitude of the second point in degrees. Range:[-90°, 90°]
.
Positive values correspond to North latitude and East longitude, and negative values correspond to South latitude and West longitude.
Returned value
The distance between two points on the Earth's surface, in meters.
Generates an exception when the input parameter values fall outside of the range.
Example
geoDistance
Similar to greatCircleDistance
but calculates the distance on WGS-84 ellipsoid instead of sphere. This is more precise approximation of the Earth Geoid.
The performance is the same as for greatCircleDistance
(no performance drawback). It is recommended to use geoDistance
to calculate the distances on Earth.
Technical note: for close enough points we calculate the distance using planar approximation with the metric on the tangent plane at the midpoint of the coordinates.
Input parameters
lon1Deg
— Longitude of the first point in degrees. Range:[-180°, 180°]
.lat1Deg
— Latitude of the first point in degrees. Range:[-90°, 90°]
.lon2Deg
— Longitude of the second point in degrees. Range:[-180°, 180°]
.lat2Deg
— Latitude of the second point in degrees. Range:[-90°, 90°]
.
Positive values correspond to North latitude and East longitude, and negative values correspond to South latitude and West longitude.
Returned value
The distance between two points on the Earth's surface, in meters.
Generates an exception when the input parameter values fall outside of the range.
Example
greatCircleAngle
Calculates the central angle between two points on the Earth's surface using the great-circle formula.
Input parameters
lon1Deg
— Longitude of the first point in degrees.lat1Deg
— Latitude of the first point in degrees.lon2Deg
— Longitude of the second point in degrees.lat2Deg
— Latitude of the second point in degrees.
Returned value
The central angle between two points in degrees.
Example
pointInEllipses
Checks whether the point belongs to at least one of the ellipses. Coordinates are geometric in the Cartesian coordinate system.
Input parameters
x, y
— Coordinates of a point on the plane.xᵢ, yᵢ
— Coordinates of the center of thei
-th ellipsis.aᵢ, bᵢ
— Axes of thei
-th ellipsis in units of x, y coordinates.
The input parameters must be 2+4⋅n
, where n
is the number of ellipses.
Returned values
1
if the point is inside at least one of the ellipses; 0
if it is not.
Example
pointInPolygon
Checks whether the point belongs to the polygon on the plane.
Input values
(x, y)
— Coordinates of a point on the plane. Data type — Tuple — A tuple of two numbers.[(a, b), (c, d) ...]
— Polygon vertices. Data type — Array. Each vertex is represented by a pair of coordinates(a, b)
. Vertices should be specified in a clockwise or counterclockwise order. The minimum number of vertices is 3. The polygon must be constant.- The function supports polygon with holes (cut-out sections). Data type — Polygon. Either pass the entire
Polygon
as the second argument, or pass the outer ring first and then each hole as separate additional arguments. - The function also supports multipolygon. Data type — MultiPolygon. Either pass the entire
MultiPolygon
as the second argument, or list each component polygon as its own argument.
Returned values
1
if the point is inside the polygon, 0
if it is not.
If the point is on the polygon boundary, the function may return either 0 or 1.
Example
Note
• You can setvalidate_polygons = 0
to bypass geometry validation.
•pointInPolygon
assumes every polygon is well-formed. If the input is self-intersecting, has mis-ordered rings, or overlapping edges, results become unreliable—especially for points that sit exactly on an edge, a vertex, or inside a self-intersection where the notion of "inside" vs. "outside" is undefined.