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

spatial-queries.mddocs/

Spatial Queries

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

Capabilities

Point in Polygon

Tests whether a point is inside a polygon using ray casting algorithm.

/**
 * Test if point is inside polygon using ray casting algorithm
 * @param point - Point coordinate to test
 * @param polygon - Array of coordinates defining polygon vertices
 * @returns True if point is inside polygon, false otherwise
 */
function isPointInPolygon(
  point: GeolibInputCoordinates, 
  polygon: GeolibInputCoordinates[]
): boolean;

Usage Examples:

import { isPointInPolygon } from "geolib";

// Define a polygon (square area)
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 }
];

// Test if points are inside
const point1 = { latitude: 51.514, longitude: 7.46 };
const point2 = { latitude: 51.510, longitude: 7.46 };

console.log(isPointInPolygon(point1, polygon)); // true (inside)
console.log(isPointInPolygon(point2, polygon)); // false (outside)

// Works with GeoJSON format
const pointGeoJSON = [7.46, 51.514]; // [lng, lat]
console.log(isPointInPolygon(pointGeoJSON, polygon)); // true

Point Within Radius

Tests whether a point is within a specified radius of a center point.

/**
 * Test if point is within specified radius of center point
 * @param point - Point coordinate to test
 * @param center - Center point coordinate
 * @param radius - Radius in meters
 * @returns True if point is within radius, false otherwise
 */
function isPointWithinRadius(
  point: GeolibInputCoordinates, 
  center: GeolibInputCoordinates, 
  radius: number
): boolean;

Usage Examples:

import { isPointWithinRadius } from "geolib";

// Check if locations are within delivery radius
const restaurant = { latitude: 51.515, longitude: 7.453 };
const deliveryRadius = 2000; // 2km in meters

const customer1 = { latitude: 51.520, longitude: 7.460 };
const customer2 = { latitude: 51.530, longitude: 7.480 };

console.log(isPointWithinRadius(customer1, restaurant, deliveryRadius)); // true
console.log(isPointWithinRadius(customer2, restaurant, deliveryRadius)); // false

// Find nearby locations
const locations = [
  { name: "Location A", lat: 51.516, lng: 7.454 },
  { name: "Location B", lat: 51.520, lng: 7.460 },
  { name: "Location C", lat: 51.530, lng: 7.480 }
];

const nearbyLocations = locations.filter(loc => 
  isPointWithinRadius(loc, restaurant, deliveryRadius)
);
console.log(nearbyLocations); // Only locations within 2km

Point on Line

Tests whether a point lies exactly on a line segment.

/**
 * Test if point lies on line segment
 * @param point - Point coordinate to test
 * @param lineStart - Line segment start coordinate
 * @param lineEnd - Line segment end coordinate
 * @returns True if point is on line, false otherwise
 */
function isPointInLine(
  point: GeolibInputCoordinates,
  lineStart: GeolibInputCoordinates, 
  lineEnd: GeolibInputCoordinates
): boolean;

Usage Examples:

import { isPointInLine } from "geolib";

// Test if point is on road segment
const roadStart = { lat: 51.515, lng: 7.453 };
const roadEnd = { lat: 51.517, lng: 7.455 };
const checkPoint = { lat: 51.516, lng: 7.454 }; // Midpoint

console.log(isPointInLine(checkPoint, roadStart, roadEnd)); // true or false

Point Near Line

Tests whether a point is within a specified tolerance distance of a line segment.

/**
 * Test if point is within tolerance distance of line segment
 * @param point - Point coordinate to test
 * @param lineStart - Line segment start coordinate
 * @param lineEnd - Line segment end coordinate
 * @param tolerance - Maximum distance in meters
 * @returns True if point is within tolerance of line, false otherwise
 */
function isPointNearLine(
  point: GeolibInputCoordinates,
  lineStart: GeolibInputCoordinates, 
  lineEnd: GeolibInputCoordinates,
  tolerance: number
): boolean;

Usage Examples:

import { isPointNearLine } from "geolib";

// Check if GPS point is close to planned route
const routeStart = { lat: 51.515, lng: 7.453 };
const routeEnd = { lat: 51.517, lng: 7.455 };
const gpsPosition = { lat: 51.5155, lng: 7.4535 }; // Slightly off route
const tolerance = 50; // 50 meters tolerance

const isOnRoute = isPointNearLine(gpsPosition, routeStart, routeEnd, tolerance);
console.log(isOnRoute); // true if within 50m of route

Find Nearest Point

Finds the closest coordinate from an array to a reference point.

/**
 * Find nearest coordinate from array to reference point
 * @param point - Reference point coordinate
 * @param coords - Array of coordinates to search
 * @returns Nearest coordinate from the array
 */
function findNearest(
  point: GeolibInputCoordinates, 
  coords: GeolibInputCoordinates[]
): GeolibInputCoordinates;

Usage Examples:

import { findNearest } from "geolib";

// Find nearest store location
const customerLocation = { latitude: 51.515, longitude: 7.453 };
const storeLocations = [
  { name: "Store A", lat: 51.516, lng: 7.454 },
  { name: "Store B", lat: 51.520, lng: 7.460 },
  { name: "Store C", lat: 51.510, lng: 7.450 }
];

const nearestStore = findNearest(customerLocation, storeLocations);
console.log(nearestStore); // Store with shortest distance

Order by Distance

Sorts coordinates by distance from a reference point.

/**
 * Sort coordinates by distance from reference point
 * @param point - Reference point coordinate
 * @param coords - Array of coordinates to sort
 * @param distanceFn - Optional custom distance function (default: getDistance)
 * @returns Array of coordinates sorted by distance (nearest first)
 */
function orderByDistance(
  point: GeolibInputCoordinates, 
  coords: GeolibInputCoordinates[],
  distanceFn?: (
    from: GeolibInputCoordinates, 
    to: GeolibInputCoordinates
  ) => number
): GeolibInputCoordinates[];

Usage Examples:

import { orderByDistance, getPreciseDistance } from "geolib";

// Sort restaurants by distance from user
const userLocation = { latitude: 51.515, longitude: 7.453 };
const restaurants = [
  { name: "Restaurant A", lat: 51.520, lng: 7.460 },
  { name: "Restaurant B", lat: 51.510, lng: 7.450 },
  { name: "Restaurant C", lat: 51.516, lng: 7.454 }
];

const sortedRestaurants = orderByDistance(userLocation, restaurants);
console.log(sortedRestaurants); // Sorted by distance, nearest first

// Use high-precision distance function
const preciseSorted = orderByDistance(
  userLocation, 
  restaurants, 
  getPreciseDistance
);