@sailboat-computer/data-storage
Version:
Shared data storage library for sailboat computer v3
88 lines (87 loc) • 2.47 kB
TypeScript
/**
* Geospatial downsampling strategy implementation
*/
import { Downsampler, StoredData, GeospatialStrategy } from '../../types';
/**
* Geospatial downsampler implementation
*/
export declare class GeospatialDownsampler implements Downsampler {
readonly type = "geospatial";
/**
* Downsample data using geospatial strategy
*
* @param data - Data to downsample
* @param strategy - Geospatial strategy
* @returns Downsampled data
*/
downsample(data: StoredData[], strategy: GeospatialStrategy): Promise<StoredData[]>;
/**
* Extract points from data
*
* @param data - Data to extract points from
* @returns Extracted points
*/
private extractPoints;
/**
* Extract coordinate from data
*
* @param item - Data item
* @param primaryKey - Primary key to look for
* @param alternateKeys - Alternate keys to look for
* @returns Coordinate value or null if not found
*/
private extractCoordinate;
/**
* Calculate perpendicular distance from point to line
*
* @param point - Point
* @param lineStart - Line start point
* @param lineEnd - Line end point
* @returns Perpendicular distance
*/
private perpendicularDistance;
/**
* Douglas-Peucker algorithm for path simplification
*
* @param points - Points to simplify
* @param epsilon - Simplification tolerance
* @returns Simplified points
*/
private douglasPeucker;
/**
* Preserve direction changes
*
* @param originalPoints - Original points
* @param simplifiedPoints - Simplified points
* @param minAngleChange - Minimum angle change to preserve
*/
private preserveDirectionChanges;
/**
* Calculate bearing between two points
*
* @param point1 - First point
* @param point2 - Second point
* @returns Bearing in degrees
*/
private calculateBearing;
/**
* Preserve key points
*
* @param originalPoints - Original points
* @param simplifiedPoints - Simplified points
*/
private preserveKeyPoints;
/**
* Check if data is a key point
*
* @param data - Data to check
* @returns Whether data is a key point
*/
private isKeyPoint;
}
/**
* Create a new geospatial downsampler
*
* @returns Geospatial downsampler
*/
export declare function createGeospatialDownsampler(): Downsampler;