or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

coordinate-conversions.mddistance-calculations.mdgeometric-operations.mdindex.mdnavigation-bearings.mdspatial-queries.mdunit-conversions.mdvalidation-utilities.md
tile.json

index.mddocs/

Geolib

Geolib is a comprehensive TypeScript library that provides geospatial operations for Node.js and browser environments. It offers 39 functions covering distance calculations, coordinate conversions, geometric operations, spatial queries, and navigation utilities with support for multiple coordinate formats and high precision calculations.

Package Information

  • Package Name: geolib
  • Package Type: npm
  • Language: TypeScript
  • Installation: npm install geolib

Core Imports

import { 
  getDistance, 
  getPreciseDistance, 
  getCenter, 
  getBounds, 
  isPointInPolygon,
  convertDistance,
  computeDestinationPoint
} from "geolib";

For CommonJS:

const { 
  getDistance, 
  getPreciseDistance, 
  getCenter, 
  getBounds, 
  isPointInPolygon,
  convertDistance,
  computeDestinationPoint
} = require("geolib");

Basic Usage

import { getDistance, getCenter, isPointInPolygon } from "geolib";

// Calculate distance between two points
const distance = getDistance(
  { latitude: 51.5103, longitude: 7.49347 },
  { latitude: 51.514, longitude: 7.4138 }
);
console.log(distance); // Distance in meters

// Find center of multiple points
const center = getCenter([
  { latitude: 52.516272, longitude: 13.377722 },
  { latitude: 51.515, longitude: 7.453619 },
  { latitude: 51.503, longitude: -0.119 }
]);
console.log(center); // { longitude: 6.904114, latitude: 51.678095 }

// Check if point is inside polygon
const polygon = [
  { latitude: 51.513357, longitude: 7.45574 },
  { latitude: 51.515400, longitude: 7.45574 },
  { latitude: 51.515504, longitude: 7.47150 },
  { latitude: 51.513357, longitude: 7.47150 }
];
const isInside = isPointInPolygon(
  { latitude: 51.514, longitude: 7.46 }, 
  polygon
);
console.log(isInside); // true or false

Architecture

Geolib is built around several key concepts:

  • Flexible Input: Accepts coordinates as objects ({lat, lng}) or GeoJSON arrays ([lng, lat])
  • Pure Functions: All functions are stateless and side-effect free
  • Multiple Algorithms: Both simple spherical and high-precision geodetic calculations
  • Unit Conversions: Built-in support for various distance, area, and speed units
  • Type Safety: Full TypeScript support with comprehensive type definitions
  • Zero Dependencies: Self-contained with no external runtime dependencies

Core Types

// Coordinate input types
type GeolibInputCoordinates = 
  | { lat: number; lng: number; }
  | { latitude: number; longitude: number; }
  | { lat: number; lon: number; }
  | [number, number]  // [lng, lat] GeoJSON format
  | [number, number, number]; // [lng, lat, alt]

// Bounding box type
interface GeolibBounds {
  maxLat: number;
  minLat: number;
  maxLng: number;
  minLng: number;
}

// Coordinates with timestamp for speed calculations
interface GeolibInputCoordinatesWithTime extends GeolibInputCoordinates {
  time: number; // Unix timestamp
}

Capabilities

Distance Calculations

Core distance measurement functions using various algorithms from simple spherical to high-precision geodetic calculations.

function getDistance(
  from: GeolibInputCoordinates, 
  to: GeolibInputCoordinates, 
  accuracy?: number
): number;

function getPreciseDistance(
  start: GeolibInputCoordinates, 
  end: GeolibInputCoordinates, 
  accuracy?: number
): number;

Distance Calculations

Coordinate Conversions

Functions for converting between different coordinate formats, including decimal to sexagesimal conversion and coordinate extraction utilities.

function decimalToSexagesimal(decimal: number, format?: string): string;
function sexagesimalToDecimal(sexagesimal: string): number;
function toDecimal(value: any): any;

Coordinate Conversions

Geometric Operations

Functions for calculating centers, bounds, areas, and other geometric properties of coordinate sets.

function getCenter(points: GeolibInputCoordinates[]): 
  { longitude: number; latitude: number } | false;

function getBounds(points: GeolibInputCoordinates[]): GeolibBounds;

function getAreaOfPolygon(points: GeolibInputCoordinates[]): number;

Geometric Operations

Spatial Queries

Functions for testing spatial relationships between points, lines, and polygons.

function isPointInPolygon(
  point: GeolibInputCoordinates, 
  polygon: GeolibInputCoordinates[]
): boolean;

function isPointWithinRadius(
  point: GeolibInputCoordinates, 
  center: GeolibInputCoordinates, 
  radius: number
): boolean;

Spatial Queries

Navigation and Bearings

Functions for calculating bearings, compass directions, and computing destination points from start points, distances, and bearings.

function getGreatCircleBearing(
  origin: GeolibInputCoordinates, 
  dest: GeolibInputCoordinates
): number;

function computeDestinationPoint(
  start: GeolibInputCoordinates, 
  distance: number, 
  bearing: number, 
  radius?: number
): { latitude: number; longitude: number };

Navigation and Bearings

Unit Conversions

Functions for converting between different units of distance, area, and speed measurements.

function convertDistance(meters: number, targetUnit?: string): number;
function convertArea(squareMeters: number, targetUnit?: string): number;
function convertSpeed(
  metersPerSecond: number, 
  targetUnit?: string
): number;

Unit Conversions

Validation and Utilities

Functions for validating coordinates, calculating speeds, and other utility operations.

function isValidCoordinate(point: GeolibInputCoordinates): boolean;
function getSpeed(
  start: GeolibInputCoordinatesWithTime, 
  end: GeolibInputCoordinatesWithTime, 
  distanceFn?: Function
): number;

Validation and Utilities

Constants

// Earth radius in meters
const earthRadius: number; // 6378137

// Coordinate bounds
const MINLAT: number; // -90
const MAXLAT: number; // 90
const MINLON: number; // -180
const MAXLON: number; // 180

// Coordinate key arrays for flexible property name lookup
const longitudeKeys: LongitudeKeys[]; // ['lng', 'lon', 'longitude', 0]
const latitudeKeys: LatitudeKeys[]; // ['lat', 'latitude', 1]
const altitudeKeys: AltitudeKeys[]; // ['alt', 'altitude', 'elevation', 'elev', 2]

// Unit conversion factors
const distanceConversion: { [unit: string]: number };
const areaConversion: { [unit: string]: number };
const timeConversion: { [unit: string]: number };

// Sexagesimal pattern for coordinate parsing
const sexagesimalPattern: RegExp;