geodaisy

Library for geodesic functions

Usage no npm install needed!

<script type="module">
  import geodaisy from 'https://cdn.skypack.dev/geodaisy';
</script>

README

🌎Geodaisy - simple geodesic utilities for NodeJS and Web

Get started

npm install geodaisy

Usage in JavaScript or TypeScript (typings are available):

Distance utilities - Haversine

Uses the Haversine Formula to calculate the distance between two earthly points of coordinates.

import { haversine } from 'geodaisy';

const atlanta = {
  latitude: 33.749,
  longitude: -84.388,
};

const london = {
  latitude: 51.5074,
  longitude: -0.1278,
};

const distance = haversine(
  atlanta.longitude,
  atlanta.latitude,
  london.longitude,
  london.latitude,
);

console.log(distance); // > 6769.949658450232

Distance utilities - distanceWithLatitude

Given a distance as a number (this formula does not care about units) and the distance between the elevation change between two points - calculates the real distance between the two points in a straight line, e.g.:

import { distanceWithLatitude } from 'geodaisy';

const distance = 13800; // m
const elevation = 1120; // m

const realDistance = distanceWithLatitude(distance, elevation);

console.log(realDistance); // > 13845.374678931588

Conversion utilities

The following conversion utilities are also available:

import {
  kmToMile,
  mileToKm,
  yardToMetre,
  metreToYard,
  inchToCm,
  cmToInch,
} from 'geodaisy';

console.log(kmToMile(1)); // > 0.621371
console.log(mileToKm(1)); // > 1.6093444978925633
console.log(yardToMetre(1)); // > 0.9144
console.log(metreToYard(1)); // > 1.0936132983377078
console.log(inchToCm(1)); // > 2.54
console.log(cmToInch(1)); // > 0.39370078740157477

Missing features

The following features I'd love to have in this library but just don't have the time to implement yet. If you'd like to help, feel free to contribute!

  • Bearing calculation
  • Destination point calculation
  • Intersection calculation
  • Path finding
  • Closest point to the poles
  • Rhumb lines
  • Vincenty's formula