Library to provide basic geospatial operations like distance calculation, conversion of decimal coordinates to sexagesimal and vice versa, etc.
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Functions for converting between different units of distance, area, and speed measurements.
Converts distance measurements from meters to various other units.
/**
* Convert distance from meters to target unit
* @param meters - Distance in meters
* @param targetUnit - Target unit for conversion (default: 'm')
* @returns Converted distance value
* @throws Error if target unit is invalid
*/
function convertDistance(meters: number, targetUnit?: string): number;Supported Units:
m - meters (default)km - kilometerscm - centimetersmm - millimetersmi - milessm - statute milesft - feetin - inchesyd - yardsUsage Examples:
import { convertDistance, getDistance } from "geolib";
// Calculate distance and convert units
const point1 = { latitude: 51.515, longitude: 7.453 };
const point2 = { latitude: 51.520, longitude: 7.460 };
const distanceMeters = getDistance(point1, point2);
console.log(distanceMeters); // e.g., 748 meters
// Convert to different units
const distanceKm = convertDistance(distanceMeters, "km");
console.log(`${distanceKm.toFixed(2)} km`); // 0.75 km
const distanceMiles = convertDistance(distanceMeters, "mi");
console.log(`${distanceMiles.toFixed(2)} miles`); // 0.46 miles
const distanceFeet = convertDistance(distanceMeters, "ft");
console.log(`${distanceFeet.toFixed(0)} feet`); // 2454 feet
// Batch conversion for route planning
const routeDistances = [1500, 2300, 800]; // meters
const routeInKm = routeDistances.map(d => convertDistance(d, "km"));
console.log(routeInKm); // [1.5, 2.3, 0.8] kmConverts area measurements from square meters to various other units.
/**
* Convert area from square meters to target unit
* @param squareMeters - Area in square meters
* @param targetUnit - Target unit for conversion (default: 'm' - causes error, use 'm2')
* @returns Converted area value
* @throws Error if target unit is invalid
*/
function convertArea(squareMeters: number, targetUnit?: string): number;Supported Units:
m2 or sqm - square meters (use these instead of default)km2 or sqkm - square kilometersha - hectaresa - aresft2 or sqft - square feetyd2 or sqyd - square yardsin2 or sqin - square inchesUsage Examples:
import { convertArea, getAreaOfPolygon } from "geolib";
// Calculate polygon area and convert units
const polygon = [
{ lat: 51.515, lng: 7.453 },
{ lat: 51.516, lng: 7.453 },
{ lat: 51.516, lng: 7.455 },
{ lat: 51.515, lng: 7.455 },
{ lat: 51.515, lng: 7.453 }
];
const areaM2 = getAreaOfPolygon(polygon);
console.log(areaM2); // e.g., 15000 square meters
// Convert to different units
const areaHa = convertArea(areaM2, "ha");
console.log(`${areaHa.toFixed(2)} hectares`); // 1.50 hectares
const areaKm2 = convertArea(areaM2, "km2");
console.log(`${areaKm2.toFixed(4)} km²`); // 0.0150 km²
const areaFt2 = convertArea(areaM2, "ft2");
console.log(`${areaFt2.toFixed(0)} ft²`); // 161459 ft²
// Property size calculations
const propertyArea = 2500; // square meters
const propertyInAcres = convertArea(propertyArea, "a");
console.log(`Property: ${propertyInAcres} ares`);Converts speed measurements from meters per second to various other units.
/**
* Convert speed from meters per second to target unit
* @param metersPerSecond - Speed in meters per second
* @param targetUnit - Target unit for conversion (default: 'kmh')
* @returns Converted speed value
*/
function convertSpeed(
metersPerSecond: number,
targetUnit?: string
): number;Supported Units:
kmh - kilometers per hour (default)mph - miles per hourUsage Examples:
import { convertSpeed, getSpeed } from "geolib";
// Calculate speed between GPS points
const start = {
latitude: 51.515,
longitude: 7.453,
time: 1640995200000 // Unix timestamp
};
const end = {
latitude: 51.520,
longitude: 7.460,
time: 1640995260000 // 60 seconds later
};
const speedMps = getSpeed(start, end);
console.log(speedMps); // e.g., 12.5 m/s
// Convert to different units
const speedKmh = convertSpeed(speedMps, "kmh");
console.log(`${speedKmh.toFixed(1)} km/h`); // 45.0 km/h
const speedMph = convertSpeed(speedMps, "mph");
console.log(`${speedMph.toFixed(1)} mph`); // 28.0 mph
// Vehicle speed monitoring
const measurements = [
{ speed: 8.3, time: "08:00" }, // m/s
{ speed: 12.5, time: "08:05" },
{ speed: 16.7, time: "08:10" }
];
measurements.forEach(m => {
const kmh = convertSpeed(m.speed, "kmh");
const mph = convertSpeed(m.speed, "mph");
console.log(`${m.time}: ${kmh.toFixed(1)} km/h (${mph.toFixed(1)} mph)`);
});Access to the underlying conversion factors for custom calculations.
// Distance conversion factors (multiply meters by factor)
const distanceConversion: {
m: number; // 1
km: number; // 0.001
cm: number; // 100
mm: number; // 1000
mi: number; // 1 / 1609.344
sm: number; // 1 / 1852.216
ft: number; // 100 / 30.48
in: number; // 100 / 2.54
yd: number; // 1 / 0.9144
};
// Area conversion factors (multiply square meters by factor)
const areaConversion: {
m2: number; // 1
sqm: number; // 1 (alias)
km2: number; // 0.000001
sqkm: number; // 0.000001 (alias)
ha: number; // 0.0001
a: number; // 0.01
ft2: number; // 10.763911
sqft: number; // 10.763911 (alias)
yd2: number; // 1.19599
sqyd: number; // 1.19599 (alias)
in2: number; // 1550.0031
sqin: number; // 1550.0031 (alias)
};
// Time conversion factors (seconds to target unit)
const timeConversion: {
m: number; // 60 (minutes)
h: number; // 3600 (hours)
d: number; // 86400 (days)
};Usage Examples:
import { distanceConversion, areaConversion } from "geolib";
// Custom conversion using constants
function customDistanceConvert(meters: number, unit: string): number {
const factor = distanceConversion[unit];
if (!factor) throw new Error(`Unknown unit: ${unit}`);
return meters * factor;
}
// Batch conversions
const distances = [100, 500, 1000]; // meters
const unitsToConvert = ['km', 'mi', 'ft'];
unitsToConvert.forEach(unit => {
console.log(`${unit}:`, distances.map(d => d * distanceConversion[unit]));
});