Libraries of geodesy functions implemented in JavaScript – intended to serve as examples or starting-points for people wanting to develop geodesy applications (in JavaScript or other languages), though they can also be used as-is.
This is a library of geodesy functions for working with points and paths on (a spherical model of) the earth’s surface, including (orthodromic) great-circle geodesics and (loxodromic) rhumb lines. All calculations are done using spherical trigonometry.
The library includes the following functions:
distanceTo
destination point (using haversine formulation)bearingTo
destination pointfinalBearingTo
destination pointmidpointTo
destination pointdestinationPoint
following initial bearing for given distanceintersection
of two pathsrhumbDistanceTo
destination pointrhumbBearingTo
destination pointrhumbDestinationPoint
following given bearing for given distancerhumbMidpointTo
destination point
Full details are available at www.movable-type.co.uk/scripts/latlong.html.
Vincenty’s formulae for ‘direct and inverse solutions of geodesics on the ellipsoid’; these give distances and bearings on an ellipsoidal earth model accurate to within 0.5mm distance, 0.000015″ bearing.
The library includes the following wrapper functions:
distanceTo
destination pointinitialBearingTo
destination pointfinalBearingTo
destination pointdestinationPoint
following initial bearing for given distancefinalBearingOn
initial bearing for given distance
The heaving lifting is done in two routines:
direct
(implementing the direct solution of geodesics on the ellipsoid)inverse
(implementing the inverse solution of geodesics on the ellipsoid)
Full details are available at www.movable-type.co.uk/scripts/latlong-vincenty.html.
Geodesy tools for an ellipsoidal earth model.
The LatLonE
object incorporates not just latitude & longitude coordinates, but also the datum the
lat/lon point is defined on.
LatLonE
also holds ellipsoid parameters and Helmert transform parameters for translating between
different datums (e.g. between OSGB36 & WGS-84).
The convertDatum
function performs such translations between datums.
The library includes:
ellipsoid
parametersdatum
parameters (reference ellipsoid & Helmert transform parameters)convertDatum
: convert lat/lon point to new datumtoCartesian
: convert lat/lon point to ECEF 3-d vectortoLatLon
: convert ECEF 3-d vector to lat/lon point
More information at www.movable-type.co.uk/scripts/latlong-convert-coords.html.
This is a library of functions for working with points and paths on (a spherical model of) the earth’s surface using a vector-based approach using ‘n-vectors’ (rather than the more common spherical trigonometry; a vector-based approach makes most calculations much simpler, and easier to follow, compared with trigonometric equivalents).
The library includes:
distanceTo
destination pointbearingTo
destination pointmidpointTo
destination pointdestinationPoint
following initial bearing for given distanceintersection
of two pathscrossTrackDistanceTo
great circle pathenclosedBy
polygonmeanOf
set of points
More information at www.movable-type.co.uk/scripts/latlong-vectors.html.
Routines for converting between Ordnance Survey grid references and (OSGB-36) latitude/longitude coordinates, based on Ordnance Survey formulae.
The library includes:
latLonToOsGrid
: convert (OSGB) latitude/longitude to (numeric) OS grid referenceosGridToLatLon
: convert (numeric) OS grid reference to (OSGB) latitude/longitudeparse
standard format grid reference to numeric grid referencetoString
: convert numeric grid reference to standard format
More information at www.movable-type.co.uk/scripts/latlong-gridref.html.
Routines for converting between UTM (Universal Transverse Mercator) coordinates and latitude/longitude coordinates (WGS84 or any other ellipsoid datum), and between UTM and MGRS (Military Grid Reference System) grid references. Based on Karney 2011 ‘Transverse Mercator with an accuracy of a few nanometers’.
The libraries include:
LatLonE.toUtm
: convert (WGS84) latitude/longitude to UTM coordinateUtm.toLatLon
: convert UTM coordinate to (WGS84) latitude/longitudeUtm.toMgrs
convert UTM coordinate to MGRS grid reference (including Norway and Svalbard exceptions)Mgrs.toUtm
: convert MGRS grid reference to UTM coordinate
More information at www.movable-type.co.uk/scripts/latlong-utm-mgrs.html.
Tools for converting between numeric degrees and degrees / minutes / seconds.
The library includes the following functions:
parseDMS
: parse string representing degrees/minutes/seconds into numeric degreestoLat
: convert decimal degrees to latitudetoLon
: convert decimal degrees to longitudetoBrng
: convert decimal degrees to bearing
Geohash is now moved to its own repository, as this one is becoming bloated.
Documentation for all these methods is available at www.movable-type.co.uk/scripts/js/geodesy/docs.