Convert between sexagesimal coordinates and decimal coordinates.
with npm (and/or) browserify
npm install @mapbox/sexagesimal
otherwise
curl https://raw.github.com/mapbox/sexagesimal/master/sexagesimal.js
var sexagesimal = require('sexagesimal');
// Converting a single DMS coordinate:
sexagesimal('40° 42′ 45.72″ N'); // direction after
// 40.712700000000005
sexagesimal('N40° 42′ 45.72″'); // direction before
// 40.712700000000005
sexagesimal('N40°42′45.72″'); // flexible whitespace
// 40.712700000000005
// Converting a coordinate pair from DMS to lat/lng:
sexagesimal.pair('40° 42′ 45.72″ N, 74° 0′ 21.24″ W'); // direction after
// [ 40.712700000000005, -74.0059 ]
sexagesimal.pair('N 40° 42′ 45.72″, W 74° 0′ 21.24″'); // direction before
// [ 40.712700000000005, -74.0059 ]
// Converting a lat/lon coordinate to DMS:
sexagesimal.coordToDMS(40.71270000000000, 'lat');
// { whole: 40, minutes: 42, seconds: 45, dir: 'N' }
sexagesimal.coordToDMS(-74.0059, 'lon');
// { whole: 74, minutes: 0, seconds: 21, dir: 'W' }
sexagesimal(str, dims) // returns a number or null
dims
is by default NSEW
but can be other ordinal directions expressed
as a string of characters.
sexagesimal.pair(str, dims) // returns [lat, lon] or null
dims
is by default NSEW
but can be other ordinal directions expressed
as a string of characters.
sexagesimal.format(float, dimension) // returns a formatted string
Format a single sexagesimal number. dimension
must be a string, either
"lat"
or "lon"
.
sexagesimal.formatPair({ lat: float, lon: float }) // returns a formatted string
Format a sexagesimal coordinate.