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:
distanceTodestination point (using haversine formulation)bearingTodestination pointfinalBearingTodestination pointmidpointTodestination pointdestinationPointfollowing initial bearing for given distanceintersectionof two pathsrhumbDistanceTodestination pointrhumbBearingTodestination pointrhumbDestinationPointfollowing given bearing for given distancerhumbMidpointTodestination 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:
distanceTodestination pointinitialBearingTodestination pointfinalBearingTodestination pointdestinationPointfollowing initial bearing for given distancefinalBearingOninitial 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:
ellipsoidparametersdatumparameters (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:
distanceTodestination pointbearingTodestination pointmidpointTodestination pointdestinationPointfollowing initial bearing for given distanceintersectionof two pathscrossTrackDistanceTogreat circle pathenclosedBypolygonmeanOfset 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/longitudeparsestandard 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.
Functions to convert geohash to/from latitude/longitude points, also to determine bounds of a geohash cell and find neighbours of a geohash.
The library includes:
encode: latitude/longitude point to geohashdecode: geohash to latitude/longitudeboundsof a geohash cellneighbours: of a geohash
More information at www.movable-type.co.uk/scripts/geohash.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
Documentation for all these methods is available at www.movable-type.co.uk/scripts/js/geodesy/docs.