UNPKG

@sailboat-computer/data-storage

Version:

Shared data storage library for sailboat computer v3

88 lines (87 loc) 2.47 kB
/** * 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;